ヘッダーをスキップ
Oracle® Fusion Middleware WebCenter Sites開発者ガイド
11gリリース1 (11.1.1.8.0)
E49681-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

41 メモリー中心の訪問者追跡

Engageアセットを閲覧するサイト訪問者は通常、個人プロファイルを使用して自身の情報を提供します。また、訪問者が閲覧することで統計情報が収集されます。大量の訪問者データによるWebCenter Sitesデータベースの過負荷を防ぎ、さらにパフォーマンスを改善するため、メモリー中心の訪問者追跡がEngageアセット用に開発されました。

この章では、メモリー中心の訪問者追跡について説明するほか、このメソッドの実装に必要な条件を概説します。

この章には次の項が含まれます。

41.1 メモリー中心の訪問者追跡の概要

多数の訪問者がWebサイトを閲覧する場合、単一リポジトリにすべての個人情報を格納すると配信システムのパフォーマンスが低下します。そのため、訪問者の統計情報を収集するサイトでは、多くの場合、サイトのパフォーマンスを改善するためにリポジトリの追加が必要になります。さらにパフォーマンスを向上させるには、WebCenter Sitesデータベースでロードを行わないようにします。

WebCenter Sitesによりアドオン・リポジトリがサポートされるため、Engage開発者が独自のリポジトリを実装して訪問者のスカラー属性値を格納できます。そのリポジトリで訪問者情報を格納および取得するには、カスタム・コードを記述する必要があります。さらに、WebCenter Sitesでメモリー中心の訪問者追跡メソッドを有効化する必要があります。この概要では、メモリー中心のメソッドとデータベース中心のメソッドの違いについて説明します。メモリー中心の追跡の有効化に関する情報は、この章の後半に記載している、メモリー中心の訪問者追跡機能について説明した図を参照してください。

この項の内容は、次のとおりです。

41.1.1 データベース中心のモデル

データベース中心の訪問者追跡では、次の理由により、Engage対応のWebサイト上でパフォーマンスの問題が発生します。

  • WebCenter Sitesデータベースにすべての訪問者情報が格納されます。情報を格納および取得するには、複数のデータベース・アクセスが必要になります。

  • 動的な推奨が使用されて大量のデータが返される場合、WebCenter Sitesに大量のSystemItemCacheエントリが記録されるためパフォーマンスが低下します。パフォーマンスをリストアするため、WebCenter Sitesデータベースに記録される依存性の数を制限する方法としてrender:overridedepsタグが導入されました。このタグは、データベース中心のモデルとメモリー中心のモデルの両方に適用されます。

41.1.2 メモリー中心のモデル

メモリー中心の追跡では、WebCenter Sitesデータベースの負荷を減らすことによってシステム・パフォーマンスを改善します。

  • すべての計算はメモリー内で実行されます。

    • カスタム・コードによりアドオン・リポジトリから訪問者のスカラー属性値(年齢、性別など)が取得されると、メモリー中心のモデルでは、取得された値がメモリー内に格納され、その値を履歴属性値とともに使用することで訪問者が所属するセグメントが計算されます。

    • メモリー中心の追跡では、メモリー内で様々な履歴属性値に関する統計が計算され、その統計がキャッシュされます。統計には、合計、数、最も古い値および最新の値が含まれます。

  • 別名および履歴属性値はWebCenter Sitesデータベースに格納されますが、それによって訪問者情報の量およびその情報にアクセスするためのコール数がともに少なくなります。

データベース中心の追跡と同様に、開発者は、render:overridedepsタグを使用して、WebCenter SitesデータベースにログインするためのEngageアセットの依存性の数およびタイプを指定できます。メモリー中心の追跡を有効化するには、visitor.iniのプロパティを設定して、サポート・テンプレート・コードを記述する必要があります。

41.2 メモリー中心の訪問者追跡の有効化

この項の内容は、次のとおりです。

41.2.1 訪問者追跡のプロパティ

メモリー中心の訪問者追跡は、vis.useSessionVisitorConnectionプロパティで有効化します。このプロパティは、配信システム上で、WebCenter Sitesのvisitor.iniファイルに手動で追加する必要があります。

  • vis.useSessionVisitorConnection=trueを設定すると、メモリー中心の訪問者追跡が有効になります。また、Engage訪問者を適切に追跡するには、サポート・テンプレート・コードが配信システム上に存在する必要があり、その際には既存のコードを再利用できます。詳細は、第41.2.2項「サポート・コード」を参照してください。

  • vis.useSessionVisitorConnection=falseを設定したり、空白のままにしたり、それをvisitor.iniから省略すると、データベース中心のメソッドが有効になります。


    注意:

    すべてのコンテンツ管理システムで、vis.useSessionVisitorConnectionfalseに設定するか、省略する必要があります。それによって、訪問者属性を作成するか、それ以外では管理できるデータベース中心のメソッドを有効化します。(訪問者属性の管理は、データベース中心のトラッキングが有効なコンテンツ管理システムでのみサポートされます。配信システムではサポートされません。訪問者属性を配信システムに公開する必要があります。)


