การชาร์ดไฟล์ฟีด

การชาร์ดดิ้ง (หรือแยกฟีดออกเป็นหลายๆ )

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

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

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

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

กฎทั่วไป

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

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

สำหรับแต่ละไฟล์ (หรือชาร์ด) ให้ตั้งค่า 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"
        }
      ]
    }
  ]
}

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

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

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