ชาร์ดดิ้งไฟล์ฟีด

อาจจําเป็นต้องชาร์ดดิ้ง (หรือแยกฟีดออกเป็นหลายๆ ไฟล์) ทั้งนี้ขึ้นอยู่กับพื้นที่โฆษณา

ควรใช้การชาร์ดดิ้งเมื่อใด

  • ฟีดมีขนาดเกิน 200 MB สําหรับไฟล์ 1 รายการ (หลังการบีบอัด gzip)

    • ตัวอย่าง: ฟีดเวลาว่างที่สร้างขึ้นคือ 1 GB ซึ่งควรชาร์ดไปยังไฟล์แยกกัน (หรือชาร์ด) มากกว่า 5 ไฟล์
  • พื้นที่โฆษณาของพาร์ทเนอร์จะกระจายไปทั่วทั้งระบบและ/หรือภูมิภาค ทําให้ปรับยอดพื้นที่โฆษณาได้ยาก

    • ตัวอย่าง: พาร์ทเนอร์มีพื้นที่โฆษณาในสหรัฐอเมริกาและสหภาพยุโรปในระบบที่แยกต่างหาก ฟีดอาจสร้างด้วยไฟล์ 2 ไฟล์ (หรือชาร์ด) 1 ไฟล์สําหรับสหรัฐอเมริกา 1 ไฟล์และ 1 ไฟล์สําหรับสหภาพยุโรปที่มี nonce และ generation_timestamp เหมือนกัน

กฎทั่วไป

  • ชาร์ดแต่ละรายการต้องไม่เกิน 200 MB สําหรับ 1 ไฟล์ (หลังการบีบอัด gzip)
  • เราขอแนะนําให้ใช้ชาร์ดไม่เกิน 20 รายการต่อฟีด หากคุณมีเหตุผลรองรับธุรกิจที่ต้องการมากกว่าจํานวนดังกล่าว โปรดติดต่อฝ่ายสนับสนุนเพื่อขอคําแนะนําเพิ่มเติม
  • โดยจะต้องส่งระเบียนแต่ละรายการ (เช่น ออบเจ็กต์ Merchant 1 รายการ) ในชาร์ดเดียว โดยจะแยกในชาร์ดหลายรายการไม่ได้ แต่ทั้ง 2 อย่างนี้ไม่จําเป็นต้องส่งในชาร์ดด้วย shard_number เดียวกันสําหรับฟีดในอนาคต
  • เพื่อประสิทธิภาพที่ดียิ่งขึ้น คุณควรแบ่งข้อมูลให้เท่าๆ กันในชาร์ดเพื่อให้ไฟล์ที่ชาร์ดทั้งหมดมีขนาดใกล้เคียงกัน

วิธีชาร์ดฟีด

สําหรับแต่ละไฟล์ (หรือชาร์ด) ให้ตั้งค่า FeedMetadata เป็นสิ่งต่อไปนี้

  • processing_instructionตั้งค่าเป็น PROCESS_AS_COMPLETE
  • ตั้งค่า shard_number เป็นชาร์ดปัจจุบันของฟีด (เริ่มจาก 0 ถึง total_shards - 1 โดยไม่มีความไม่ต่อเนื่อง)
  • total_shards ตั้งค่าเป็นจํานวนชาร์ดทั้งหมดสําหรับฟีด (เริ่มจาก 1)
  • nonce ตั้งค่าเป็นตัวระบุที่ไม่ซ้ํากันซึ่งเหมือนกันในฟีดทั้งหมด ฟีดเดียวกัน แต่ต่างจากค่าของฟีดอื่นๆ
  • generation_timestamp คือการประทับเวลาในรูปแบบ Uniix และ 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"
        }
      ]
    }
  ]
}

การใช้การชาร์ดดิ้งสําหรับพื้นที่โฆษณาของพาร์ทเนอร์

พาร์ทเนอร์อาจรวบรวมพื้นที่โฆษณาที่เผยแพร่ในหลายระบบและหลายภูมิภาคไว้ในฟีดเดียวได้ยาก คุณใช้ชาร์ดดิ้งเพื่อแก้ไขปัญหาการปรับยอดได้โดยการตั้งค่าชาร์ดแต่ละรายการเพื่อให้ตรงกับชุดพื้นที่โฆษณาของระบบที่กระจายแต่ละชุด

ตัวอย่างเช่น สมมติว่าพื้นที่โฆษณาของพาร์ทเนอร์แบ่งออกเป็น 2 ภูมิภาค (พื้นที่โฆษณาในสหรัฐอเมริกาและสหภาพยุโรป) ซึ่งอาศัยอยู่ใน 2 ระบบแยกกัน

พาร์ทเนอร์จะแบ่งฟีดแต่ละรายการออกเป็น 2 ไฟล์ (หรือชาร์ด) ได้ดังนี้

  • ฟีดผู้ขาย: 1 ชาร์ดสําหรับสหรัฐอเมริกา, 1 ชาร์ดสําหรับสหภาพยุโรป
  • ฟีดบริการ: ชาร์ด 1 รายการสําหรับสหรัฐอเมริกา และ 1 ชาร์ดสําหรับสหภาพยุโรป
  • ฟีดเวลาว่าง: ชาร์ด 1 ชาร์ดสําหรับสหรัฐอเมริกา ชาร์ด 1 ชาร์ดสําหรับสหภาพยุโรป

ทําตามขั้นตอนด้านล่างเพื่อให้ฟีดประมวลผลอย่างถูกต้อง

  1. กําหนดการอัปโหลด และกําหนดค่าพื้นที่โฆษณาแต่ละอินสแตนซ์ให้เป็นไปตามกําหนดการ
  2. กําหนดหมายเลขชาร์ดที่ไม่ซ้ําสําหรับอินสแตนซ์แต่ละรายการ (เช่น US = N, EU = N + 1) ตั้งค่า total_shards เป็นจํานวนชาร์ดทั้งหมด
  3. ในเวลาอัปโหลดตามกําหนดการแต่ละรายการ ให้เลือก generation_timestamp และ nonce ใน FeedMetadata ให้ตั้งค่าอินสแตนซ์ทั้งหมดให้มีค่าเดียวกันสําหรับ 2 ช่องนี้
    • generation_timestamp ควรเป็นค่าปัจจุบันหรือล่าสุด ในอดีต (ตามหลักการแล้วคือการประทับเวลาฐานข้อมูลแบบอ่านของพาร์ทเนอร์)
  4. หลังจากอัปโหลดชาร์ดทั้งหมดแล้ว Google จะจัดกลุ่มชาร์ดผ่าน generation_timestamp และ nonce

Google จะประมวลผลฟีดเป็นรายการเดียว แม้ว่าชาร์ดแต่ละรายการจะแสดงภูมิภาคที่แตกต่างกันของพื้นที่โฆษณาของพาร์ทเนอร์และอาจอัปโหลดในเวลาที่ต่างกันของวันตราบใดที่ 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 - พื้นที่โฆษณาในสหภาพยุโรป

{
  "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"
        }
      ]
    }
  ]
}