41.2.2 サポート・コード

この項のスケルトン・テンプレートでは、メモリー中心の追跡をサポートするために記述する必要のあるコードのタイプを示しています。


注意:

テンプレート・コードの実行方法は、vis.useSessionVisitorConnectionプロパティの値によって異なります。値がfalseに設定されている場合は、データベース中心の訪問者追跡が使用されます。値がtrueに設定されている場合は、メモリー中心の追跡が有効化されます。


vdm:setalias
retrieve visitor scalar attributes from add-on repository
vdm:setscalar
commercecontext:calculatesegments
commercecontext:getrecommendations
render Engage assets
vdm:recordhistory
...
render:overridedeps

このテンプレートの詳細は、第41.3項「メモリー中心の訪問者追跡の機能」を参照してください。

41.2.3 バッチを使用したデータベースへの履歴属性の保存

WebCenter Sites 7.5パッチ2では、履歴属性はまずメモリーに保存され、次にファイル・システム、そして最後はバッチとしてWebCenter Sitesデータベースに保存されます。バッチを使用した保存によってメモリーの過度な使用を回避できます(メモリーの過度な使用は、データベースへの保存速度よりも早くデータが生成される場合に発生します)。バッチによる保存プロセスでは、ファイルから一度に1つずつHistoryAttributeDef表をバッチ化し、まとめてデータベースに保存します。

バッチを使用してデータベースに保存するには、Engageからデータベース情報にアクセスできる必要があります。データベース・アクセスを有効化するには、<dataSourceName>.propertiesという名前のファイルをクラスパスに追加して、driverurluserおよびpasswordの情報を指定します。たとえば、データソース名がcsDataSourceの場合は、csDataSource.propertiesという名前のファイルをクラスパスに配置します。この例では、ファイル内のプロパティを次のように設定します。

driver=com.jnetdirect.jsql.JSQLDriver
url=jdbc:JSQLConnect://localhost:1433/database=TomcatDB
user=tomcatuser
password=tomcatuser 

ファイル・システムを使用してメモリーからWebCenter Sitesデータベースにバッチで保存される非同期の履歴属性に対しては、スレッドを生成する時間間隔を制御する次のJava JVMパラメータが追加されています。

-Dvisitor.SyncInterval=<seconds>

指定しない場合、パラメータの値はデフォルトの30秒に設定されます。

41.3 メモリー中心の訪問者追跡の機能

この章の残りの部分の図は、メモリー中心の追跡の機能を示しています。


注意:

次の図のアドオン・リポジトリは独自に選択可能なシステムであり、訪問者のスカラー属性値を格納および取得するために使用されます。値を格納および取得するにはカスタム・コードを記述する必要があります。


この項の内容は、次のとおりです。

41.3.1 訪問者の検出

サイトへの初回ログイン時、訪問者は個人プロファイルを作成します。次のイベントが発生します。

  1. テンプレート・コード内のvdm:setaliasタグを使用して、訪問者の別名がWebCenter Sitesデータベースに記録されます。後続のセッションでは、訪問者が自動的に認識されます。その結果、データベースには訪問者に一意の単一IDのみが保持され、パフォーマンスが向上します。

    メモリー中心の訪問者追跡では訪問者ごとに一意のIDが記録される一方、既存のデータベース中心のメソッドでは訪問ごとに一意のID(再度訪問する訪問者に対しても)が記録されます。必要のないIDによってデータベースに余分な負荷がかかり、パフォーマンスが低下します。

  2. 訪問者のスカラー値(年齢、性別などの個人情報)がアドオン・リポジトリに(カスタム・コードごとに)格納されます。

残りの手順では、訪問者のセグメントを決定し、訪問者に表示するEngageアセットを決定するために必要な情報がWebCenter Sitesによって収集および計算されます。

図41-1 訪問者の検出のフロー

図41-1の説明が続きます
「図41-1 訪問者の検出のフロー」の説明

41.3.2 スカラー値の取得

WebCenter Sitesで訪問者のセグメントの計算が開始されます。次のスカラー値で開始されます。

  1. WebCenter Sitesによってアドオン・リポジトリから(カスタム・コードを使用して)スカラー値が取得されます。

  2. WebCenter Sitesでは、vdm:setscalarタグを使用して、取得したスカラー値がメモリーに設定されます。

    セッション・ベースの実装により、訪問者情報(スカラー値)はhttpセッションにのみ格納されます。したがって、新しいセッションが始まると、訪問者情報はWebCenter Sitesデータベースではなくアドオン・リポジトリを介して使用可能になります。訪問者のスカラー値の問合せパフォーマンスを最適化するために、新しいレベルのキャッシュが追加されています。

    図41-2 スカラー値の取得のフロー

    図41-2の説明が続きます
    「図41-2 スカラー値の取得のフロー」の説明

