在庫に応じて、シャーディング(またはフィードを複数の 必要になることがあります。
<ph type="x-smartling-placeholder">シャーディングを使用するタイミング
フィードが 1 個のファイルで 200 MB を超えています(gzip 圧縮後)。
- 例: 生成される在庫状況フィードは 1 GB です。これを 5 つ以上の個別のファイル(またはシャード)にシャーディングされます。
パートナー様のインベントリはシステムやリージョンに分散される 在庫の調整が困難になります
- 例: パートナーは、米国と EU の広告枠を別々の場所に配置しています。
支援しますフィードは 2 つのファイル(またはシャード)で生成できます(1 つは米国用、
と EU で 1 つで同じ
nonce
とgeneration_timestamp
。
- 例: パートナーは、米国と EU の広告枠を別々の場所に配置しています。
支援しますフィードは 2 つのファイル(またはシャード)で生成できます(1 つは米国用、
と EU で 1 つで同じ
一般規則
- 各シャードは、gzip 圧縮後に 1 ファイルあたり 200 MB を超えないようにする必要があります。
- フィードあたりのシャードは 20 個以下にすることをおすすめします。ビジネス上の正当な理由がある場合に、 この金額を超える場合は、サポートにお問い合わせください。
-
個々のレコード(たとえば、1 つの
Merchant
オブジェクト)は 1 つのシャードで送信する必要があります。 複数のシャードに分割することはできませんただし、それらの値をシャードで送信する必要はありません。 を今後のフィードでも同じshard_number
に変更します。 - パフォーマンスを高めるには、複数のゾーンにデータを均等に分割する必要があります。 すべてのシャーディングされたファイルのサイズが同程度になるようにします。
フィードをシャーディングする方法
ファイル(またはシャード)ごとに、FeedMetadata
を
次のとおりです。
processing_instruction
に設定PROCESS_AS_COMPLETE
。shard_number
をフィードの現在のシャードに設定 (開始点 0 ~total_shards
- 1、不連続性なし)total_shards
は、 フィード(1 から開始)を入力します。nonce
を同一の一意の識別子に設定 同じフィードのすべてのシャードで、 できます。generation_timestamp
は、UNIX と EPOCH のタイムスタンプです。 使用できます。フィードのすべてのシャードで同じにする必要があります。
推奨: 各ファイル(またはシャード)について、そのことを示すファイル名を設定します。 フィードタイプ、タイムスタンプ、シャード番号、 使用できます。シャードのサイズはほぼ同じで、シャードがすべて シャードがアップロードされます。
Example:
“availability_feed_1574117613_001_of_002.json.gz”
シャーディングされた在庫状況フィードの例
シャード 0
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 0, "total_shards": 3, "nonce": "111111", "generation_timestamp": 1524606581 }, "service_availability": [ { "availability": [ { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1577275200, "merchant_id": "merchant1", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
シャード 1
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 1, "total_shards": 3, "nonce": "111111", "generation_timestamp": 1524606581 }, "service_availability": [ { "availability": [ { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1577620800, "merchant_id": "merchant2", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
シャード 2
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 2, "total_shards": 3, "nonce": "111111", "generation_timestamp": 1524606581 }, "service_availability": [ { "availability": [ { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1576670400, "merchant_id": "merchant3", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
パートナーが分散したインベントリにシャーディングを使用する
分散した在庫を 1 つにまとめることが困難な場合がある 単一のフィードにまとめることができますシャーディングは 各シャードに一致するように各シャードを設定して、 インベントリ セットが作成されます。
たとえば、あるパートナーの広告枠が 2 つの地域(米国と EU)に分かれているとします。 2 つの別個のシステムを利用しています
パートナーは、各フィードを 2 つのファイル(またはシャード)に分割できます。
- 販売者フィード: 米国の場合は 1 つのシャード、EU の場合はシャード 1 つ
- サービス フィード: 米国の場合は 1 つのシャード、EU の場合はシャード 1 つ
- 在庫状況フィード: 米国の場合は 1 つのシャード、EU の場合はシャード 1 つ
フィードが適切に処理されるよう、以下の手順を行います。
- アップロード スケジュールを決定し、 スケジュールに沿って進めることができます。
- 各インスタンスに一意のシャード番号を割り当てる(例: US = N、EU = N + 1)。
total_shards
をシャードの合計数に設定します。 - スケジュール設定したアップロード時刻ごとに、
generation_timestamp
とnonce
。FeedMetadata
は、すべてのインスタンスが同じ値を保持するように設定します。 使用します。generation_timestamp
には現在または最近の過去の日付を指定してください (理想的には、パートナー様のデータベース読み取り時のタイムスタンプ)
- すべてのシャードがアップロードされると、Google はシャードを
generation_timestamp
とnonce
。
各シャードが個々のシャードを表している場合でも、
リージョンの別のリージョンにアップロードできます
generation_timestamp
と同じ時間帯の別の時間帯に
すべてのシャードで同じです
地域別のシャーディングされた在庫状況のフィードの例
シャード 0 - 米国の在庫
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 0, "total_shards": 2, "nonce": "111111", "generation_timestamp": 1524606581 }, "service_availability": [ { "availability": [ { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1577275200, "merchant_id": "US_merchant_1", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }
シャード 1 - EU 在庫
{ "metadata": { "processing_instruction": "PROCESS_AS_COMPLETE", "shard_number": 1, "total_shards": 2, "nonce": "111111", "generation_timestamp": 1524606581 }, "service_availability": [ { "availability": [ { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1577620800, "merchant_id": "EU_merchant_1", "confirmation_mode": "CONFIRMATION_MODE_SYNCHRONOUS" } ] } ] }