الانتقال إلى المحتوى الرئيسي

نظام إدارة قواعد بيانات حقيقي قائم على الأعمدة

في نظام إدارة قواعد بيانات حقيقي قائم على الأعمدة، لا تُخزَّن أي بيانات إضافية مع القيم. وهذا يعني ضرورة دعم القيم ذات الطول الثابت لتجنّب تخزين “رقم” الطول إلى جانب القيم. فعلى سبيل المثال، ينبغي أن تستهلك مليار قيمة من النوع UInt8 نحو 1 GB من البيانات غير المضغوطة، وإلا فسيؤثر ذلك بشدة في استخدام CPU. ومن الضروري تخزين البيانات بصورة مدمجة (من دون أي “شوائب”) حتى عندما تكون غير مضغوطة، لأن سرعة فك الضغط (استخدام CPU) تعتمد أساسًا على حجم البيانات غير المضغوطة. وهذا بخلاف الأنظمة التي يمكنها تخزين قيم الأعمدة المختلفة بصورة منفصلة، لكنها لا تستطيع معالجة الاستعلامات التحليلية بكفاءة بسبب تحسينها لسيناريوهات أخرى، مثل HBase وBigtable وCassandra وHypertable. ففي هذه الأنظمة ستحصل على معدل نقل يبلغ نحو مئة ألف صف في الثانية، لا مئات الملايين من الصفوف في الثانية. أخيرًا، ClickHouse هو نظام إدارة قواعد بيانات، وليس قاعدة بيانات واحدة. فهو يتيح إنشاء الجداول وقواعد البيانات في وقت التشغيل، وتحميل البيانات، وتشغيل الاستعلامات من دون إعادة تهيئة الخادم أو إعادة تشغيله.

ضغط البيانات

لا تستخدم بعض أنظمة إدارة قواعد البيانات القائمة على الأعمدة ضغط البيانات. ومع ذلك، يؤدي ضغط البيانات دورًا أساسيًا في تحقيق أداء ممتاز. إضافةً إلى ترميزات الضغط العامة الفعّالة ذات المفاضلات المختلفة بين مساحة القرص واستهلاك CPU، يوفّر ClickHouse ترميزات متخصصة لأنواع محددة من البيانات، مما يتيح لـ ClickHouse منافسة قواعد البيانات الأكثر تخصصًا، مثل قواعد بيانات السلاسل الزمنية، والتفوّق عليها.

تخزين البيانات على القرص

إن الاحتفاظ بالبيانات مرتبةً فعليًا حسب المفتاح الأساسي يتيح استخراجها استنادًا إلى قيم محددة أو نطاقات من القيم بزمن استجابة منخفض لا يتجاوز بضع عشرات من المللي ثانية. وبعض أنظمة إدارة قواعد البيانات القائمة على الأعمدة، مثل SAP HANA وGoogle PowerDrill، لا يمكنها العمل إلا في RAM. ويتطلب هذا النهج تخصيص ميزانية عتادية أكبر من اللازم للتحليل في الوقت الفعلي. صُمم ClickHouse للعمل على الأقراص الصلبة العادية، ما يعني أن تكلفة تخزين البيانات لكل GB منخفضة، مع الاستفادة الكاملة أيضًا من SSD وRAM الإضافية إذا كانا متاحين.

المعالجة المتوازية على عدة أنوية

تُعالَج الاستعلامات الكبيرة بالتوازي تلقائيًا، مع الاستفادة من جميع الموارد اللازمة المتاحة على الخادم الحالي.

المعالجة الموزعة على عدة خوادم

لا يكاد أيٌّ من نظم إدارة قواعد البيانات القائمة على الأعمدة المذكورة أعلاه يدعم معالجة الاستعلامات الموزعة. في ClickHouse، يمكن أن تكون البيانات موزعة على أجزاء مختلفة. ويمكن أن يكون كل جزء مجموعةً من النسخ المتماثلة تُستخدم لتحمّل الأعطال. وتُستخدم جميع الأجزاء لتشغيل الاستعلام بالتوازي، بشكل شفاف للمستخدم.

دعم SQL

يدعم ClickHouse لغة استعلام تصريحية تستند إلى SQL، وهي متوافقة إلى حدّ كبير مع معيار ANSI SQL. تشمل الاستعلامات المدعومة GROUP BY، وORDER BY، والاستعلامات الفرعية ضمن FROM، وبند JOIN، والمعامل IN، وwindow functions، والاستعلامات الفرعية ذات القيمة المفردة. الاستعلامات الفرعية المترابطة (التابعة) غير مدعومة وقت كتابة هذه السطور، لكنها قد تصبح متاحة في المستقبل.

محرك الحوسبة المتجهية

لا تُخزَّن البيانات في أعمدة فقط، بل تُعالَج أيضًا على هيئة متجهات (أجزاء من الأعمدة)، مما يتيح كفاءة عالية في استخدام CPU.

