1. セッション状態

チュートリアル : SQLを使用した共有セッション状態データベースの構成

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

共有セッション状態では、複数のセッション間で共有できるすべてのデータ (連絡先やデバイスに関連するデータなど) が収集され、セッション状態データベースに保存されます。

連絡先はWebサイトへの複数の並行訪問を行うことができ、その場合、各訪問には独自のプライベートセッション状態があります。ただし、デバイスや連絡先に関連する情報など、一部のデータは訪問間で共有できます。

同じ連絡先による並列訪問間で共有される情報は、共有セッション状態ストアに格納されます。このデータは引き続き連絡先に対して非公開ですが、同じ連絡先によって行われた現在のすべてのセッションからアクセスできます。

メモ

xDB Cloud Editionを使用している場合、MongoDBの共有セッション ステート プロバイダーの使用は、このサービスの一部として含まれていません。

このチュートリアルでは、次のタスクを実行して、Sitecore ASP.NET Session State Provider for SQL Serverを使用して、SQL Serverデータベースを共有セッション状態ストアとして使用する方法について説明します。

  • SQL Serverセッション データベースをデプロイする

  • Sitecoreの設定

  • 共有セッションの状態設定を調整する

SQL Serverセッション データベースをデプロイする

SQL ServerのSitecore ASP.NETセッション状態プロバイダーを使用すると、SQL Serverをセッション状態ストアとして使用できます。このプロバイダーは、xDBがWebサイトへのアクセスを追跡するために必要なSessionEndイベントをサポートします。

手記

共有セッション状態情報とプライベート・セッション状態情報を同じデータベースに格納できます。データベースは、セッションのタイプを区別できます。

SQL Serverセッション・データベースをデプロイするには、次のようにします。

  1. Microsoft SQL Server Management Studio 2012以降を起動します。

    大事な

    SQL Server 2008を使用している場合は、Sessionデータベースを配置する前にMicrosoft SQL Server Management Studio Expressをダウンロードする必要があります。

  2. セッション・データベースをインストールするサーバー・ノードに接続します。

  3. サーバ ノードを展開し、Databasesを右クリックして、Attachをクリックします。

  4. Attach Databasesダイアログボックスで、「Add」をクリックします。

  5. WebサイトのルートフォルダのDatabasesフォルダに移動し、Sitecore.Sessions.mdfデータベースを選択して、OKをクリックします。

  6. Attach Databasesダイアログボックスで、「OK」をクリックします。セッション・データベースがアタッチされたデータベースのリストに表示されます。

  7. 次の接続文字列をConnectionStrings.configファイルに追加します。

    <add name="sharedSession" connectionString="user
            id=_sql_server_user_;password=_user_password_;Data
            Source=_sqlserver_;Database = _sharedSession_database_name_"/>

SQL Serverのパフォーマンスの最適化

Webリクエストごとに、Sitecoreはsessionstateストア データベースに複数回アクセスします。これは、Webサイトのパフォーマンスに大きな影響を与える可能性があります。したがって、Microsoft SQL Serverがセッション状態データベースをメモリに保持できるように、十分なRAMをインストールすることをお勧めします。また、データベースファイルをSSDドライブに配置することもお勧めします。

最適なパフォーマンスを実現するために、Sessionsデータベースに拡張機能をインストールできます。

パフォーマンス拡張機能をインストールするには:

  1. Microsoft SQL Server Management Studioで、Sessions db performance boost.sqlファイルを開きます。このファイルは、Sitecoreインストールの \Databases\Scriptsフォルダーに保存されます。

  2. Sessions db performance boost.sqlファイルの最初の行で、USE Sitecore_Sessionをセッション データベースの名前に置き換えます。

  3. セッション・データベースを指すようにUSE文を更新したら、F5キーを押してファイルを実行します。

手記

これらのパフォーマンスの向上により、セッション状態ストアがSQL Server tempDBデータベースに移動されます。これは、Microsoftが推奨する標準的な方法です。すべてのユーザーはtempDBにアクセスできる必要があります。ただし、SQL Serverが再起動されるたびに、tempDBが再作成され、アクセス権がリセットされます。ユーザーが常にtempDBにアクセスできるようにする方法については、このサポート技術情報の記事を参照してください。詳細については、MSDNの「セッション状態モード 」を参照してください。

手記

Sessions db performance boost.sqlファイルとMicrosoft TempDBシステム データベースを使用してAzure SQL Databaseサービスのパフォーマンスを最適化することは、テストされていないため、お勧めしませんし、サポートもしていません。

Sitecoreの設定

手記

設定ファイルを直接変更しないでください。代わりに、実行時に必要な変更を実行する パッチ ファイル を作成する必要があります。

デフォルトの共有セッションストアは、データをメモリに格納し、内部ASP.NETクラスInProcSessionStateStoreに実装されるインプロセスプロバイダーを使用します。

<sharedSessionState defaultProvider="inProc">
    <providers>
    <clear/>
    <add name="inProc"
      type="System.Web.SessionState.InProcSessionStateStore"
      />
    </providers>

代わりにSQL Serverの共有セッション状態プロバイダーを使用するようにSitecoreを設定するには:

  1. Webサイトのルート フォルダーで、Website\App_Config\Includeフォルダーに移動します。

  2. Sitecore.Analytics.Tracking.Configファイルを開きます。

  3. デフォルトの共有セッション状態プロバイダを定義できる行を、sitecore/tracking/sharedSessionStateのパスで見つけます。

  4. defaultProviderをinProcからmssqlに変更します。また、name属性値をmssqlに変更します。

    <sharedSessionState defaultProvider="mssql">
        <providers>
            <clear/>
            <add name="mssql"
                type="Sitecore.SessionProvider.Sql.SqlSessionStateProvider,Sitecore.SessionProvider.Sql"
                connectionStringName="sharedsession"
                pollingInterval="2"
                compression="true"
                sessionType="shared"/>
        </providers>
    </sharedSessionState>

共有セッションの状態設定を調整する

Sitecore.Analytics.Tracking.Configファイルには、パッチ・ファイルを使用して変更できる次のセッション・ステート設定が含まれています。

設定

形容

connectionStringName

Sitecoreがセッション データベースへの接続に使用する接続文字列が含まれます。

編集して、使用するセッション状態データベースを指定します。xDBでは、このデータベースはセッションと呼ばれます。

connectionStringName="session"
pollingInterval

セッション状態プロバイダーがセッションの有効期限が切れているかどうかを確認するために使用する時間間隔を秒単位で指定します。

pollingInterval="2"
compression

セッション状態データを圧縮することを示します。

デフォルト値はtrueです。セッション状態データを圧縮すると、データベースとSitecoreインスタンス間で転送する必要があるデータの量が減ります。これにより、追加のCPUオーバーヘッドが発生する可能性があります。

compression="true"
sessionType

セッション・ステートのタイプがprivatesharedかを示します。

sessionType="shared"
この記事を改善するための提案がある場合は、 お知らせください!