Chia sẻ tệp nguồn cấp dữ liệu

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

Khi nào nên sử dụng phân đoạn

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

    • Ví dụ: Nguồn cấp dữ liệu về tình trạng còn hàng đã tạo có dung lượng 1 GB. Thao tác này sẽ được phân đoạn thành hơn 5 tệp riêng biệt (hoặc phân đoạ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 khiến việc đối chiếu khoảng không quảng cáo gặp khó khăn.

    • Ví dụ: Đối tác có khoảng không quảng cáo tại Hoa Kỳ và Liên minh Châu Âu hoạt động trong các hệ thống riêng biệt. Nguồn cấp dữ liệu có thể được tạo bằng 2 tệp (hoặc phân đoạn), 1 tệp dành cho Hoa Kỳ và 1 tệp dành 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 thêm quá 20 phân đoạn cho mỗi nguồn cấp dữ liệu. Nếu bạn nêu rõ lý do kinh doanh yêu cầu 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, chúng không thể được chia tách thành nhiều phân đoạn. Tuy nhiên, bạn không cần gửi các dữ liệu này trong phân đoạn cùng một shard_number cho các nguồn cấp dữ liệu trong tương lai.
  • Để có hiệu suất tốt hơn, dữ liệu của bạn nên được chia đều giữa các phân đoạn để tất cả các tệp phân đoạn đều có kích thước tương tự nhau.

Cách chia nhỏ nguồn cấp dữ liệu

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

  • processing_instructionđược đặt thành PROCESS_AS_COMPLETE.
  • shard_number được đặt thành một 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 không 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ả 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. Giá trị 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.

Đề xuất: Đố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ải lên tất cả các phân đoạn.

  • Example:"availability_feed_1574117613_001_of_002.json.gz"

Ví dụ về nguồn cấp dữ liệu tình trạng rảnh/bậ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 phân đoạn cho khoảng không quảng cáo do đối tác phân phối

Việc đối tác hợp nhất khoảng không quảng cáo được phân phối trên nhiều hệ thống và khu vực thành một nguồn cấp dữ liệu có thể là một thách thức. Bạn có thể sử dụng phân đoạn để giải quyết các thách thức đối chiếu bằng cách đặt từng phân đoạn khớp với tập hợp khoảng không quảng cáo của từng hệ thống được phân phối.

Ví dụ: Giả sử khoảng không quảng cáo của một đối tác được chia thành 2 khu vực (khoảng không quảng cáo tại Hoa Kỳ và Liên minh Châu Âu), vốn 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 cá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 hiện có: 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. Hãy quyết định lịch tải lên và định cấu hình từng phiên bản khoảng không quảng cáo để tuân theo lịch.
  2. Chỉ định số phân đoạn duy nhất cho từng phiên bản (ví dụ: US = N, EU = N + 1). Đặt total_shards thành tổng số phân đoạn.
  3. Hãy chọn generation_timestampnonce tại mỗi thời điểm tải lên theo lịch. Trong FeedMetadata, hãy thiết lập để tất cả các thực thể có cùng giá trị cho hai trường này.
    • generation_timestamp phải là thời điểm hiện tại hoặc gần đây (tốt nhất là dấu thời gian cơ sở dữ liệu đọc tại của đối tác)
  4. Sau khi tất cả các phân đoạn được tải 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 nguồn cấp dữ liệu mặc dù mỗi phân đoạn đại diện cho một khu vực khác nhau của khoảng không quảng cáo của đối tác và có thể được tải lên vào một thời điểm khác trong ngày, miễn là generation_timestamp giống nhau trên tất cả các phân đoạn.

Ví dụ về nguồn cấp dữ liệu tình trạng rảnh/bận theo khu vực

Phân đoạn 0 – Khoảng không quảng cáo ở 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"
        }
      ]
    }
  ]
}