Envanterinize bağlı olarak, parçalama (veya feed'leri birden fazla dosyaya bölme) gerekebilir.
Bölme ne zaman kullanılır?
Feed, 1 dosya için 200 MB'ı aşıyor (gzip sıkıştırmasından sonra).
- Örnek: Oluşturulan müsaitlik durumu feed'i 1 GB'tır. Bu, 5'ten fazla ayrı dosyaya (veya parçaya) bölünmelidir.
İş ortağı envanteri sistemler ve/veya bölgelere dağıtılır. Bu durum, envanterin uyumlulaştırılmasını zorlaştırır.
- Örnek: İş ortağının ayrı sistemlerde bulunan ABD ve AB envanteri vardır. Feed, aynı
nonce
vegeneration_timestamp
ile ABD için 1 ve AB için 1 olmak üzere 2 dosyayla (veya parçayla) oluşturulabilir.
- Örnek: İş ortağının ayrı sistemlerde bulunan ABD ve AB envanteri vardır. Feed, aynı
Genel kurallar
- Her bir parça, 1 dosya için 200 MB'ı aşamaz (gzip sıkıştırmasından sonra).
- Feed başına en fazla 20 parça kullanmanızı öneririz. Bu tutardan daha fazlasını gerektiren bir işletme gerekçeniz varsa daha fazla bilgi için lütfen destek ekibiyle iletişime geçin.
-
Tekil kayıtlar (ör. bir
Merchant
nesnesi) tek bir parçada gönderilmelidir, birden fazla parçaya bölünemez. Ancak gelecekteki feed'ler için aynıshard_number
ile parçaya gönderilmeleri gerekmez. - Daha iyi performans için verileriniz, tüm parçalara ayrılmış dosyaların boyutu benzer olacak şekilde parçalar arasında eşit olarak bölünmelidir.
Feed'leri bölme
Her dosya (veya parça) için FeedMetadata
değerini aşağıdaki gibi ayarlayın:
processing_instruction
şu değere ayarlandı:PROCESS_AS_COMPLETE
.shard_number
, feed'in mevcut parçasını temsil eder (0 iletotal_shards
- 1 arasında kesintisiz olarak)total_shards
, feed'in toplam bölüm sayısına (1'den başlayarak) ayarlanır.nonce
, aynı feed'in tüm parçalarında aynı ancak diğer feed'lerin değerlerinden farklı bir benzersiz tanımlayıcı olarak ayarlanmalıdır.nonce
pozitif bir tam sayı (uint64
) olmalıdır.generation_timestamp
, Unix ve EPOCH biçiminde zaman damgası Bu değer, feed'in tüm parçalarında aynı olmalıdır.
Önerilen: Her dosya (veya parça) için dosya adını feed türünü, zaman damgasını, parça numarasını ve toplam parça sayısını belirtecek şekilde ayarlayın. Parçalar yaklaşık olarak eşit boyutta olmalı ve tüm parçalar yüklendikten sonra işlenmelidir.
Example:
“availability_feed_1574117613_001_of_002.json.gz”
Parçalı kullanılabilirlik feed'i örneği
0. Parça
{ "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. Parça
{ "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" } ] } ] }
Parça 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" } ] } ] }
İş ortağı tarafından dağıtılan envanter için bölümleme kullanma
İş ortaklarının, birden fazla sistem ve/veya bölgede dağıtılan envanteri tek bir feed'de birleştirmesi zor olabilir. Her bir parçayı dağıtılmış sistemlerin envanter kümesiyle eşleşecek şekilde ayarlayarak birleştirme sorunlarını çözmek için parçalara ayırma işlemi kullanılabilir.
Örneğin, bir iş ortağının envanteri 2 ayrı sistemde bulunan 2 bölgeye (ABD ve AB envanteri) ayrılmış olsun.
İş ortağı, her feed'i 2 dosyaya (veya parçaya) bölebilir:
- Satıcı feed'i: ABD için 1 parça, AB için 1 parça
- Hizmetler feed'i: ABD için 1, AB için 1 bölüm
- Kullanılabilirlik feed'i: ABD için 1, AB için 1 bölüm
Feed'lerin doğru şekilde işlendiğinden emin olmak için aşağıdaki adımları uygulayın:
- Bir yükleme planına karar verin ve her envanter örneğini planı izleyecek şekilde yapılandırın.
- Her örnek için benzersiz parça numaraları atayın (ör. ABD = N, AB = N + 1).
total_shards
değerini toplam parça sayısına ayarlayın. - Planlanan her yükleme zamanında
generation_timestamp
venonce
'ye karar verin.FeedMetadata
içinde, tüm örnekleri bu iki alan için aynı değerleri içerecek şekilde ayarlayın.generation_timestamp
, mevcut veya yakın geçmiş olmalıdır (ideal olarak iş ortağının veritabanında okunma zaman damgası)
- Tüm parçalar yüklendikten sonra Google, parçaları
generation_timestamp
venonce
ile gruplandırır.
Her bir parça, iş ortağının envanterin farklı bir bölgesini temsil etse ve generation_timestamp
tüm parçalarda aynı olduğu sürece günün farklı bir saatinde yüklenmiş olsa bile Google, feed'i tek bir feed olarak işler.
Bölgeye göre ayrılmış kullanılabilirlik feed'i örneği
0. Kırıntı - ABD Envanteri
{ "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. Kırıntı - AB Envanteri
{ "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" } ] } ] }