シャーディング ポリシー

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

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

データベース・シャーディングは、データの分離を提供し、データの増加の管理を容易にすることで、パフォーマンスとデータ・メンテナンスを向上させることができます。

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

Commerce Engineは、Commerceエンティティまたはリストと対話するときに読み取りおよび書き込み操作に使用するグローバル データベース テーブルを決定するシャーディング ポリシーを定義します。

メモ

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

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

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

CommerceEntitiesポリシーとCommerceListsポリシーには、値の正規表現のリストを受け取る “Expressions” プロパティがあります (例: "^Entity-Catalog.*?$")。Commerce Engineは、これらのプロパティ値を使用して、読み取りまたは書き込みを行うデータベース テーブルを識別します。Commerceエンティティに対する操作 (CatalogEntitiesなど) の場合、操作の対象となるエンティティIDは正規表現の値のリストと照合されます。Commerceリストに対する操作 (IFindEntitiesInListPipelineなど) の場合、一致はリスト名に基づきます。

次に、カタログエンティティとカタログリストのデフォルトのデータベースシャーディングポリシーの例を示します。

  {
        "$type": "Sitecore.Commerce.Plugin.SQL.EntityShardingPolicy, Sitecore.Commerce.Plugin.SQL",
        "Expressions": {
          "$type": "System.Collections.Generic.List`1[[System.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`1[[System.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`1[[System.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- プレフィックスを除く) のいずれかに一致する命名規則に従うことをお勧めします。たとえば、RelationshipUpSellFeaturedCategoryToCategoryなどの名前は、それぞれ正規表現 "^List-Relationship.*?$""^List-.*Category.*?$"に基づいているため、有効なリレーションシップ名です。

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

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