フィード ファイルをシャーディングする

在庫に応じて、シャーディング(またはフィードを複数の 必要になることがあります。

<ph type="x-smartling-placeholder">

シャーディングを使用するタイミング

  • フィードが 1 個のファイルで 200 MB を超えています(gzip 圧縮後)。

    • 例: 生成される在庫状況フィードは 1 GB です。これを 5 つ以上の個別のファイル(またはシャード)にシャーディングされます。
  • パートナー様のインベントリはシステムやリージョンに分散される 在庫の調整が困難になります

    • 例: パートナーは、米国と EU の広告枠を別々の場所に配置しています。 支援しますフィードは 2 つのファイル(またはシャード)で生成できます(1 つは米国用、 と EU で 1 つで同じ noncegeneration_timestamp
で確認できます。 <ph type="x-smartling-placeholder">

一般規則

  • 各シャードは、gzip 圧縮後に 1 ファイルあたり 200 MB を超えないようにする必要があります。
  • フィードあたりのシャードは 20 個以下にすることをおすすめします。ビジネス上の正当な理由がある場合に、 この金額を超える場合は、サポートにお問い合わせください。
  • 個々のレコード(たとえば、1 つの Merchant オブジェクト)は 1 つのシャードで送信する必要があります。 複数のシャードに分割することはできませんただし、それらの値をシャードで送信する必要はありません。 を今後のフィードでも同じ shard_number に変更します。
  • パフォーマンスを高めるには、複数のゾーンにデータを均等に分割する必要があります。 すべてのシャーディングされたファイルのサイズが同程度になるようにします。
で確認できます。 <ph type="x-smartling-placeholder">

フィードをシャーディングする方法

ファイル(またはシャード)ごとに、FeedMetadata を 次のとおりです。

  • processing_instructionに設定 PROCESS_AS_COMPLETE
  • shard_number をフィードの現在のシャードに設定 (開始点 0 ~total_shards - 1、不連続性なし)
  • total_shards は、 フィード(1 から開始)を入力します。
  • nonce同一の一意の識別子に設定 同じフィードのすべてのシャードで、 できます。nonce は正の整数(uint64)にする必要があります。
  • 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 つにまとめることが困難な場合がある 1 つのフィードにまとめることができますシャーディングは 各シャードに一致するように各シャードを設定して、 インベントリ セットが作成されます。

たとえば、あるパートナーの広告枠が 2 つの地域(米国と EU)に分かれているとします。 2 つの別個のシステムを利用しています

パートナーは、各フィードを 2 つのファイル(またはシャード)に分割できます。

  • 販売者フィード: 米国の場合は 1 つのシャード、EU の場合はシャード 1 つ
  • サービス フィード: 米国の場合は 1 つのシャード、EU の場合はシャード 1 つ
  • 在庫状況フィード: 米国の場合は 1 つのシャード、EU の場合はシャード 1 つ

フィードが適切に処理されるように、以下の手順を行います。

  1. アップロード スケジュールを決定し、 スケジュールに沿って進めることができます。
  2. 各インスタンスに一意のシャード番号を割り当てる(例: US = N、EU = N + 1)。 total_shards をシャードの合計数に設定します。
  3. スケジュール設定したアップロード時刻ごとに、 generation_timestampnonceFeedMetadata は、すべてのインスタンスが同じ値を保持するように設定します。 使用します。
    • generation_timestamp には現在または最近の過去の日付を指定してください (理想的には、パートナー様のデータベース読み取り時のタイムスタンプ)
  4. すべてのシャードがアップロードされると、Google はシャードを generation_timestampnonce
で確認できます。 <ph type="x-smartling-placeholder">

各シャードが個々のシャードを表している場合でも、 リージョンの別のリージョンにアップロードできます 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"
        }
      ]
    }
  ]
}