بدائل الإجراءات المخزنة في ClickHouse
IF/ELSE، والحلقات، وما إلى ذلك).
وهذا قرار تصميمي مقصود يستند إلى معمارية ClickHouse باعتباره قاعدة بيانات تحليلية.
ولا يُنصح باستخدام الحلقات في قواعد البيانات التحليلية، لأن معالجة O(n) من الاستعلامات البسيطة تكون عادةً أبطأ من معالجة عدد أقل من الاستعلامات المعقدة.
تم تحسين ClickHouse من أجل:
- أحمال العمل التحليلية - عمليات تجميع معقدة عبر مجموعات بيانات كبيرة
- المعالجة على دفعات - التعامل بكفاءة مع كميات كبيرة من البيانات
- الاستعلامات التصريحية - استعلامات SQL التي تصف البيانات المطلوب استرجاعها، لا كيفية معالجتها
الدوال المعرّفة من قبل المستخدم (UDFs)
UDFs المستندة إلى Lambda
بيانات نموذجية للأمثلة
بيانات نموذجية للأمثلة
- لا توجد حلقات أو بنى تحكم معقدة في التدفق
- لا يمكن تعديل البيانات (
INSERT/UPDATE/DELETE) - لا يُسمح بالدوال العودية
CREATE FUNCTION للاطلاع على البنية الكاملة.
دوال UDF القابلة للتنفيذ
العروض ذات المعلمات
بيانات نموذجية لهذا المثال
بيانات نموذجية لهذا المثال
حالات الاستخدام الشائعة
- تصفية نطاق التاريخ ديناميكيًا
- تقسيم البيانات حسب المستخدم
- الوصول إلى البيانات في البيئات متعددة المستأجرين
- قوالب التقارير
- إخفاء البيانات
العروض المادية
العروض المادية القابلة للتحديث
تنسيق العمليات خارجيًا
استخدام شيفرة التطبيق
- الإجراء المخزن في MySQL
- شيفرة التطبيق في ClickHouse
الاختلافات الرئيسية
- التحكم في التدفق - تستخدم الإجراءات المخزنة في MySQL تعليمات
IF/ELSEوحلقاتWHILE. في ClickHouse، نفّذ هذا المنطق في شيفرة التطبيق لديك (بايثون، Java، إلخ.) - المعاملات - يدعم MySQL أوامر
BEGIN/COMMIT/ROLLBACKلمعاملات ACID. أما ClickHouse فهي قاعدة بيانات تحليلية مُحسّنة لأعباء العمل المعتمدة على الإلحاق فقط، وليست مخصّصة للتحديثات المعاملاتية - التحديثات - يستخدم MySQL عبارات
UPDATE. بينما يفضّل ClickHouse استخدامINSERTمع ReplacingMergeTree أو CollapsingMergeTree للبيانات القابلة للتغيير - المتغيرات والحالة - يمكن للإجراءات المخزنة في MySQL تعريف متغيرات (
DECLARE v_discount). في ClickHouse، أدر الحالة في شيفرة التطبيق لديك - معالجة الأخطاء - يدعم MySQL
SIGNALومعالجات الاستثناءات. وفي شيفرة التطبيق، استخدم آليات معالجة الأخطاء الأصلية في لغتك (try/catch)
استخدام أدوات تنسيق سير العمل
- Apache Airflow - جدولة مخططات DAG المعقدة لاستعلامات ClickHouse ومراقبتها
- dbt - تحويل البيانات باستخدام مهام سير عمل قائمة على SQL
- Prefect/Dagster - تنسيق حديث قائم على بايثون
- Custom schedulers - مهام Cron وCronJobs في Kubernetes وما إلى ذلك.
- إمكانات كاملة للغات البرمجة
- معالجة أفضل للأخطاء ومنطق أفضل لإعادة المحاولة
- التكامل مع الأنظمة الخارجية (واجهات برمجة التطبيقات، وقواعد البيانات الأخرى)
- التحكم في الإصدارات والاختبار
- المراقبة والتنبيهات
- جدولة أكثر مرونة
بدائل العبارات المُحضَّرة في ClickHouse
الصيغة
الطريقة 1: استخدام SET
مثال على الجدول والبيانات
مثال على الجدول والبيانات
الطريقة 2: استخدام معلَمات CLI
بنية المعاملات
{parameter_name: DataType}
parameter_name- اسم المعامل (من دون البادئةparam_)DataType- نوع بيانات ClickHouse الذي يُحوَّل المعامل إليه
أمثلة على أنواع البيانات
الجداول وبيانات العينة لهذا المثال
الجداول وبيانات العينة لهذا المثال
- السلاسل النصية والأرقام
- التواريخ والأوقات
- المصفوفات
- الخرائط
- المعرّفات
لاستخدام معلَمات الاستعلام في مكتبات العملاء للغات البرمجة، راجع وثائق مكتبة العميل الخاصة بلغة البرمجة التي تهمك.
قيود معلمات الاستعلام
- هي مخصصة أساسًا لعبارات SELECT - وأفضل دعم لها يكون في استعلامات SELECT
- هي تعمل كمُعرّفات أو قيم حرفية - ولا يمكنها أن تحل محل أجزاء SQL عشوائية
- لديها دعم محدود لـ DDL - فهي مدعومة في
CREATE TABLE، ولكن ليس فيALTER TABLE
أفضل الممارسات الأمنية
العبارات المُحضَّرة في بروتوكول MySQL
COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_CLOSE)، وذلك أساسًا لإتاحة الاتصال بأدوات مثل Tableau Online التي تُغلّف الاستعلامات داخل عبارات مُحضَّرة.
القيود الأساسية:
- ربط المَعلمات غير مدعوم - لا يمكنك استخدام العناصر النائبة
?مع مَعلمات مرتبطة - تُخزَّن الاستعلامات، لكنها لا تُحلَّل أثناء
PREPARE - التنفيذ محدود جدًا ومصمم للتوافق مع أدوات BI محددة
الخلاصة
بدائل ClickHouse للإجراءات المخزنة
استخدام معلمات الاستعلام
- منع حقن SQL
- الاستعلامات المُعلَّمة مع ضمان سلامة الأنواع
- التصفية الديناميكية في التطبيقات
- قوالب استعلام قابلة لإعادة الاستخدام
CREATE FUNCTION- الدوال المعرّفة من قبل المستخدمCREATE VIEW- العروض، بما في ذلك العروض ذات المعلمات والعروض المادية- بنية SQL - معلمات الاستعلام - البنية الكاملة للمعلمات
- العروض المادية المتتالية - أنماط متقدمة للعروض المادية
- دوال UDF قابلة للتنفيذ - تنفيذ الدوال الخارجية