وقد يكون من الضروري تقسيم الخلاصات إلى عدة ملفات حسب المستودع الإعلاني.
متى أستخدم عملية التقسيم إلى أجزاء؟
يتجاوز حجم الخلاصة 200 ميغابايت لملف واحد (بعد ضغط gzip).
- مثال: يبلغ حجم خلاصة مدى التوفّر التي تم إنشاؤها 1 غيغابايت. ويجب تقسيم هذا العنصر إلى أكثر من 5 ملفات منفصلة (أو أجزاء).
يتم توزيع مستودع الشركاء على الأنظمة و/أو المناطق ما يؤدي إلى صعوبة في تسوية المستودع.
- مثال: يملك الشريك مستودعًا إعلانيًا في الولايات المتحدة والاتحاد الأوروبي في أنظمة منفصلة. قد يتم إنشاء الخلاصة باستخدام ملفَّين (أو أجزاء)، أحدهما للولايات المتحدة
والآخر للاتحاد الأوروبي باستخدام السمة
nonce
وgeneration_timestamp
نفسها.
- مثال: يملك الشريك مستودعًا إعلانيًا في الولايات المتحدة والاتحاد الأوروبي في أنظمة منفصلة. قد يتم إنشاء الخلاصة باستخدام ملفَّين (أو أجزاء)، أحدهما للولايات المتحدة
والآخر للاتحاد الأوروبي باستخدام السمة
قواعد عامة
- يجب ألا يتجاوز كل جزء 200 ميغابايت لملف واحد (بعد ضغط 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" } ] } ] }
استخدام عملية التقسيم إلى أجزاء للمستودع الموزع للشريك
قد يصعُب على الشركاء دمج المستودع الإعلاني الذي يتم توزيعه على أنظمة و/أو مناطق متعددة في خلاصة واحدة. يمكن استخدام التجزئة لحل تحديات التسوية من خلال ضبط كل جزء لمطابقة مجموعة المستودعات الخاصة بكل نظام موزّع.
على سبيل المثال، لنفترض أنّ مستودع الشريك مقسّم إلى منطقتَين (مستودع الولايات المتحدة والاتحاد الأوروبي)، اللتين تتوفران في نظامَين منفصلَين.
يمكن للشريك تقسيم كل خلاصة إلى ملفَين (أو جزأين):
- خلاصة التجّار: جزء واحد للولايات المتحدة وجزء واحد للاتحاد الأوروبي
- خلاصة الخدمات: جزء واحد للولايات المتحدة وجزء واحد للاتحاد الأوروبي
- خلاصة مدى التوفّر: جزء واحد للولايات المتحدة وجزء واحد للاتحاد الأوروبي
اتّبِع الخطوات التالية لضمان معالجة الخلاصات بشكل صحيح:
- اختَر جدولاً زمنيًا للتحميل، واضبط كل مثيل من المستودع لاتّباع الجدول الزمني.
- عيِّن أرقامًا فريدة للأجزاء لكل مثيل (مثل 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" } ] } ] }