ไฟล์ฟีดชาร์ด (เดิม)

คุณอาจต้องชาร์ดดิ้ง (หรือแบ่งฟีดออกเป็นหลายๆ ไฟล์) ด้วย ทั้งนี้ขึ้นอยู่กับสินค้าคงคลังของคุณ

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

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

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

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

กฎทั่วไป

  • ชาร์ดแต่ละรายการต้องไม่เกิน 200 MB สำหรับ 1 ไฟล์ (หลังการบีบอัด gzip)
  • เราขอแนะนำให้ไม่เกิน 20 ชาร์ดต่อฟีด หากคุณมีเหตุผลทางธุรกิจที่ต้องใช้มากกว่าจำนวนดังกล่าว โปรดติดต่อฝ่ายสนับสนุนเพื่อขอคำแนะนำเพิ่มเติม
  • ต้องส่งระเบียนแต่ละรายการ (เช่น ออบเจ็กต์ Merchant 1 รายการ) ในชาร์ด 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"
        }
      ]
    }
  ]
}

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

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

ตัวอย่างเช่น สมมติว่าสินค้าคงคลังของพาร์ทเนอร์แบ่งออกเป็น 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"
        }
      ]
    }
  ]
}