الانتقال إلى المحتوى الرئيسي
ClickHouse® هو نظام إدارة قواعد بيانات SQL عالي الأداء وموجّه بالأعمدة، مخصّص للمعالجة التحليلية عبر الإنترنت (OLAP). وهو متاح بوصفه برنامجًا مفتوح المصدر وكذلك خدمة سحابية.

ما هي التحليلات؟

تشير التحليلات، المعروفة أيضًا باسم OLAP‏ (Online Analytical Processing)، إلى استعلامات SQL التي تتضمن عمليات حسابية معقدة (مثل التجميعات، ومعالجة السلاسل النصية، والعمليات الحسابية) على مجموعات بيانات ضخمة. وعلى عكس استعلامات المعاملات (أو OLTP، Online Transaction Processing) التي لا تقرأ وتكتب سوى عدد قليل من الصفوف في كل استعلام، وبالتالي تكتمل خلال مللي ثانية، فإن استعلامات التحليلات تعالج عادةً مليارات وتريليونات من الصفوف. في كثير من حالات الاستخدام، يجب أن تكون استعلامات التحليلات “في الوقت الفعلي”، أي أن تُرجع نتيجة في أقل من ثانية واحدة.

التخزين الموجَّه بالصفوف مقابل التخزين الموجَّه بالأعمدة

لا يمكن تحقيق هذا المستوى من الأداء إلا باستخدام “التوجّه” الصحيح للبيانات. تُخزّن قواعد البيانات البيانات إما بأسلوب موجَّه بالصفوف أو موجَّه بالأعمدة. في قاعدة بيانات موجَّهة بالصفوف، تُخزَّن صفوف الجدول المتتالية تسلسليًا واحدًا تلو الآخر. ويتيح هذا التنظيم استرجاع الصفوف بسرعة لأن قيم الأعمدة في كل صف تُخزَّن معًا. ClickHouse هي قاعدة بيانات موجَّهة بالأعمدة. في مثل هذه الأنظمة، تُخزَّن الجداول كمجموعة من الأعمدة، أي إن قيم كل عمود تُخزَّن تسلسليًا واحدة تلو الأخرى. ويجعل هذا التنظيم استعادة الصفوف الفردية أكثر صعوبة (لأن هناك الآن فجوات بين قيم الصف)، لكن عمليات الأعمدة مثل التصفية أو التجميع تصبح أسرع بكثير مما هي عليه في قاعدة بيانات موجَّهة بالصفوف. يمكن توضيح هذا الاختلاف بشكل أفضل من خلال query مثال يُنفَّذ على أكثر من 100 مليون صف من بيانات تحليلات ويب حقيقية ومجهولة الهوية:
SELECT MobilePhoneModel, COUNT() AS c
FROM metrica.hits
WHERE
      RegionID = 229
  AND EventDate >= '2013-07-01'
  AND EventDate <= '2013-07-31'
  AND MobilePhone != 0
  AND MobilePhoneModel not in ['', 'iPad']
GROUP BY MobilePhoneModel
ORDER BY c DESC
LIMIT 8;
يمكنك تشغيل هذا الاستعلام على ClickHouse SQL Playground الذي يختار ويُرشّح عدداً قليلاً فقط من بين أكثر من 100 من الأعمدة الموجودة، ويُرجع النتيجة خلال مللي ثوانٍ: كما ترى في قسم الإحصاءات في الرسم التوضيحي أعلاه، عالج الاستعلام 100 مليون صف في 92 مللي ثانية، بمعدل نقل يقارب أكثر من مليار صف في الثانية، أو أقل بقليل من 7 جيجابايت من البيانات المنقولة في الثانية. نظام إدارة قواعد بيانات موجّه للصفوف في قاعدة بيانات موجّهة للصفوف، رغم أن الاستعلام أعلاه لا يعالج سوى عدد قليل من الأعمدة الموجودة، لا يزال النظام بحاجة إلى تحميل بيانات الأعمدة الأخرى الموجودة من القرص إلى الذاكرة. ويرجع ذلك إلى أن البيانات تُخزَّن على القرص في أجزاء تُسمى كتل (عادةً بأحجام ثابتة، مثل 4 كيلوبايت أو 8 كيلوبايت). وتُعد الكتل أصغر وحدات البيانات التي تُقرأ من القرص إلى الذاكرة. عندما يطلب تطبيق أو قاعدة بيانات بياناتً ما، يقرأ النظام الفرعي لإدخال/إخراج القرص في نظام التشغيل الكتل المطلوبة من القرص. وحتى إذا كانت هناك حاجة إلى جزء فقط من الكتلة، تُقرأ الكتلة بالكامل إلى الذاكرة (ويرجع ذلك إلى تصميم القرص ونظام الملفات): نظام إدارة قواعد بيانات موجّه للأعمدة نظرًا لأن قيم كل عمود تُخزَّن تسلسليًا، واحدةً تلو الأخرى على القرص، فلا تُحمَّل أي بيانات غير ضرورية عند تشغيل الاستعلام المذكور أعلاه. ولأن تخزين البيانات ونقلها على مستوى الكتل من القرص إلى الذاكرة يتوافق مع نمط الوصول إلى البيانات في الاستعلامات التحليلية، فلا تُقرأ من القرص إلا الأعمدة المطلوبة للاستعلام، مما يجنّب عمليات الإدخال/الإخراج غير الضرورية للبيانات غير المستخدمة. وهذا أسرع بكثير مقارنةً بالتخزين المستند إلى الصفوف، حيث تُقرأ الصفوف كاملةً (بما في ذلك الأعمدة غير ذات الصلة):

تكرار البيانات وسلامتها

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

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

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

دعم SQL

يدعم ClickHouse لغة استعلام تصريحية تستند إلى SQL، وتتوافق في كثير من الحالات مع معيار ANSI SQL. وتشمل عبارات الاستعلام المدعومة GROUP BY، وORDER BY، والاستعلامات الفرعية ضمن FROM، وبند JOIN، ومعامل IN، ودوال النوافذ، والاستعلامات الفرعية القيَمية.

الحساب التقريبي

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

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

يختار ClickHouse خوارزمية الربط بصورة تكيفية: إذ يبدأ بخوارزميات الربط السريعة المعتمدة على hash، ثم ينتقل إلى خوارزميات الربط بالدمج إذا وُجد أكثر من جدول كبير.

أداء الاستعلامات المتفوق

تشتهر ClickHouse بأداء سريع للغاية في تنفيذ الاستعلامات. لمعرفة سبب سرعة ClickHouse الفائقة، راجع دليل لماذا ClickHouse سريعة؟.
آخر تعديل في ٢٩ يونيو ٢٠٢٦