قد يكون التقسيم إلى أجزاء (أو تقسيم الخلاصات إلى ملفات متعددة) ضروريًا حسب مستودعك.
حالات استخدام التقسيم
تتجاوز الخلاصة 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"
}
]
}
]
}Shard 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"
}
]
}
]
}استخدام التقسيم إلى أجزاء للمستودع الإعلاني الموزّع الخاص بالشركاء
قد يواجه الشركاء صعوبة في دمج المستودع الإعلاني الموزّع على أنظمة أو مناطق متعدّدة في خلاصة واحدة. يمكن استخدام التقسيم إلى أجزاء لحلّ مشاكل التسوية من خلال ضبط كل جزء ليتطابق مع مجموعة المستودع لكل نظام موزّع.
على سبيل المثال، لنفترض أنّ مستودع شركاء مقسّم إلى منطقتَين (مستودع الولايات المتحدة ومستودع الاتحاد الأوروبي)، وأنّ كل منطقة تستخدم نظامًا منفصلاً.
يمكن للشريك تقسيم كل خلاصة إلى ملفَين (أو أجزاء):
- خلاصة التجّار: جزء واحد للولايات المتحدة، وجزء واحد للاتحاد الأوروبي
- خلاصة الخدمات: جزء واحد للولايات المتحدة، وجزء واحد للاتحاد الأوروبي
- خلاصة بيانات مدى التوفّر: جزء واحد للولايات المتحدة، وجزء واحد للاتحاد الأوروبي
اتّبِع الخطوات التالية لضمان معالجة الخلاصات بشكلٍ سليم:
- حدِّد جدولاً زمنيًا للتحميل، واضبط كل مستودع إعلاني ليتّبع الجدول الزمني.
- حدِّد أرقامًا فريدة للأجزاء لكل نسخة (مثلاً، الولايات المتحدة = N، الاتحاد الأوروبي = 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"
}
]
}
]
}