Envanterinize bağlı olarak, parçalama (veya feed'leri birden fazla dosyaya bölme) gerekebilir.
Parçalama ne zaman kullanılır?
Feed, 1 dosya için 200 MB'ı aşıyor (gzip sıkıştırma işleminden sonra).
- Örnek: Oluşturulan stok durumu feed'i 1 GB'tır. Bu, 5'ten fazla ayrı dosyaya (veya parçaya) parçalanır.
İş ortağı envanteri, sistemler ve/veya bölgeler arasında dağıtılır. Bu sayede, envanter mutabakatında zorluk yaşarsınız.
- Örnek: İş ortağının ayrı sistemlerde bulunan ABD ve AB envanteri vardır. Feed, aynı
nonce
vegeneration_timestamp
değerlerine sahip 1 dosya (veya ABD için) ve AB için 1 dosya (veya parça) ile 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ırma işleminden sonra).
- Özet akışı başına en fazla 20 parça kullanmanızı öneririz. Bir işletme gerekçeniz bu tutarın üzerinde olmalıdır. Daha fazla talimat için lütfen destek ekibiyle iletişime geçin.
-
Tek tek parçalar (örneğin, bir
Merchant
nesnesi) tek bir parçada gönderilmelidir. Birden fazla parçaya bölünemezler. Ancak bu API'lerin sonraki feed'ler için parçada aynıshard_number
ile gönderilmesi gerekmez. - Daha iyi performans için verilerinizin parçalarına eşit olarak bölünmesi gerekir. Böylece, tüm kırık dosyaların boyutu benzer olur.
Feed'leri parçalama
Her dosya (veya parça) için FeedMetadata
değerini şu şekilde ayarlayın:
processing_instruction
PROCESS_AS_COMPLETE
olarak ayarlandı.shard_number
, feed'in mevcut kırığına (0'dantotal_shards
- 1'den itibaren aralıksız olarak) ayarlandıtotal_shards
, feed için toplam parça sayısına (1'den başlayarak) ayarlandı.nonce
, aynı feed'in tüm parçalarında aynı ancak diğer feed'lerin değerinden farklı olan benzersiz bir tanımlayıcı olarak ayarlandı.generation_timestamp
, unix ve EPOCH biçimindeki zaman damgasıdır. Bu, feed'in tüm parçalarında aynı olmalıdır.
Önerilen: Her dosya (veya kırık) için dosya adını; feed türünü, zaman damgasını, kırık numarasını ve toplam kırık sayısını belirtecek şekilde ayarlayın. Kırıklar yaklaşık olarak eşit boyutta olmalıdır ve tüm kırıklar yüklendikten sonra işlenir.
Example:
"availability_feed_1574117613_001_of_002.json.gz"
Parçalı Stok Durumu feed örneği
Kırık 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. Kırık
{ "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. Kırık
{ "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 parçalamayı kullanma
İş ortaklarının birden fazla sistem ve/veya bölge genelinde dağıtılan envanteri tek bir feed'de birleştirmesi zor olabilir. Parçalama, her bir kırığı dağıtılan her sistemin envanter grubuyla eşleşecek şekilde ayarlayarak mutabakat zorluklarını çözmek için kullanılabilir.
Örneğin, bir iş ortağının envanterinin 2 ayrı sisteme (ABD ve AB envanteri) ayrıldığını varsayalım.
İş ortağı, her feed'i 2 dosyaya (veya parçaya) ayırabilir:
- Satıcı feed'i: ABD için 1 parça, AB için 1 parça
- Hizmetler feed'i: ABD için 1 parça, AB için 1 parça
- Kullanılabilirlik feed'i: ABD için 1 parça, AB için 1 parça
Feed'lerin doğru şekilde işlendiğinden emin olmak için aşağıdaki adımları uygulayın:
- Yükleme planına karar verin ve her envanter örneğini bu planı destekleyecek şekilde yapılandırın.
- Her örnek için benzersiz parça numaraları atayın (ör. US = N, EU = N + 1).
total_shards
değerini toplam kırık sayısına ayarlayın. - Planlanan her yükleme saatinde bir
generation_timestamp
venonce
seçin.FeedMetadata
bölümünde, tüm örnekleri bu iki alan için aynı değerleri barındıracak şekilde ayarlayın.generation_timestamp
güncel veya kısa süre önce geçmiş olmalıdır (ideal olarak iş ortağının okuma veritabanı zaman damgası)
- Tüm kırıklar yüklendikten sonra Google, kırıkları
generation_timestamp
venonce
aracılığıyla gruplandırır.
Her bir kırık, iş ortağının envanterinin farklı bir bölgesini temsil etse ve generation_timestamp
tüm kırıklarda aynı olduğu sürece Google, feed'i günün farklı bir saatinde yükleyebilir. Bununla birlikte, feed'i tek bir parça olarak işler.
Bölgeye göre parçalı kullanılabilirlik özet akışı örneği
0. Kırık - 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ık - 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" } ] } ] }