本ガイダンスに入る前に、B2C Commerceプラットフォームのアーキテクチャを理解することが重要です。プラットフォームは、CDN(コンテンツデリバリーネットワーク)、Web層、App層、およびDB層から構成されるマルチティアアーキテクチャで動作しています。
図1. Salesforce B2C Commerce CDN/Web/App/DB層アーキテクチャ
CDN(コンテンツデリバリーネットワーク): 画像や CSS ファイルなどの静的コンテンツをエンドユーザーに最も近い場所からキャッシュして配信し、ページ読み込みの遅延を削減する分散型サーバーネットワーク。
Web 層: HTTPリクエストを処理し、ストアフロントのユーザーインターフェースを提供するフロント層であり、すべての Web トラフィックのエントリポイントとして機能します。
App 層: ビジネスロジック層。ユーザーへの送信やデータベースに保存される前に、B2C Commerce のルールが処理され、商品データが操作されます。
DB 層: 永続的なカタログデータを安全に管理・検索するバックエンドのストレージ層。
カタログとデータモデルを設計する際、以下の要素はシステム負荷とデータベースサイズを掛け算式(乗数)で増大させます。拡張性を維持するためには、これらの指標を最適化することが不可欠です。
商品数:カタログに含まれる商品の件数。
ロケール数: サイトに設定されているアクティブなロケールの総数。ロケール数が少ないほど、データのオーバーヘッドは少なくなります。アクティブなロケールは必要最小限に留めてください。
カスタム属性数: 各商品・ロケールのカスタム属性の件数。値が設定された(空ではない)件数が多いほど、データ量が増加します。
属性の文字数:商品属性に設定される値の文字数。設定値の文字数が多いと、全体の検索インデックスサイズが増加します。
カテゴリの割り当て: 1つの商品が割り当てられるカテゴリの数。最小限の割り当てが推奨されます。1商品あたり5〜6カテゴリに制限してください。
検索可能な属性の数: 検索可能な属性を最小限に抑えることで、インデックスサイズを縮小するだけでなく、検索結果のノイズも削減できます。検索可能な属性は約20個に制限することを推奨します。
最適なパフォーマンスと拡張性を実現するためには、以下のガイドラインに従い、データベースのレコード作成と負荷を最小限に抑えてください。これらの推奨事項は、カタログをゼロから構築する場合でも、数百万の SKU(Stock Keeping Unit:個々の商品を識別する最小単位)を持つ既存のカタログを最適化する場合でも適用されます。
商品の属性モデルは、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レコード数の削減 |
カテゴリツリーの深さは、検索インデックスの再構築に直接影響します。構造が不適切であることは、大規模な B2C Commerce の実装において、インデックス再構築やデータレプリケーションの時間が遅くなる最も一般的な原因の1つです。
|
領域 |
DO (推奨) |
DON'T (非推奨) |
期待効果 |
|
カテゴリ割り当て |
1商品あたりの割り当てを5〜6カテゴリに制限すること。 バックエンド処理を高速に保つため分類を簡素化します。 |
1つの商品に過剰な数のカテゴリを割り当てること。 インデックス更新時の処理時間が劇的に増加します。 |
DB 層 商品検索インデックスサイズの削減 DB レコード数の削減 |
|
カテゴリ規模 |
カテゴリ内の商品数を適切な規模に保つ。 膨大な数の商品が含まれる場合は、サブカテゴリやランディングページにユーザーをリダイレクトさせます。 |
数百万の商品を持つ巨大なカテゴリを作成すること。 ストアフロントおよびBusiness Manager のパフォーマンスが低下します。 |
DB 層 DB レコード数の削減 |
|
ストアフロント構造 |
検索の絞り込み(リファインメント)を使用する。 商品の絞り込みでは、カテゴリ階層を深くする代わりに、検索の絞り込み機能を使用します。 |
属性の組み合わせごとに別々のカテゴリを作成すること。 可能なすべての属性の組み合わせに対して作成することは避けます。 |
DB 層 DB レコード数の削減 |
インデックス化される対象を最適化することは、メモリ使用量と検索ノイズを減らすために不可欠です。検索可能な属性が増えるごとに、カタログ内の SKU 全体でインデックスサイズが増加します。
|
領域 |
DO (推奨) |
DON'T (非推奨) |
期待効果 |
|
検索可能な属性 |
検索可能な属性は約20個までに制限する。 顧客が商品を発見するために本当に必要なものだけをインデックス化します。 |
商品IDを検索対象にすること。 特定のビジネスユースケースで厳密に必要とされない限り避けてください。 |
DB 層 商品検索インデックスサイズの削減 DB レコード数の削減 |
|
検索の絞り込み |
検索の絞り込みを使用します。 カテゴリ固有の絞り込み属性や絞り込みの継承ブロック機能などを用いて、適用される絞り込み条件が必要最小限になるようにする。 |
大量の値(例えば10万以上)を持つ絞り込みのバケットをルートカテゴリに配置すること。 処理負荷が劇的に増加します。 |
App 層 応答時間の短縮 |
|
大量の検索結果 |
ユーザーをリダイレクトさせます。 検索結果やカテゴリ内の商品数が膨大になる場合は、サブカテゴリや専用のランディングページに誘導します |
数百万の商品に対する大規模な検索結果を動的にそのまま表示させること。 検索エンジンに過負荷が生じます。 |
App 層 応答時間の短縮 |
基幹システムでの効率的なデータ管理によって、B2C Commerce のプラットフォームの負荷を効率的に低減させることが可能となります。適切な作業に対して適切なツールを使い分けることで、大規模な運用においてボトルネックが発生するのを未然に防ぐことが期待されます。
|
領域 |
DO (推奨) |
DON'T (非推奨) |
期待効果 |
|
PIM の利用 |
PIM(Product Information Management)ソリューションを使用します。 100万 SKU を超えるような高 SKU 数のサイトにおいて、商品作成やカテゴリ割り当てを外部で管理し、オーバーヘッドを削減します。 |
Business Manager を PIM として使用すること。 Business Manager 上で大規模なデータ操作を行うと、レプリケーションやインデックス再構築が遅延します。 |
DB 層 DB レコード数の削減 |
|
インポート戦略 |
マージ(Merge)モードのインポートを使用します。 前回の成功したインポート以降に変更されたデータのみをインポートします。 |
全件フルインポートを実行すること。 初期のカタログ読み込みやデータ破損イベントからの復旧時など、絶対に必要な場合を除き避けてください。 |
DB 層 DB 処理負荷の軽減 |
これらの B2C Commerce のカタログガイドラインを厳密に遵守することで、以下の効果が得られます。
商品検索インデックスサイズの最小化 — 検索可能な属性を減らし、カテゴリ割り当てを厳格に制限することで、商品検索インデックスのデータフットプリントが減少します。
レプリケーション処理のデータ量(ペイロード)の縮小 — システム属性で十分な場合に厳密に必要でないカスタム属性の定義を避け、デフォルト値の保存を避けることで、各層間で複製されるデータ量が減少します。
ストアフロントパフォーマンスの最適化 — 効率的なカタログ構造により App 層の応答時間と DB 層のクエリ負荷が減少し、結果として顧客へのページ読み込みが高速化します。
B2C Commerce カタログについて知る - Salesforce Trailhead モジュール
B2C Commerce の検索インデックス - Salesforce ヘルプ
B2C Commerce の商品のタイプとバリエーション - Salesforce ヘルプ
B2C Commerce のサイトの地域情報の構成 - Salesforce ヘルプ
005385001

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.