ما هي أجزاء الجدول في ClickHouse؟
تُنظَّم بيانات كل جدول في ClickHouse ضمن عائلة محركات MergeTree على القرص في شكل مجموعة من
data parts غير القابلة للتغيير.
ولتوضيح ذلك، نستخدم هذا الجدول (المُقتبس من مجموعة بيانات أسعار العقارات في المملكة المتحدة)، والذي يتتبع تاريخ بيع العقارات في المملكة المتحدة وبلدتها وشارعها وسعرها:
عندما يعالج خادم ClickHouse مثال الإدراج الذي يحتوي على 4 صفوف (على سبيل المثال، عبر عبارة INSERT INTO) الموضحة في المخطط أعلاه، فإنه ينفّذ عدة خطوات: ① الفرز: تُفرَز الصفوف بحسب مفتاح الفرز الخاص بالجدول
(town, street)، ويُنشأ فهرس أساسي متناثر للصفوف المُفرَزة.
② التقسيم: تُقسَّم البيانات المُفرَزة إلى أعمدة.
③ الضغط: يُصبح كل عمود مضغوطًا.
④ الكتابة إلى القرص: تُحفَظ الأعمدة المضغوطة كملفات أعمدة ثنائية داخل دليل جديد يمثّل جزء البيانات الخاص بعملية الإدراج. ويُضغط الفهرس الأساسي المتناثر أيضًا ويُخزَّن في الدليل نفسه.
اعتمادًا على المحرك المحدد للجدول، قد تحدث تحويلات إضافية بالتوازي مع الفرز.
تكون أجزاء البيانات مكتفية ذاتيًا، وتشمل جميع البيانات الوصفية اللازمة لتفسير محتوياتها من دون الحاجة إلى كتالوج مركزي. وإلى جانب الفهرس الأساسي المتناثر، تحتوي الأجزاء على بيانات وصفية إضافية، مثل فهارس تخطي البيانات الثانوية، وإحصاءات الأعمدة، وقيم التحقق، وفهارس الحدين الأدنى والأقصى (إذا استُخدم التقسيم)، والمزيد.
دمج الأجزاء
لتقليل عدد الأجزاء الأولية والعبء الإضافي الناتج عن عمليات الدمج، يُنصح عملاء قاعدة البيانات إما بإدراج الصفوف على دفعات كبيرة، مثل 20,000 صف دفعة واحدة، أو باستخدام وضع الإدراج غير المتزامن، حيث يخزّن ClickHouse مؤقتًا الصفوف الواردة من عدة عمليات INSERT إلى الجدول نفسه، ولا ينشئ جزءًا جديدًا إلا بعد أن يتجاوز حجم المخزن المؤقت عتبة قابلة للتهيئة، أو تنتهي مهلة timeout.
مراقبة أجزاء الجدول
_part: