Envanterinize bağlı olarak, feed'leri parçalama (veya 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ırmasından sonra).
- Örnek: Oluşturulan müsaitlik durumu feed'i 1 GB'tır. Bu dosya, 5'ten fazla ayrı dosyaya (veya parçaya) bölünmelidir.
İş ortağı envanteri, sistemler ve/veya bölgeler arasında dağıtılır. Bu durum, envanterin mutabık kılınmasını zorlaştırır.
- Örnek: İş ortağı, ayrı sistemlerde bulunan ABD ve AB envanterine sahiptir. Feed, aynı
nonce
vegeneration_timestamp
değerlerine sahip AB için 1, ABD için 1 ve 2 dosya (veya parça) ile oluşturulabilir.
- Örnek: İş ortağı, ayrı sistemlerde bulunan ABD ve AB envanterine sahiptir. Feed, aynı
Genel kurallar
- Her bir parça, 1 dosya için (gzip sıkıştırmasından sonra) 200 MB'ı aşamaz.
- Feed başına en fazla 20 parça kullanılmasını öneririz. Bu miktardan daha fazlasını gerektiren bir işletme gerekçeniz varsa daha fazla talimat için lütfen destek ekibiyle iletişime geçin.
-
Bağımsız kayıtlar (ör. bir
Merchant
nesnesi) tek bir parça halinde gönderilmelidir. Bunlar, birden fazla parçaya bölünemez. Ancak gelecekteki feed'ler için aynıshard_number
ile parçada gönderilmesi gerekmez. - Daha iyi performans için verilerinizin parçalar arasında eşit olarak bölünmesi gerekir. Böylece, tüm parçalanmış dosyalar benzer boyutta olur.
Feed'leri parçalama
Her dosya (veya parça) için FeedMetadata
öğesini şu şekilde ayarlayın:
processing_instruction
PROCESS_AS_COMPLETE
olarak ayarlandı.shard_number
, feed'in geçerli parçasına ayarlandı (0 iletotal_shards
arasında başlangıç - süreksizlikler olmadan 1)total_shards
, feed için toplam parça sayısına ayarlanır (1'den itibaren).nonce
, aynı feed'in tüm parçalarında aynı ancak diğer feed'lerin değerinden farklı olan benzersiz bir tanımlayıcıya ayarlanır.generation_timestamp
, unix ve EPOCH biçimindeki zaman damgasıdır. Bu değer, feed'in tüm parçalarında aynı olmalıdır.
Önerilen: Her dosya (veya parça) için feed türünü, zaman damgasını, parça numarasını ve toplam parça sayısını gösterecek şekilde dosya adını ayarlayın. Parçalar yaklaşık olarak eşit boyutta olmalıdır ve tüm parçalar yüklendikten sonra işlenir.
Example:
“availability_feed_1574117613_001_of_002.json.gz”
Parçalı Stok Durumu feed'i örneği
Parça 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" } ] } ] }
Parça 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" } ] } ] }
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 parçalamayı kullanma
İş ortaklarının, birden fazla sisteme ve veya bölgeye dağıtılmış envanteri tek bir feed'de birleştirmesi zor olabilir. Parçalama, her bir parçayı her bir dağıtılmış sistemin envanter grubuyla eşleşecek şekilde ayarlayarak mutabakat sorunlarını çözmek için kullanılabilir.
Örneğin, bir iş ortağının envanterinin 2 ayrı sistemde bulunan 2 bölgeye (ABD ve AB envanteri) ayrıldığını varsayalım.
İş ortağı her bir 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
- Hizmet 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:
- Bir yükleme planı belirleyin ve her bir envanter örneğini planı takip edecek şekilde yapılandırın.
- Her örnek için benzersiz parça numaraları atayın (ör. ABD = N, AB = N + 1).
total_shards
öğesini toplam parça sayısına ayarlayın. - Planlanan her yükleme zamanında, bir
generation_timestamp
venonce
belirleyin.FeedMetadata
bölümünde tüm örnekleri bu iki alan için aynı değerlere sahip olacak şekilde ayarlayın.generation_timestamp
, güncel veya yakın geçmişte olmalıdır (ideal olarak iş ortağının okuma veritabanı zaman damgası)
- Tüm parçalar yüklendikten sonra Google, kırıkları
generation_timestamp
venonce
aracılığıyla gruplandırır.
Her bir parça, iş ortağı envanterinin 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üklenebilecek olsa da Google, feed'i tek bir feed olarak işler.
Bölgeye göre parçalı stok durumu feed'i örneği
Parça 0 - 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" } ] } ] }
Parça 1 - 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" } ] } ] }