Tuỳ thuộc vào khoảng không quảng cáo của bạn, bạn có thể phân đoạn (hoặc chia nguồn cấp dữ liệu thành nhiều tệp) có thể cần thiết.
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 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 là 1 GB. Thông tin này phải là được phân đoạn thành hơn 5 tệp (hoặc phân đoạn) riêng biệt.
Khoảng không quảng cáo của đối tác được phân phối trên nhiều hệ thống và/hoặc cá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 tại Hoa Kỳ và Liên minh Châu Âu nằm riêng biệt
hệ thống. 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 cho Liên minh Châu Âu có cùng
nonce
vàgeneration_timestamp
.
- 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 nằm riêng biệt
hệ thống. 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 cho Liên minh Châu Âu có cùng
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 để quá 20 phân đoạn cho mỗi nguồn cấp dữ liệu. Nếu bạn có lý do công việc 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.
-
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 thể chia chúng thành nhiều phân đoạn. Tuy nhiên, các trường này không phải được gửi trong phân đoạn với cùngshard_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 cho phân đoạn để tất cả tệp được phân đoạn có kích thước tương tự 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
thành
sau:
processing_instruction
được đặt thànhPROCESS_AS_COMPLETE
.- Đã đặt
shard_number
thành phân đoạn hiện tại của nguồn cấp dữ liệu (bắt đầu từ 0 đếntotal_shards
– 1 không có điểm gián đoạn) - Đã đặt
total_shards
thành tổng số phân đoạn cho nguồn cấp dữ liệu (bắt đầu từ 1). - Đã đặt
nonce
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 nguồn cấp dữ liệu cùng, nhưng khác với giá trị của nguồn cấp dữ liệu khác.nonce
phải là một số nguyên dương (uint64
). generation_timestamp
là dấu thời gian trong 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 để biểu thị 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 như bằng nhau và được xử lý sau khi 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 về 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 khoảng không quảng cáo được phân phối trên nhiều hệ thống và khu vực vào một nguồn cấp dữ liệu duy nhất. Việc phân đoạn có thể được sử dụng để giải quyết thách thức điều chỉnh 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 hệ thống 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 (Hoa Kỳ và Liên minh Châu Âu khoảng không quảng cáo) 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:
- Quyết định lịch tải lên và định cấu hình từng phiên bản của khoảng không quảng cáo để tuân theo lịch trình.
- Chỉ định số phân đoạn duy nhất cho từng trường hợp (ví dụ: US = N, EU = N + 1).
Đặt
total_shards
thành tổng số phân đoạn. - Tại mỗi thời điểm tải lên theo lịch, hãy quyết định
generation_timestamp
vànonce
. TrongFeedMetadata
, đặt mọi thực thể có cùng giá trị cho hai trường này.generation_timestamp
phải là quá khứ hiện tại hoặc gần đây (tốt nhất là dấu thời gian đã đọc tại cơ sở dữ liệu của đối tác)
- Sau khi tất cả phân đoạn được tải lên, Google nhóm các phân đoạn qua
generation_timestamp
vànonce
.
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 trong
khoảng không quảng cáo của đối tác và có thể được tải lên
thời gian 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 về 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 ở 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" } ] } ] }