Loading

B2C Commerceにおける大規模SKUカタログとカスタム属性管理のガイドライン

公開日: May 28, 2026
説明

 

1. アーキテクチャの基本構造: インフラストラクチャの理解

 

本ガイダンスに入る前に、B2C Commerceプラットフォームのアーキテクチャを理解することが重要です。プラットフォームは、CDN(コンテンツデリバリーネットワーク)、Web層、App層、およびDB層から構成されるマルチティアアーキテクチャで動作しています。

 

 

図1. Salesforce B2C Commerce CDN/Web/App/DB層アーキテクチャ

 

  • CDN(コンテンツデリバリーネットワーク): 画像や CSS ファイルなどの静的コンテンツをエンドユーザーに最も近い場所からキャッシュして配信し、ページ読み込みの遅延を削減する分散型サーバーネットワーク。

  • Web 層: HTTPリクエストを処理し、ストアフロントのユーザーインターフェースを提供するフロント層であり、すべての Web トラフィックのエントリポイントとして機能します。

  • App 層: ビジネスロジック層。ユーザーへの送信やデータベースに保存される前に、B2C Commerce のルールが処理され、商品データが操作されます。

  • DB 層: 永続的なカタログデータを安全に管理・検索するバックエンドのストレージ層。

 

2. パフォーマンスに影響を与える主な要因

 

カタログとデータモデルを設計する際、以下の要素はシステム負荷とデータベースサイズを掛け算式(乗数)で増大させます。拡張性を維持するためには、これらの指標を最適化することが不可欠です。

 

  • 商品数:カタログに含まれる商品の件数。

  • ロケール数: サイトに設定されているアクティブなロケールの総数。ロケール数が少ないほど、データのオーバーヘッドは少なくなります。アクティブなロケールは必要最小限に留めてください。

  • カスタム属性数: 各商品・ロケールのカスタム属性の件数。値が設定された(空ではない)件数が多いほど、データ量が増加します。

  • 属性の文字数:商品属性に設定される値の文字数。設定値の文字数が多いと、全体の検索インデックスサイズが増加します。

  • カテゴリの割り当て: 1つの商品が割り当てられるカテゴリの数。最小限の割り当てが推奨されます。1商品あたり5〜6カテゴリに制限してください。

  • 検索可能な属性の数: 検索可能な属性を最小限に抑えることで、インデックスサイズを縮小するだけでなく、検索結果のノイズも削減できます。検索可能な属性は約20個に制限することを推奨します。

 

解決策

 

3. 大規模 SKU カタログとカスタム属性の推奨事項

 

最適なパフォーマンスと拡張性を実現するためには、以下のガイドラインに従い、データベースのレコード作成と負荷を最小限に抑えてください。これらの推奨事項は、カタログをゼロから構築する場合でも、数百万の SKU(Stock Keeping Unit:個々の商品を識別する最小単位)を持つ既存のカタログを最適化する場合でも適用されます。

 

 

A. 属性設計とデータモデル

商品の属性モデルは、B2C Commerceのインデックスサイズとレプリケーションデータ量を決定づける最大の要因です。後から変更するにはカタログ全体の再設計が必要になるため、事前にこのモデルを慎重に設計してください。

領域

DO (推奨)

DON'T (非推奨)

期待効果

属性定義

事前に属性モデルを設計する。

カスタム属性を作成する前に、既存のシステム属性(UPCやEANなど)を再利用します。

不要なカスタム属性を作成すること。

システム属性で十分な場合に限ります。厳密に必要ではないカスタム属性の定義は避けます。

DB層

DBレコード数の削減

Null 値(空値)の処理

デフォルト値は空(null)のままにする。

例えば、Boolean属性で95%の商品が「No」の場合、未定義のままにしておき、5%の商品にのみ「Yes」を保存します。

デフォルト値を保存すること。

デフォルト状態であるにもかかわらず、数百万の商品に対して明示的に「No」や「False」を保存しないでください。不必要なデータ肥大化を招きます。

DB層

DBレコード数の削減

ローカライズとフォールバック

ロケールのフォールバック機能(継承)を活用する。

ja_JP に ja を継承させ、ja に default を継承させます。可能な限り上位レベルで値を保存します。

データを重複させること。

同一の値であるにもかかわらず、全ロケールに明示的に同じデータを保存してはいけません。

DB層

DBレコード数の削減

サイト固有の値

デフォルト値を使用する。

全サイトに適用される属性の場合は、組織/デフォルトレベルで設定します。

サイト固有の属性を使用すること。

サイトが1つしかない場合や、全サイトで同じ値を共有している場合に適用します。

DB層

DBレコード数の削減

商品構造

商品タイプを使用する。

バリエーションのない商品では「商品」タイプを使用する。

バリエーションマスタに商品属性を共通化する。

バリエーションマスタで共通の商品属性値を定義することで、バリエーション商品での定義が不要となり、データ量を抑えることができます。

不要なバリエーション構造を使用する。

バリエーションマスタ/バリエーション商品が 1 対 1 の場合、バリエーション構造は不要です。

