आपकी इन्वेंट्री के आधार पर, शार्डिंग (या फ़ीड को एक से ज़्यादा हिस्सों में बांटना) फ़ाइलें) ज़रूरी हो सकती हैं.
शार्डिंग का इस्तेमाल कब करना चाहिए
एक फ़ाइल के लिए फ़ीड का साइज़ 200 एमबी से ज़्यादा है (gzip कंप्रेस करने के बाद).
- उदाहरण: प्रॉडक्ट की उपलब्धता के बारे में जनरेट किया गया फ़ीड 1 जीबी का है. यह ऐसा होना चाहिए 5+ अलग-अलग फ़ाइलों (या शार्ड) में शार्ड किए जाते हैं.
पार्टनर इन्वेंट्री को सिस्टम और/या क्षेत्रों के हिसाब से बांटा जाता है जिससे इन्वेंट्री का मिलान करने में कठिनाई होती है.
- उदाहरण: पार्टनर की इन्वेंट्री, अमेरिका और ईयू (यूरोपीय संघ) में है, जो अलग-अलग जगहों पर मौजूद हैं
सिस्टम. फ़ीड 2 फ़ाइलों (या शार्ड) के साथ जनरेट की जा सकती है, 1 अमेरिका के लिए,
और यूरोपीय संघ के लिए 1 और साथ ही, दोनों में समान
nonce
औरgeneration_timestamp
.
- उदाहरण: पार्टनर की इन्वेंट्री, अमेरिका और ईयू (यूरोपीय संघ) में है, जो अलग-अलग जगहों पर मौजूद हैं
सिस्टम. फ़ीड 2 फ़ाइलों (या शार्ड) के साथ जनरेट की जा सकती है, 1 अमेरिका के लिए,
और यूरोपीय संघ के लिए 1 और साथ ही, दोनों में समान
सामान्य नियम
- 1 फ़ाइल के लिए हर शार्ड 200 MB से ज़्यादा नहीं हो सकता (gzip संपीड़न के बाद).
- हमारा सुझाव है कि हर फ़ीड में 20 से ज़्यादा शार्ड न डालें. अगर आपके कारोबार की वजह से उससे ज़्यादा रकम की ज़रूरत है, तो ज़्यादा जानकारी के लिए कृपया सहायता टीम से संपर्क करें.
-
अलग-अलग रिकॉर्ड (उदाहरण के लिए एक
Merchant
ऑब्जेक्ट) एक शार्ड में भेजे जाने चाहिए, उन्हें एक से ज़्यादा शार्ड में नहीं बांटा जा सकता. हालांकि, उन्हें शार्ड में भेजने की आवश्यकता नहीं होती आने वाले समय के फ़ीड के लिए, उसीshard_number
के साथ. - बेहतर परफ़ॉर्मेंस के लिए, आपका डेटा एक-दूसरे के बीच बराबर-बराबर बांटा जाना चाहिए इसलिए शार्ड डालें, ताकि सभी शार्ड फ़ाइलें एक समान आकार की हों.
फ़ीड को शार्ड कैसे करें
हर फ़ाइल (या शार्ड) के लिए, FeedMetadata
को
फ़ॉलो किया जा रहा है:
processing_instruction
इस पर सेट करेंPROCESS_AS_COMPLETE
.shard_number
को फ़ीड के वर्तमान शार्ड पर सेट किया गया (0 सेtotal_shards
से 1 तक, बिना रुकावट के)total_shards
को शार्ड की कुल संख्या पर सेट किया गया फ़ीड (1 से शुरू).nonce
ऐसे यूनीक आइडेंटिफ़ायर पर सेट है जो समान है एक ही फ़ीड के सभी शार्ड में लेकिन इनके मान से अलग अन्य फ़ीड.generation_timestamp
, Unix और EPOCH में टाइमस्टैंप है फ़ॉर्मैट. यह फ़ीड के सभी शार्ड में एक समान होना चाहिए.
सुझाव: हर फ़ाइल (या शार्ड) के लिए, फ़ाइल नाम को यह बताने के लिए सेट करें फ़ीड का टाइप, टाइमस्टैंप, शार्ड नंबर, और शार्ड. शार्ड का साइज़ करीब-करीब बराबर होना चाहिए. साथ ही, सभी को एक बार प्रोसेस किया जाना चाहिए शार्ड अपलोड कर दिए जाते हैं.
Example:
“availability_feed_1574117613_001_of_002.json.gz”
खरीदारी के लिए उपलब्धता के फ़ीड का उदाहरण
शार्ड 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
{ "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
{ "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" } ] } ] }
पार्टनर की ओर से डिस्ट्रिब्यूट की गई इन्वेंट्री के लिए, शार्डिंग का इस्तेमाल करना
पार्टनर के लिए, इन्वेंट्री को एक ही जगह पर दिखाने में समस्या आ सकती है कई सिस्टम और या क्षेत्रों की ज़रूरतों को पूरा करने के लिए, एक ही फ़ीड का इस्तेमाल करें. शार्डिंग इसका इस्तेमाल, समाधान से जुड़ी चुनौतियों को हल करने के लिए किया जाता है. इसके लिए, हर शार्ड को एक-दूसरे से मैच करने के लिए सेट किया जाता है इन्वेंट्री सेट में शामिल है.
उदाहरण के लिए, मान लें कि किसी पार्टनर की इन्वेंट्री को दो क्षेत्रों (अमेरिका और यूरोपीय संघ) में बांटा गया है इन्वेंट्री) होती हैं, जो दो अलग-अलग सिस्टम में होती हैं.
पार्टनर हर फ़ीड को दो फ़ाइलों (या शार्ड) में बांट सकता है:
- व्यापारियों का फ़ीड: अमेरिका के लिए 1 शार्ड और यूरोपीय संघ के लिए 1 शार्ड
- सेवा फ़ीड: अमेरिका के लिए 1 शार्ड, यूरोपीय संघ के लिए 1 शार्ड
- उपलब्धता फ़ीड: अमेरिका के लिए 1 शार्ड, यूरोपीय संघ के लिए 1 शार्ड
यह पक्का करने के लिए कि फ़ीड सही तरीके से प्रोसेस हो रहे हैं, नीचे दिया गया तरीका अपनाएं:
- अपलोड करने का शेड्यूल तय करें. साथ ही, इन्वेंट्री के हर इंस्टेंस को इस हिसाब से कॉन्फ़िगर करें शेड्यूल फ़ॉलो करें.
- हर इंस्टेंस के लिए यूनीक शार्ड नंबर असाइन करें (उदाहरण के लिए, US = N, EU = N + 1).
total_shards
को शार्ड की कुल संख्या पर सेट करें. - शेड्यूल किए गए हर अपलोड के समय के हिसाब से
generation_timestamp
औरnonce
. इसFeedMetadata
, सभी इंस्टेंस के लिए, करते हैं.generation_timestamp
मौजूदा या हाल ही की तारीख होनी चाहिए (आम तौर पर, पार्टनर के डेटाबेस का टाइमस्टैंप देखा जा सकता है)
- सभी शार्ड अपलोड हो जाने के बाद, Google इनके माध्यम से शार्ड का समूह बना देता है
generation_timestamp
औरnonce
.
Google फ़ीड को एक के रूप में प्रोसेस करेगा, भले ही हर शार्ड
पार्टनर की इन्वेंट्री के अलग-अलग हिस्सों को दिखाया जा सकता है. साथ ही, इस जानकारी को
generation_timestamp
के हिसाब से दिन के अलग-अलग समय
सभी शार्ड में एक जैसा होता है.
इलाके के हिसाब से खरीदारी के लिए उपलब्धता फ़ीड का उदाहरण
शार्ड 0 - अमेरिकी इन्वेंट्री
{ "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 - ईयू इन्वेंट्री
{ "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" } ] } ] }