41.3.3 履歴属性値の収集

訪問者のセグメントの計算には履歴属性値も必要になります。セッション中、履歴属性値が周期的に収集されます。

  1. 履歴属性値を1分間隔でメモリーに収集するには、vdm:recordhistoryタグを使用します。

  2. 履歴属性値は、ファイル・システムに格納された後、数回に分けてバッチでWebCenter Sitesデータベースに書き込まれます。メモリーが消去され、再度このサイクルが開始されます。

    訪問者の履歴属性値を最初にメモリーに収集することによって、コールごとにデータベース接続を取得する必要がなくなります。これらをファイル・システムに格納し、バッチによるデータベースへの保存を可能にすることで、メモリーおよびデータベース接続の使用が最小化され、履歴属性値の可用性が高まります。

履歴属性値がデータベースにコミットされると、第41.3.4項「合計および数の計算」に示すように、合計と数の計算が始まります。

図41-3 履歴属性値のフロー

図41-3の説明が続きます
「図41-3 履歴属性値のフロー」の説明

41.3.4 合計および数の計算

履歴属性値の最初のセットが収集され、データベースに書き込まれると、WebCenter Sitesでは次が実行されます。

  1. 1分間隔でデータベースを読み込み、合計と数を計算して、その結果をメモリーに格納します。

合計および数のキャッシュによってデータベース問合せが著しく減少するとともに、1分間隔にすることで1分以内の正確な合計と数が計算されます。

図41-4 合計および数の計算のフロー

図41-4の説明が続きます
「図41-4 合計および数の計算のフロー」の説明

41.3.5 セグメントの計算

この時点で、WebCenter Sitesには訪問者のセグメントを計算するのに十分な情報が保持されています。WebCenter Sitesは、commercecontext:calculatesegmentsタグを使用して次を実行します。

  1. メモリー内の訪問者のスカラー値をセグメント・ルール内のものと比較します。

  2. データベース内の履歴属性値をセグメント・ルール内のものと比較します。

  3. メモリー内の合計と数をセグメント・ルール内の合計または数と比較します。

この比較によって、WebCenter Sitesでは訪問者のセグメントが決定されます。

図41-5 セグメントの計算のフロー

図41-5の説明が続きます
「図41-5 セグメントの計算のフロー」の説明

41.3.6 推奨されるアセットの決定および表示

訪問者のセグメントを決定した後、WebCenter Sitesでは、commercecontext:getrecommendationsタグを使用して訪問者に最も関心のあるEngageアセットが決定されます。Engageアセットのテンプレートによって、推奨されるアセットが訪問者に表示されます。

さらにパフォーマンスを向上するには、render:overridedepsタグを第41.3.7項「依存性の記録」で説明するように使用します。

図41-6 推奨されるアセットの表示のフロー

図41-6の説明が続きます
「図41-6 推奨されるアセットの表示のフロー」の説明

41.3.7 依存性の記録

render:overridedepsタグを使用して、記録されるSystemItemCacheエントリの数を減らします。ページに記録された既存の依存性をすべて削除して、render:overridedepsタグにより指定された依存性を記録するには、テンプレート(またはCSElement)の最後、</cs:ftcs>タグの直前にこのタグを挿入する必要があります。使用可能な依存性を次に示します。

  • 不明な依存性

  • 固有の単一アセットにおける依存性

  • 固有のアセット・タイプの不明な依存性

render:overridedepsタグは、次のパラメータを使用します。

  • cid: タイプcのアセットのID。cと組み合せるとアセットのように機能し、cおよびcidによって決定されたアセットに対する依存性を記録します。

  • c: アセットのタイプ。

  • deptype: 依存性のタイプ。

使用するパラメータとその設定方法によって、記録される依存性が決定されます。

  • deptypeのみがunknowndepsに指定および設定されている場合は、render:overridedepsによって不明な依存性が記録されます。

  • cおよびcidの両方が指定されると、render:overridedepsによって、cおよびcidが指定するアセット上の依存性が記録されます。

  • cおよびdeptype='unknowndeps'の両方が指定されると、render:overridedepsによって、cが指定するアセット・タイプ上の不明な依存性が記録されます。


    注意:

    render:overridedepsは十分注意して使用してください。ページ・キャッシュをフラッシュする唯一の方法は、依存性が記録されているアセットを編集することです。たとえば、単一アセット(またはアセット・タイプ)の依存性を記録している場合は、依存性が記録されているアセットを編集することでキャッシュをフラッシュできます。ユーザーは、編集が必要なアセットを把握しておく必要があります。