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ırmasından sonra).
- Örnek: Oluşturulan stok durumu feed'i 1 GB. Bu, 5 veya daha fazla ayrı dosyaya (veya parçaya) bölünmelidir.
İş ortağı envanteri, sistemlere ve/veya bölgelere dağıtıldığından envanterin mutabakatı zorlaşır.
- Örnek: İş ortağının ayrı sistemlerde bulunan ABD ve AB envanteri var. Feed, 2 dosya (veya parça) ile oluşturulabilir. Bunlardan biri ABD, diğeri ise AB için olup aynı
noncevegeneration_timestampdeğerlerini içerir.
- Örnek: İş ortağının ayrı sistemlerde bulunan ABD ve AB envanteri var. Feed, 2 dosya (veya parça) ile oluşturulabilir. Bunlardan biri ABD, diğeri ise AB için olup aynı
Genel kurallar
- Her 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 olmasını öneririz. Bu miktardan daha fazlasını gerektiren bir iş gerekçeniz varsa lütfen daha fazla bilgi için destek ekibiyle iletişime geçin.
-
Tek tek kayıtlar (örneğin, bir
Merchantnesnesi) tek bir parçada gönderilmelidir. Birden fazla parçaya bölünemez. Ancak gelecekteki feed'ler için aynıshard_numberile gönderilmeleri gerekmez. - Daha iyi performans için verileriniz parçalar arasında eşit şekilde bölünmelidir. Böylece, tüm parçalanmış dosyalar benzer boyutta olur.
Feed'leri parçalama
Her dosya (veya parça) için FeedMetadata değerini aşağıdakilere ayarlayın:
processing_instructiondeğeriPROCESS_AS_COMPLETEolarak ayarlandı.shard_number, feed'in geçerli parçası olarak ayarlanır. (0'dan başlayaraktotal_shards- 1'e kadar kesintisiz)total_shardsfeed'i için toplam parça sayısına (1'den başlayarak) ayarlanır.nonceAynı feed'in tüm parçalarında aynı olan ancak diğer feed'lerin değerinden farklı olan benzersiz bir tanımlayıcıya ayarlanmalıdı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 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çalanmış 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çalama 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çalama 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 dağıtılmış sistemin envanter kümesiyle 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 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 parça, AB için 1 parça
- Stok durumu feed'i: ABD için 1 parça, AB için 1 parça
Feed'lerin düzgün şekilde işlendiğinden emin olmak için aşağıdaki adımları uygulayın:
- Yükleme programına karar verin ve envanterin her örneğini programa uyacak şekilde yapılandırın.
- Her örnek için benzersiz parça numaraları atayın (ör. ABD = N, AB = N + 1).
total_shardsdeğerini toplam parça sayısına ayarlayın. - Planlanan her yükleme saatinde bir
generation_timestampvenonceseçin.FeedMetadatabölümünde, tüm örnekleri bu iki alan için aynı değerleri içerecek şekilde ayarlayın.generation_timestamp, geçerli veya yakın geçmiş olmalıdır (ideal olarak, iş ortağının okuma zamanı veritabanı zaman damgası).
- Tüm parçalar yüklendikten sonra Google, parçaları
generation_timestampvenoncearacılığıyla gruplandırır.
Her parça, iş ortağının envanterinin farklı bir bölgesini temsil etse ve generation_timestamp tüm parçalarda aynı olduğu sürece günün farklı saatlerinde yüklenebilse de Google, feed'i tek bir feed olarak işler.
Bölgeye göre parçalanmış stok durumu feed'i örneği
Shard 0 - US Inventory
{
"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"
}
]
}
]
}Shard 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"
}
]
}
]
}