إدراج البيانات في الوقت الفعلي

يدعم ClickHouse الجداول ذات المفتاح الأساسي. ولتنفيذ الاستعلامات بسرعة على نطاق المفتاح الأساسي، تُرتَّب البيانات تدريجيًا باستخدام MergeTree. وبفضل ذلك، يمكن إضافة البيانات إلى الجدول باستمرار. ولا تُؤخذ أي أقفال عند استيعاب بيانات جديدة.

الفهارس الأساسية

إن فرز البيانات فعليًا حسب المفتاح الأساسي يتيح استخراجها استنادًا إلى قيم محددة أو نطاقات من القيم بزمن استجابة منخفض، في أقل من بضع عشرات من المللي ثانية.

الفهارس الثانوية

على عكس أنظمة إدارة قواعد البيانات الأخرى، لا تُشير الفهارس الثانوية في ClickHouse إلى صفوف بعينها أو نطاقات من الصفوف. وبدلاً من ذلك، تتيح لقاعدة البيانات معرفة مسبقًا بأن جميع الصفوف في بعض أجزاء البيانات لن تطابق شروط التصفية في الاستعلام، لذا لا تتم قراءتها أصلًا، ولهذا تُسمى فهارس تخطي البيانات.

مناسب للاستعلامات الآنية

لا تهدف معظم أنظمة إدارة قواعد البيانات من نوع OLAP إلى تنفيذ استعلامات آنية بزمن استجابة يقل عن ثانية. وفي الأنظمة البديلة، غالبًا ما يُعدّ زمن إنشاء التقارير الذي يبلغ عشرات الثواني، أو حتى دقائق، أمرًا مقبولًا. وأحيانًا يستغرق ذلك وقتًا أطول، مما يضطر الأنظمة إلى إعداد التقارير دون اتصال مسبقًا (سلفًا أو بالردّ: “عُد لاحقًا”). في ClickHouse، تعني “زمن الاستجابة المنخفض” أن الاستعلامات يمكن معالجتها من دون تأخير ومن دون محاولة إعداد الإجابة مسبقًا، في اللحظة نفسها التي تُحمَّل فيها صفحة واجهة المستخدم — أي، بعبارة أخرى، آنيًا.

دعم الحسابات التقريبية

يوفّر ClickHouse عدة طرق للمفاضلة بين الدقة والأداء:
  1. الدوال التجميعية لإجراء حسابات تقريبية لعدد القيم المميّزة، والوسيطات، والكوانتايلات.
  2. تشغيل استعلام استنادًا إلى جزء (SAMPLE) من البيانات والحصول على نتيجة تقريبية. في هذه الحالة، تُسترجع كمية أقل من البيانات من القرص بشكل متناسب.
  3. إجراء تجميع لعدد محدود من المفاتيح العشوائية بدلًا من جميع المفاتيح. وفي ظل شروط معيّنة لتوزيع المفاتيح في البيانات، يوفّر ذلك نتيجة دقيقة بدرجة معقولة مع استخدام موارد أقل.

خوارزمية JOIN التكيفية

يختار ClickHouse بشكل تكيّفي طريقة JOIN بين عدة جداول، مع تفضيل hash join واللجوء إلى merge join إذا كان هناك أكثر من جدول كبير.

دعم تكرار البيانات وسلامة البيانات

يستخدم ClickHouse التكرار غير المتزامن متعدد المصادر الرئيسية. بعد كتابة البيانات إلى أي نسخة متماثلة متاحة، تسترجع جميع النسخ المتماثلة المتبقية نُسخها في الخلفية. ويحافظ النظام على تطابق البيانات عبر النسخ المتماثلة المختلفة. ويُجرى التعافي بعد معظم حالات الفشل تلقائيًا، أو شبه تلقائي في الحالات المعقدة. لمزيد من المعلومات، راجع قسم تكرار البيانات.

التحكم في الوصول المستند إلى الأدوار

يعتمد ClickHouse على استعلامات SQL لإدارة حسابات المستخدمين، ويوفّر إعدادات التحكم في الوصول المستند إلى الأدوار على نحو مماثل لما هو موجود في معيار ANSI SQL وأنظمة إدارة قواعد البيانات العلائقية الشائعة.

ميزات قد تُعدّ عيوبًا

  1. لا توجد معاملات متكاملة بالكامل.
  2. لا تتوفر إمكانية تعديل البيانات المُدرجة مسبقًا أو حذفها بمعدلات عالية وبزمن استجابة منخفض. تتوفر عمليات حذف وتحديث مجمّعة لتنظيف البيانات أو تعديلها، على سبيل المثال، للامتثال لـ GDPR.
  3. يجعل الفهرس المتناثر ClickHouse أقل كفاءة في الاستعلامات النقطية التي تسترجع صفوفًا فردية بحسب مفاتيحها.
آخر تعديل في ٢٩ يونيو ٢٠٢٦