xDBコレクションデータベースシャードの分割またはマージ
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecore 9.3以降では、Microsoftの分割/マージサービスを使ってシャード間でデータを再分配できます。
制限
Sitecore 9.3における分割/マージサービスには以下の制限があります:
- SQL Azureとしか使えません。
- Always Encryptedと併用することはできません。分割またはマージ操作を実行する前に、必ずデータを復号化してください。
- xDBコレクションデータベースのShardKeyフィールドには値が必要です。Sitecore 9.3以前に収集されたデータを更新するには、xDBコレクション更新ツールを使わなければなりません。
シャードを分割する
分割操作は、指定されたシャードキー範囲を持つレコードをシャードAからシャードBへ移動させます。分割操作:
-
一度に一つのシャードしか分割できません。
-
一度に分割できるシャードマップは1つだけです。シャードマップは3つあります:
-
DeviceProfileIdShardMap
-
ContactIdShardMap
-
ContactIdentifiersIndexShardMap
!注すべてのシャードマップを分割する必要はありません。分割するだけContactIdShardMap選択できます。
-
3つのシャード(すべてのシャードマップを含む)を分割するには、12の操作を行う必要があります
、各シャードを3回分割します。これは各シャードマップごとに1回ずつです。分割操作を実行するには:
-
Azureの分割/統合サービスを展開してください。分割/統合サービスには、2つのウェブアプリ、ストレージアカウント、そしてデータベース(Sitecoreの役割とは無関係)が含まれます。
シャードを分割または統合する際の自己署名証明書作成に関する情報は、ナレッジベースを参照してください。
-
データの損失や破損を防ぐためにxConnectを無効にしてください。xConnectを無効にするには:
- Content DeliveryとContent Managementの役割をCMS専用モードに切り替えましょう。
- xConnectに書き込みをするすべてのウェブアプリを停止してください。
- xConnect CollectionおよびxConnect Collection Searchサービスのウェブアプリを停止してください。
-
xConnectのウェブアプリケーションのKuduサービスURLにアクセスしてください。例えば: https://mysite.scm.azurewebsites.net/
-
SQL Sharding Deployment Toolが入っているフォルダに移動してください:
\App_Data\collectiondeployment !注以下のSQLシャーディングデプロイメントツールのスクリプトのいずれかがKuduで動作しない場合は、ローカルでフォルダ全体をダウンロードし、管理者 権限でローカルのPowershellからSQLシャーディングデプロイメントツールのスクリプトを実行してください。Azureファイアウォールが、フォルダをダウンロードされたクライアントからAzure SQLインスタンスへのアクセスを許可するように正しく設定されているか、スクリプトを実行する場所から確認してください。
-
SQLユーザーをSAユーザー と同等に設定し、すべてのシャーディングデプロイメントツールスクリプトに対して完全なAdministrator権限を持つSQL。
-
SQL Sharding Deployment Toolを使って、空のシャードをシャードクラスタに追加します。例えば:
.\Sitecore.Xdb.Collection.Database.SqlShardingDeploymentTool.exe /operation “addShard” /connectionstring "user id=sa;password=12345;data source=(server);" /shardMapManagerDatabaseName "Sitecore.Xdb.Collection.Database.Sql.ShardMapManagerDb" /shardConnectionString "user id=sa;password=12345;data source=.\SQL2017;" /shardnameprefix "Sitecore.Xdb.Collection.Database.Sql" /shardnamesuffix "-db" /dacpac ".\Sitecore.Xdb.Collection.Database.Sql.dacpac"
-
作成されたシャード内で以下のSQLスクリプトを使ってxcsmmuserユーザーとその権限を追加します。
DROP USER IF EXISTS xcsmmuser GO CREATE USER xcsmmuser WITH PASSWORD = 'PasswordHere'; GO EXEC sp_addrolemember 'db_datareader',xcsmmuser; EXEC sp_addrolemember 'db_datawriter',xcsmmuser; GO GRANT EXECUTE TO xcsmmuser; GO
xcsmmuserのパスワードは接続文字列(path:
\App_Config\ConnectionStrings.config).)で確認できます。 -
分割/マージ操作の性能を向上させるために、各シャードの以下のテーブルのShardKey列にインデックスを作成することもオプションで可能です:
- Contacts
- ContactIdentifiers
- ContactFacets
- Interactions
- InteractionFacets
- DeviceProfiles
- DeviceProfileFacets
- ContactIdentifierIndex
-
分割するシャードを選び、どこに分割するか決めてください(例えば、シャードキーの範囲を50/50に分割するか75/25に分割するかを選べます)。これを行うには、SQL Sharding DeploymentツールprintMapping操作を使って、すべてのシャードマップのシャードキーレンジを取得します。
.\Sitecore.Xdb.Collection.Database.SqlShardingDeploymentTool.exe /operation printMapping /connectionstring "user id=sa;password=12345;data source=(server);" /shardMapManagerDatabaseName "Sitecore.Xdb.Collection.Database.Sql.ShardMapManagerDb"
printMappingコマンドはシャードマップとそのキーレンジのリストを生成します:
Current Shard Map ContactIdShardMap state: Demo_Xdb.Collection.Shard0 contains key range 0x
) Demo_Xdb.Collection.Shard1 contains key range 0x80:+inf) Current Shard Map DeviceProfileIdShardMap state: Demo_Xdb.Collection.Shard0 contains key range 0x) Demo_Xdb.Collection.Shard1 contains key range 0x80:+inf) Current Shard Map ContactIdentifiersIndexShardMap state: Demo_Xdb.Collection.Shard0 contains key range 0x) Demo_Xdb.Collection.Shard1 contains key range 0x80:+inf)!注+inf 「 0xFF (最高調)」を意味します。
この例では、Demo_Xdb.Collection.Shard0シャードのContactIdShardMapシャードマップのシャードキーレンジは0x
。ContactIdShardMapshardを50/50に分割するには、0x40キーでシャードを分割します。シャードを25/75に分割するには、0x20または0x60の範囲で分割します。!注50/50分割とは、シャードキーの範囲が50/50であることを意味します。シャード間のデータ分布は完全に均一でない場合があります。
-
分割/統合サービスのウェブページにアクセスし、分割/統合操作を実行してください。フィールドに正しい値を指定し、シャー ドキータイプ を次の画像のようにバイナリとして設定します。

