1. Commerce Engineの方針

シャーディングポリシー

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

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

データベースシャーディングはデータの分離を提供し、データの増加管理を促進し、パフォーマンス向上やデータ保守を可能にします。

CommerceエンティティおよびCommerceリストテーブルのシャーディング

Commerce Engineは、Commerceエンティティやリストとやり取りする際に読み書き操作にどのグローバルデータベーステーブルを使うかを決定するシャーディングポリシーを定義しています。

!注シャーディングに使用されるストアドプロシージャはカスタムテーブルやリストをサポートしていません。

Commerce EngineはCommerceエンティティテーブルおよびリストテーブルに対してデータベースシャーディングを実装し、2種類のシャーディングポリシーを提供します。1つはCommerceエンティティに対する操作(例: "TableName": "CatalogEntities" )に使われ、もう1つはリストに対する読み書き操作(例: "TableName": "CatalogLists")に使用されます。

C:\inetpub\wwwroot\/wwwroot\data\Environments\フォルダにあるPlugIn.SQL.Sharding.PolicySet-1.0.0.jsonファイルには、Commerce Engineのシャーディングポリシーが含まれています。

CommerceEntitiesおよびCommerceListsポリシーには、値の正則表現リストを取る“Expressions”プロパティ(例:"^Entity-Catalog.*?$")があります。Commerce Engineはこれらのプロパティ値を用いて、読み書きすべきデータベーステーブルを特定します。Commerceエンティティ(例

)に対する操作の場合、対象となるIDエンティティは正規表現値のリストと照合されます。例えばCommerceリストに対する操作IFindEntitiesInListPipelineの場合、マッチングはリスト名に基づいて行われます。

以下はカタログエンティティおよびカタログリストのデフォルトのデータベースシャーディングポリシーの例です。

{ "$type": "Sitecore.Commerce.Plugin.SQL.EntityShardingPolicy, Sitecore.Commerce.Plugin.SQL", "Expressions": { "$type": "System.Collections.Generic.List`1System.String, mscorlib, mscorlib", "$values": "^Entity-Catalog.*?$", "^Catalog-.*?$", "^Entity-Category.*?$", "^Category-.*?$", "^Entity-SellableItem.*?$", "^SellableItem-.*?$"

}, "TableName": "CatalogEntities" }, { "$type": "Sitecore.Commerce.Plugin.SQL.ListShardingPolicy, Sitecore.Commerce.Plugin.SQL", "Expressions": { "$type": "System.Collections.Generic.List`1System.String, mscorlib, mscorlib", "$values": "^List-CatalogItems.*?$", "^List-Catalogs.*?$", "^List-Categories.*?$", "^List-SellableItems.*?$", "^List-Categories.*?$", "^List-SellableItems.*?$", "^List-PurgeCatalogs.*?$", "^List-PurgeCategories.*?$", "Entity-Catalog.*?$", "Entity-Category.*?$", "Entity-SellableItem.*?$"

}, "TableName": "CatalogLists" }

シャーディングと関係性のメンバーシップ

シャーディングポリシーには、関係性のメンバーシップ情報をRelationshipListsテーブルにマッピングするための正則表現のリストが含まれています。

!注カタログシステム内のすべての関係は、新しい関係定義を含めてこのテーブルにマッピングされなければなりません。

デフォルトのポリシーは以下の通り定義されています:

{        "$type": "Sitecore.Commerce.Plugin.SQL.ListShardingPolicy, Sitecore.Commerce.Plugin.SQL", "Expressions": { "$type": "System.Collections.Generic.List`1System.String, mscorlib, mscorlib",     "$values":       "^List-.*Catalog.*?$",       "^List-.*Category.*?$",       "^List-Catalog.*?$",       "^List-.*SellableItem.*?$",       "^List-.*SellableItem-.*?$",       "^List-PriceBookToCatalog.*?$",       "^List-PromotionBookToCatalog.*?$",       "^List-InventorySetToCatalog.*?$",        "^List-Relationship.*?$"            }, "TableName": "RelationshipLists" },

新しいカスタム関係の命名に関する考慮事項

Business Tools内の関係定義は、"TableName": "RelationshipLists" テーブルであらかじめ定義された関係に基づいています。ユーザーがBusiness Toolsを使って新しい関係定義を作成する際は、既存の正則表現のいずれかに一致する命名規則に従うことを推奨します( List- 接頭辞を除く)。例えば、RelationshipUpSell、またはFeaturedCategoryToCategoryのような名前は、それぞれ正規表現 "^List-Relationship.*?$" と "^List-.*Category.*?$"に基づいているため有効な関係名です。

ビジネスユーザーが"RelationshipLists"テーブルで定義されている既存の正規表現と一致しないカスタム関係定義を作成した場合、新しい関係定義名に一致するエントリをRelationshipListsリストに追加しなければなりません。そのエントリには"^List-"プレフィックスと".*?$"ポフィックスを含める必要があります。例えば、ビジネスユーザーが*「FeaturedProducts」*という新しい関係定義を作成する場合、"TableName": "RelationshipLists"リストの価値としてエントリ"^List-FeaturedProducts.*?$"を追加しなければなりません。

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