ملفات الخلاصة المجزّأة

استنادًا إلى مستودعك، قد يكون من الضروري تقسيم الخلاصات إلى ملفات متعددة (أو تقسيمها).

حالات استخدام التقسيم

  • حجم الخلاصة أكبر من 200 ميغابايت لملف واحد (بعد ضغط gzip)

    • مثال: حجم خلاصة مدى التوفّر التي تم إنشاؤها هو 1 غيغابايت. يجب أن تتم تقسيمها إلى 5 ملفات (أو أجزاء) منفصلة أو أكثر.
  • يتم توزيع مستودع الشركاء على مستوى الأنظمة و/أو المناطق، مما يؤدي إلى صعوبة تسوية المستودع.

    • مثال: لدى الشريك مستودع إعلاني في الولايات المتحدة والاتحاد الأوروبي على نظامَين منفصلَين. يمكن إنشاء الخلاصة باستخدام ملفين (أو شريحة)، أحدهما للولايات المتحدة والآخر للاتحاد الأوروبي باستخدام nonce و generation_timestamp نفسهما.

قواعد عامة

  • لا يمكن أن يتجاوز حجم كل جزء 200 ميغابايت لملف واحد (بعد ضغط gzip).
  • ننصحك بعدم استخدام أكثر من 20 شريحة لكل خلاصة. إذا كان لديك مبرر تجاري يتطلب مبلغًا أكبر، يُرجى التواصل مع فريق الدعم للحصول على مزيد من التعليمات.
  • يجب إرسال السجلات الفردية (عنصر Merchant واحد مثلاً) في شريحة واحدة، ولا يمكن تقسيمها على شرائح متعددة. ومع ذلك، ليس من الضروري إرسالها في الشريحة باستخدام shard_number نفسه للخلاصات المستقبلية.
  • للحصول على أداء أفضل، يجب تقسيم بياناتك بالتساوي بين الأجزاء حتى تكون جميع الملفات المجزّأة متشابهة في الحجم.

كيفية تقسيم الخلاصات

يمكنك تقسيم خلاصة الأحداث عن طريق تقسيم ملف JSON واحد إلى ملفات JSON منفصلة تحتوي على أحداث غير متداخلة وتعديل ملف وصف JSON باستخدام قائمة بأسماء ملفات JSON.

إجراء مقترَح: لكل ملف (أو جزء)، اضبط اسم الملف للإشارة إلى نوع الخلاصة والطابع الزمني ورقم الجزء. يجب أن تكون الأجزاء متساوية تقريبًا في الحجم، ويتمّت معالجتها بعد تحميل جميع الأجزاء.

مثال على القسمة

ملف الوصف: event.feeddata.v1_1728306001.filedescriptor.json

{
  "generation_timestamp": 1728306001,
  "name": "event.feeddata.v1",
  "data_file": [
    "event.feeddata.v1_1728306001_001.json",
    "event.feeddata.v1_1728306001_002.json"
  ]
}

الجزء 0: event.feeddata.v1_1728306001_001.json

{
  "data": [
    {
      "id": "event-1",
      ...
    },
    {
      "id": "event-2",
      ...
    }
  ]
}

الجزء 1: event.feeddata.v1_1728306001_002.json

{
  "data": [
    {
      "id": "event-3",
      ...
    },
    {
      "id": "event-4",
      ...
    }
  ]
}

أقسام المستودع الإعلاني الموزَّع من الشركاء

قد يكون من الصعب على الشركاء دمج المستودع الإعلاني الموزّع على أنظمة و/أو مناطق متعدّدة في خلاصة واحدة. يمكن استخدام ميزة "تقسيم البيانات" لحلّ مشاكل التوافق من خلال ضبط كل جزء لتطابق كل مجموعة مستودع للنظام الموزّع.

على سبيل المثال، لنفترض أنّ مستودع الشريك مُقسَّم إلى منطقتَين (مستودع الولايات المتحدة والاتحاد الأوروبي)، وكلاهما مُدرَج في نظامَين منفصلَين.

يمكن للشريك تقسيم كل خلاصة إلى ملفين (أو جزءَين):

اتّبِع الخطوات التالية لضمان معالجة الخلاصات بشكل صحيح:

  1. حدِّد جدولاً زمنيًا لتحميل المحتوى، واضبط كل مثيل من المستودع لكي يليد جدولك الزمني.
  2. يمكنك تخصيص أرقام شرائح فريدة لكل مثيل (مثل الولايات المتحدة = N، والاتحاد الأوروبي = N + 1). اضبط total_shards على إجمالي عدد الأجزاء.
  3. في كل وقت محدّد لتحميل المحتوى، حدِّد generation_timestamp. في الإعداد، يجب أن تحتوي جميع أسماء الملفات على القيم نفسها في هذين الحقلين، ويجب إدراج جميع أسماء الملفات المتوقّعة فيملف الوصف.
    • يجب أن يكون generation_timestamp حاليًا أو مؤخرًا (من الأفضل استخدام الطابع الزمني لقراءة الشريك في قاعدة البيانات).
  4. بعد تحميل كل الأجزاء، تُجمِّع Google الأجزاء باستخدام generation_timestamp وnonce.

ستعالج Google الخلاصة كوحدة واحدة على الرغم من أنّ كل جزء يمثّل منطقة مختلفة من مستودع الشريك ويمكن تحميله في وقت مختلف من اليوم طالما أنّ generation_timestamp هو نفسه في جميع الأجزاء.