フォームに記入する際:
-
Split at Keyはステップ7で選択したキーです。例えばキーレンジが0x
、0x20を25/75分割します。!注シャードはキー範囲で選びますが、名前ではなく。ツールは分割するキー値に基づいてターゲットするシャードを算出します。
-
分割振 る 舞いオプションは、どのキーレンジが新しいシャードに移動するかを決定します。例えば、0x20で分割し、「 ローキー(含む)からスプリットキー(除外)への移動範囲」を選択すると、新しいシャードの範囲は0x
。
-
-
ツールを実行するには 「提出」 をクリックしてください。
-
分割が完了したら、ステップ6で作成したShardKey列のインデックスを削除してください。
!重要分割操作を行った後にxDBインデックスを再構築してください。
シャードのマージ
マージ操作を実行するには:
-
Azureの分割/統合サービスを展開してください。分割/統合サービスには、2つのウェブアプリ、ストレージアカウント、そしてデータベース(Sitecoreの役割とは無関係)が含まれます。
-
データの損失や破損を防ぐためにxConnectを無効にしてください。xConnectを無効にするには:
- Content DeliveryとContent Managementの役割をCMS専用モードに切り替えましょう。
- xConnectに書き込みをするすべてのウェブアプリを停止してください。
- Connect CollectionおよびxConnect Collection Searchサービスのウェブアプリを停止してください。
-
xConnectのウェブアプリケーションのKuduサービスURLにアクセスしてください。例えば: https://mysite.scm.azurewebsites.net/
-
SQL Sharding Deployment Toolが入っているフォルダに移動してください:
\App_Data\collectiondeployment !注以下のSQLシャーディングデプロイメントツールのスクリプトのいずれかがKuduで動作しない場合は、ローカルでフォルダ全体をダウンロードし、管理者 権限でローカルのPowershellからSQLシャーディングデプロイメントツールのスクリプトを実行してください。Azureファイアウォールが、フォルダをダウンロードされたクライアントからAzure SQLインスタンスへのアクセスを許可するように正しく設定されているか、スクリプトを実行する場所から確認してください。
-
SQLユーザーをSAユーザー と同等に設定し、すべてのシャーディングデプロイメントツールスクリプトに対して完全なAdministrator権限を持つSQL。
-
任意の場合、マージ操作の性能を向上させるために、各シャードの以下のテーブルのShardKey列にインデックスを作成することも可能です。
- Contacts
- ContactIdentifiers
- ContactFacets
- Interactions
- InteractionFacets
- DeviceProfiles
- DeviceProfileFacets
- ContactIdentifierIndex
-
シャードを選択してマージします。これを行うには、SQLシャーディングデプロイメントツールprintMapping操作を使って、すべてのシャードマップのシャードキー範囲を取得してください。例えば:
.\Sitecore.Xdb.Collection.Database.SqlShardingDeploymentTool.exe /operation printMapping /connectionstring "user id=sa;password=12345;data source=(server);" /shardMapManagerDatabaseName "Sitecore.Xdb.Collection.Database.Sql.ShardMapManagerDb"
以下の例はprintMapping演算の出力を示しています。
Current Shard Map ContactIdShardMap state: Demo_Xdb.Collection.Shard0 contains key range 0x
) Demo_Xdb.Collection.Shard1 contains key range 0x40) Demo_Xdb.Collection.Shard2 contains key range 0x80:+inf)!注+inf 「 0xFF (最高調)」を意味します。
この例では、シャードキーレンジ0x
(Demo_Xdb.Collection.Shard0)をシャードキーレンジ0x40(Demo_Xdb.Collection.Shard1)に統合したいです。 -
分割/統合サービスのウェブページにアクセスし、分割/統合操作を実行してください。フィールドに正しい値を指定し、シャー ドキータイプ を次の画像のようにバイナリとして設定します:

シャードレンジ0x:0x40をシャードレンジ0x40:0x80に統合したい場合は:
- ソースレンジのローキーは0倍です。
- ソースレンジのハイキー 0x40または選択ハイは最大キーです。ハイマックスキーはinfとみなされます。
- ターゲットレンジは控えめに0x40。
- ターゲットレンジのハイキーは0x80、ティックハイは最大キーです。ハイはinfと見なされます。
マージが完了すると、Demo_Xdb.Collection.Shard1キーレンジは0x
。 -
SQLシャーディング展開ツールを使って空のソースシャードを削除してください。例えば:
.\Sitecore.Xdb.Collection.Database.SqlShardingDeploymentTool.exe /operation deleteShard /connectionstring "user id=sa;password=12345;data source=.\SQL2017;" /shardMapManagerDatabaseName "Sitecore.Xdb.Collection.Database.Sql.ShardMapManagerDb" /shardConnectionString "user id=sa;password=12345;data source=.\SQL2017;" /shardDatabaseName "Sitecore.Xdb.Collection.Database.Sql2_"
-
ステップ6で作成したShardKey列のインデックスを外してください。
!重要マージ操作を行った後にxDBインデックスを再構築してください。