Tệp nguồn cấp dữ liệu được phân đoạn (cũ)

Tuỳ thuộc vào khoảng không quảng cáo của bạn, bạn có thể cần phân đoạn (hoặc chia nhỏ nguồn cấp dữ liệu thành nhiều tệp).

Trường hợp sử dụng tính năng phân đoạn

  • Nguồn cấp dữ liệu vượt quá 200 MB đối với 1 tệp (sau khi nén gzip).

    • Ví dụ: Nguồn cấp dữ liệu tình trạng còn hàng đã tạo có kích thước 1 GB. Bạn nên phân đoạn mã này thành 5 tệp (hoặc phân đoạn) riêng biệt trở lên.
  • Khoảng không quảng cáo của đối tác được phân phối trên các hệ thống và/hoặc khu vực dẫn đến khó điều chỉnh khoảng không quảng cáo.

    • Ví dụ: Đối tác có khoảng không quảng cáo ở Hoa Kỳ và Liên minh Châu Âu nằm trong các hệ thống riêng biệt. Bạn có thể tạo nguồn cấp dữ liệu bằng 2 tệp (hoặc phân đoạn), 1 tệp cho Hoa Kỳ và 1 tệp cho Liên minh Châu Âu có cùng noncegeneration_timestamp.

Quy tắc chung

  • Mỗi phân đoạn không được vượt quá 200 MB cho 1 tệp (sau khi nén gzip).
  • Bạn không nên sử dụng quá 20 phân đoạn cho mỗi nguồn cấp dữ liệu. Nếu lý do công việc của bạn yêu cầu số tiền nhiều hơn số tiền đó, vui lòng liên hệ với bộ phận hỗ trợ để được hướng dẫn thêm.
  • Các bản ghi riêng lẻ (ví dụ: một đối tượng Merchant) phải được gửi trong một phân đoạn, không được chia nhỏ thành nhiều phân đoạn. Tuy nhiên, các mã này không nhất thiết phải được gửi vào phân đoạn có cùng shard_number cho các nguồn cấp dữ liệu trong tương lai.
  • Để đạt được hiệu suất tốt hơn, bạn nên chia dữ liệu đồng đều giữa các phân đoạn để tất cả các tệp được phân đoạn đều có kích thước giống nhau.

Cách phân đoạn nguồn cấp dữ liệu

Đối với mỗi tệp (hoặc phân đoạn), hãy đặt FeedMetadata như sau:

  • processing_instructionđã đặt thành PROCESS_AS_COMPLETE.
  • shard_number được đặt thành phân đoạn hiện tại của nguồn cấp dữ liệu (bắt đầu từ 0 đến total_shards – 1 mà không bị gián đoạn)
  • total_shards được đặt thành tổng số phân đoạn cho nguồn cấp dữ liệu (bắt đầu từ 1).
  • nonce được đặt thành một giá trị nhận dạng duy nhất giống nhau trên tất cả các phân đoạn của cùng một nguồn cấp dữ liệu nhưng khác với giá trị của các nguồn cấp dữ liệu khác.
  • generation_timestamp là dấu thời gian ở định dạng unix và EPOCH. Tên này phải giống nhau trên tất cả các phân đoạn của nguồn cấp dữ liệu.

Nên dùng: Đối với mỗi tệp (hoặc phân đoạn), hãy đặt tên tệp để cho biết loại nguồn cấp dữ liệu, dấu thời gian, số phân đoạn và tổng số phân đoạn. Các phân đoạn phải có kích thước gần bằng nhau và được xử lý sau khi tất cả phân đoạn được tải lên.

  • Example: “availability_feed_1574117613_001_of_002.json.gz”

Ví dụ về nguồn cấp dữ liệu Tình trạng còn hàng được phân đoạn

Phân đoạn 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"
        }
      ]
    }
  ]
}

Phân đoạn 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"
        }
      ]
    }
  ]
}

Phân đoạn 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"
        }
      ]
    }
  ]
}

Sử dụng tính năng phân đoạn cho khoảng không quảng cáo do đối tác phân phối

Các đối tác có thể gặp khó khăn trong việc hợp nhất các sản phẩm được phân phối trên nhiều hệ thống và/hoặc khu vực vào một nguồn cấp dữ liệu duy nhất. Bạn có thể dùng tính năng phân đoạn để giải quyết các thách thức trong việc điều chỉnh bằng cách đặt từng phân đoạn sao cho khớp với tập hợp khoảng không quảng cáo của hệ thống được phân phối.

Ví dụ: giả sử khoảng không quảng cáo của đối tác được tách thành 2 khu vực (khoảng không quảng cáo ở Hoa Kỳ và Liên minh Châu Âu). Khoảng không quảng cáo này nằm trong 2 hệ thống riêng biệt.

Đối tác có thể chia mỗi nguồn cấp dữ liệu thành 2 tệp (hoặc phân đoạn):

  • Nguồn cấp dữ liệu người bán: 1 phân đoạn cho Hoa Kỳ, 1 phân đoạn cho Liên minh Châu Âu
  • Nguồn cấp dữ liệu dịch vụ: 1 phân đoạn cho Hoa Kỳ, 1 phân đoạn cho Liên minh Châu Âu
  • Nguồn cấp dữ liệu về tình trạng còn hàng: 1 phân đoạn cho Hoa Kỳ, 1 phân đoạn cho Liên minh Châu Âu

Hãy làm theo các bước dưới đây để đảm bảo nguồn cấp dữ liệu được xử lý đúng cách:

  1. Quyết định lịch tải lên và định cấu hình từng bản sao của khoảng không quảng cáo để tuân theo lịch biểu.
  2. Chỉ định số phân đoạn duy nhất cho mỗi trường hợp (ví dụ: US = N, EU = N + 1). Đặt total_shards thành tổng số phân đoạn.
  3. Vào mỗi thời điểm tải lên theo lịch, hãy quyết định generation_timestampnonce. Trong FeedMetadata, hãy đặt tất cả thực thể để chứa cùng một giá trị cho 2 trường này.
    • generation_timestamp phải là giá trị hiện tại hoặc gần đây trong quá khứ (tốt nhất là dấu thời gian đọc tại cơ sở dữ liệu của đối tác)
  4. Sau khi tải tất cả phân đoạn lên, Google sẽ nhóm các phân đoạn thông qua generation_timestampnonce.

Google sẽ xử lý nguồn cấp dữ liệu dưới dạng một phân đoạn mặc dù mỗi phân đoạn đại diện cho một khu vực khác nhau trong khoảng không quảng cáo của đối tác và có thể được tải lên vào các thời điểm khác nhau trong ngày miễn là generation_timestamp giống nhau trên tất cả phân đoạn.

Ví dụ về nguồn cấp dữ liệu Tình trạng còn hàng được phân đoạn theo khu vực

Phân đoạn 0 – Khoảng không quảng cáo tại Hoa Kỳ

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

Phân đoạn 1 – Khoảng không quảng cáo ở Liên minh Châu Âu

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