バリエーションマスタ/バリエーション商品の構造を使用すること。

同じバリエーションマスタに紐づく複数のバリエーション商品で共通の属性値がある場合、個別で定義をしないでください。

DB層

DBレコード数の削減

 

B. カテゴリ構造の設計

カテゴリツリーの深さは、検索インデックスの再構築に直接影響します。構造が不適切であることは、大規模な B2C Commerce の実装において、インデックス再構築やデータレプリケーションの時間が遅くなる最も一般的な原因の1つです。

 

領域

DO (推奨)

DON'T (非推奨)

期待効果

カテゴリ割り当て

1商品あたりの割り当てを5〜6カテゴリに制限すること。

バックエンド処理を高速に保つため分類を簡素化します。

1つの商品に過剰な数のカテゴリを割り当てること。

インデックス更新時の処理時間が劇的に増加します。

DB 層

商品検索インデックスサイズ削減

DB レコード数の削減

カテゴリ規模

カテゴリ内の商品数を適切な規模に保つ。

膨大な数の商品が含まれる場合は、サブカテゴリやランディングページにユーザーをリダイレクトさせます。

数百万の商品を持つ巨大なカテゴリを作成すること。

ストアフロントおよびBusiness Manager のパフォーマンスが低下します。

DB 層

DB レコード数の削減

ストアフロント構造

検索の絞り込み(リファインメント)を使用する。

商品の絞り込みでは、カテゴリ階層を深くする代わりに、検索の絞り込み機能を使用します。

属性の組み合わせごとに別々のカテゴリを作成すること。

可能なすべての属性の組み合わせに対して作成することは避けます。

DB 層

DB レコード数の削減

C. 検索設定とインデックス作成

インデックス化される対象を最適化することは、メモリ使用量と検索ノイズを減らすために不可欠です。検索可能な属性が増えるごとに、カタログ内の SKU 全体でインデックスサイズが増加します。

 

領域

DO (推奨)

DON'T (非推奨)

期待効果

検索可能な属性

検索可能な属性は約20個までに制限する。

顧客が商品を発見するために本当に必要なものだけをインデックス化します。

商品IDを検索対象にすること。

特定のビジネスユースケースで厳密に必要とされない限り避けてください。

DB 層

商品検索インデックスサイズ削減

DB レコード数の削減

検索の絞り込み

検索の絞り込みを使用します。

カテゴリ固有の絞り込み属性や絞り込みの継承ブロック機能などを用いて、適用される絞り込み条件が必要最小限になるようにする。

大量の値(例えば10万以上)を持つ絞り込みのバケットをルートカテゴリに配置すること。

処理負荷が劇的に増加します。

App 層

応答時間短縮

大量の検索結果

ユーザーをリダイレクトさせます。

検索結果やカテゴリ内の商品数が膨大になる場合は、サブカテゴリや専用のランディングページに誘導します

数百万の商品に対する大規模な検索結果を動的にそのまま表示させること。

検索エンジンに過負荷が生じます。

App 層

応答時間短縮

D. ビジネス運用とデータ管理

基幹システムでの効率的なデータ管理によって、B2C Commerce のプラットフォームの負荷を効率的に低減させることが可能となります。適切な作業に対して適切なツールを使い分けることで、大規模な運用においてボトルネックが発生するのを未然に防ぐことが期待されます。

 

領域

DO (推奨)

DON'T (非推奨)

期待効果

PIM の利用

PIM(Product Information Management)ソリューションを使用します。

100万 SKU を超えるような高 SKU 数のサイトにおいて、商品作成やカテゴリ割り当てを外部で管理し、オーバーヘッドを削減します。

Business Manager を PIM として使用すること。

Business Manager 上で大規模なデータ操作を行うと、レプリケーションやインデックス再構築が遅延します。

DB 層

DB レコード数の削減

インポート戦略

マージ(Merge)モードのインポートを使用します。

前回の成功したインポート以降に変更されたデータのみをインポートします。

全件フルインポートを実行すること。

初期のカタログ読み込みやデータ破損イベントからの復旧時など、絶対に必要な場合を除き避けてください。

DB 層

DB 処理負荷の軽減

 

 

4. まとめ

これらの B2C Commerce のカタログガイドラインを厳密に遵守することで、以下の効果が得られます。

  • 商品検索インデックスサイズの最小化 — 検索可能な属性を減らし、カテゴリ割り当てを厳格に制限することで、商品検索インデックスのデータフットプリントが減少します。

  • レプリケーション処理のデータ量(ペイロード)の縮小 — システム属性で十分な場合に厳密に必要でないカスタム属性の定義を避け、デフォルト値の保存を避けることで、各層間で複製されるデータ量が減少します。

  • ストアフロントパフォーマンスの最適化 — 効率的なカタログ構造により App 層の応答時間と DB 層のクエリ負荷が減少し、結果として顧客へのページ読み込みが高速化します。

その他のリソース

 

ナレッジ記事番号

005385001

 
読み込み中
Salesforce Help | Article