المشكلة
- الذرّية على مستوى جدول واحد في التحميلات المجمّعة: يتمثل أحد الأساليب الشائعة في الإدراج في مفاتيح جزئية مؤقتة، ثم نسخ السجلات إلى المفتاح الفعلي وحذف السجلات المؤقتة. لكن هذا الأسلوب ضعيف الأداء — ولا سيما خطوة الحذف، التي قد تستهلك أكثر من 90% من إجمالي وقت العملية.
- الاتساق عبر جداول متعددة: عندما يحمّل خط المعالجة Table A بنجاح لكنه يفشل في Table B، تكون تغييرات Table A قد اعتُمِدت بالفعل ولا يمكن التراجع عنها. وعند الاستعلام عبر الجدولين، يرى المحللون بيانات غير متزامنة.
الخلفية
INSERT واحدة وقسم واحد: فإذا نجحت عملية INSERT، تصبح جميع الصفوف في تلك الكتلة مرئية؛ وإذا فشلت، فلا يصبح أيٌّ منها مرئيًا. ومع ذلك، لا توجد آلية مضمّنة لاعتماد البيانات ذريًا عبر عدة عمليات إدراج أو عدة جداول.
تعمل أوامر معالجة الأقسام (MOVE PARTITION TO TABLE، REPLACE PARTITION، ATTACH PARTITION FROM) على مستوى البيانات الوصفية عندما يشترك الجدولان المصدر والوجهة في سياسة التخزين نفسها.
وهذا يعني أنها تُنفَّذ بشكل شبه فوري بغض النظر عن حجم البيانات، مما يجعلها لبنات بناء مثالية لأنماط التبديل الذري.
الحل الموصى به
شرح خطوة بخطوة لتحقيق الذرية لجدول واحد
أنشئ جدولًا مرحليًا
استخدم المخطط نفسه، ومفتاح التقسيم، وORDER BY، وسياسة التخزين نفسها كما في جدول الإنتاج.إذا فشل الإدراج، فنفّذ TRUNCATE وأعد المحاولة
نفّذ TRUNCATE للجدول المرحلي ثم أعد تشغيل التحميل. لن تتأثر أي بيانات في الإنتاج.إذا نجح الإدراج، فانقل الأقسام إلى الإنتاج
لنقل البيانات إلى الإنتاج وإزالتها من الجدول المرحلي، استخدمMOVE PARTITION.ATTACH PARTITION.نظّف الجدول المرحلي
بعد نقل جميع الأقسام، نفّذ TRUNCATE للجدول المرحلي ليبقى فارغًا لعملية التحميل التالية.الاتساق عبر جداول متعددة
المتطلبات والقيود
MOVE PARTITION TO TABLE وREPLACE PARTITION وATTACH PARTITION FROM، يجب أن يتطابق جدولَا المصدر والوجهة في ما يلي:
- بنية الأعمدة نفسها
- مفتاح قسم نفسه، ومفتاح
ORDER BYنفسه، والمفتاح الأساسي نفسه - سياسة التخزين نفسها
- يجب أن يتضمن جدول الوجهة جميع الفهارس والإسقاطات الموجودة في جدول المصدر
مثال
المراجع
- إدارة التقسيمات والأجزاء
- لمزيد من المعلومات حول هذه الاستراتيجية، راجع تدوينة المدونة تعزيز عمليات تحميل بيانات ClickHouse الكبيرة لديك - الجزء 3: جعل عمليات تحميل البيانات الكبيرة أكثر متانة.