ما هو فصل الحوسبة عن الحوسبة؟
- عُقد compute في ClickHouse (ويُشار إليها باسم النسخ المتماثلة) مع موارد CPU وذاكرة مخصصة
- نقطة نهاية واحدة (أو عدة نقاط نهاية تُنشأ عبر واجهة Console في ClickHouse Cloud) للاتصال بالخدمة (على سبيل المثال،
https://dv2fzne24g.us-east-1.aws.clickhouse.cloud:8443) من أجل الاتصالات المحلية واتصالات تطبيقات الجهات الخارجية - مجلد في التخزين الكائني تخزّن فيه الخدمة جميع البيانات وجزءًا من البيانات الوصفية:
الشكل 1 - خدمة واحدة في ClickHouse Cloud بدلًا من الاكتفاء بخدمة واحدة، يمكنك إنشاء عدة خدمات لها إمكانية الوصول إلى مساحة التخزين المشتركة نفسها، مما يتيح لك تخصيص الموارد لأعباء عمل محددة من دون الحاجة إلى تكرار البيانات. ويُسمى هذا المفهوم فصل الحوسبة عن الحوسبة. يعني فصل الحوسبة عن الحوسبة أن لكل خدمة مجموعتها الخاصة من النسخ المتماثلة ونقطة نهاية، لكنها تستخدم مجلد التخزين الكائني نفسه وتصل إلى الجداول والعروض وغيرها نفسها. وهذا يعني أنه يمكنك اختيار حجم compute المناسب لعبء العمل لديك. فقد تكتفي بعض أعباء العمل لديك بنسخة متماثلة صغيرة واحدة فقط، بينما قد تتطلب أخرى إتاحة عالية كاملة (HA) ومئات الجيجابايتات من الذاكرة عبر عدة نسخ متماثلة. كما يتيح فصل الحوسبة عن الحوسبة فصل عمليات القراءة عن عمليات الكتابة حتى لا تتداخل مع بعضها:
الشكل 2 - فصل compute في ClickHouse Cloud
ما هو المستودع؟
- الخدمة الأساسية
DWH Prod - الخدمة الثانوية
DWH Prod Subservice
الشكل 3 - مثال على مستودع تشترك جميع الخدمات داخل المستودع نفسه في ما يلي:
- المنطقة (على سبيل المثال، us-east1)
- موفّر الخدمات السحابية (AWS أو GCP أو Azure)
- إصدار قاعدة بيانات ClickHouse
- ClickHouse Keeper (لإدارة النسخ المتماثلة)
ضوابط الوصول
بيانات اعتماد قاعدة البيانات
الشكل 4 - أُنشئت المستخدمِة أليس في Service 1، لكنها تستطيع استخدام بيانات الاعتماد نفسها للوصول إلى جميع الخدمات التي تشترك في البيانات نفسها
التحكم في الوصول إلى الشبكة
الشكل 5 - مُنعت Alice من الوصول إلى الخدمة 2 بسبب إعدادات التحكم في الوصول إلى الشبكة يمكن أيضًا تطبيق أدوار ClickHouse والامتيازات للتحكم في الوصول إلى البيانات عندما يتصل المستخدمون بحساباتهم الفردية بدلًا من المستخدم default.
خدمات للقراءة فقط مقابل خدمات للقراءة والكتابة
- للقراءة والكتابة
- يمكنها قراءة البيانات وكتابتها في ClickHouse
- تُجري عمليات الدمج في الخلفية (مثل دمج الأجزاء بعد عمليات insert للبيانات)، ما يستهلك CPU والذاكرة
- يمكنها تصدير البيانات إلى أنظمة خارجية
- للقراءة فقط
- يمكنها فقط قراءة البيانات؛ ولا يمكنها كتابة البيانات أو تعديلها في ClickHouse
- لا تُجري عمليات الدمج في الخلفية خارج system tables، لذا تكون مواردها مخصصة بالكامل لاستعلامات القراءة
- لا يزال بإمكانها تصدير البيانات إلى أنظمة خارجية (مثلًا عبر table functions)، لكنها لا تستطيع تغيير البيانات داخل ClickHouse
- تنتقل إلى وضع الخمول فورًا، بخلاف خدمات للقراءة والكتابة التي قد تبقى نشطة بسبب عمليات الدمج في الخلفية.
الشكل 6 - خدمات للقراءة والكتابة وللقراءة فقط في مستودع
- تدعم خدمات للقراءة فقط حاليًا عمليات إدارة المستخدمين (CREATE وDROP وما إلى ذلك).
- تعمل Refreshable materialized views فقط على خدمات للقراءة والكتابة (RW) داخل مستودع.
- يكون نوع service (للقراءة فقط أو للقراءة والكتابة) ثابتًا عند الإنشاء، ولا يمكن تغييره لاحقًا من Cloud Console. وللتبديل بين للقراءة فقط وللقراءة والكتابة، أنشئ service جديدة في مستودع بالنوع المطلوب.
التوسع
- عدد العقد (النسخ المتماثلة). يجب أن تحتوي الخدمة الأساسية (الخدمة التي أُنشئت أولًا في المستودع) على عقدتين أو أكثر. ويمكن أن تحتوي كل خدمة ثانوية على عقدة واحدة أو أكثر.
- حجم العقد (النسخ المتماثلة)
- ما إذا كان ينبغي أن تتوسع الخدمة تلقائيًا (أفقيًا وعموديًا)
- ما إذا كان ينبغي أن تدخل الخدمة في وضع الخمول عند عدم وجود نشاط
تغيّرات في سلوك clusterAllReplicas
clusterAllReplicas().
سيؤدي استخدام اسم الـ cluster default إلى استهداف الـ replicas ضمن الـ service الحالية فقط، وليس جميع الـ services في الـ مستودع.
على سبيل المثال، إذا استدعيت clusterAllReplicas(default, system, processes) من service 1، فلن تُعاد إلا العمليات التي تعمل على service 1.
ولإجراء query عبر جميع الـ services في الـ مستودع، استخدم بدلًا من ذلك اسم الـ cluster all_groups.default:
يمكن توسيع الخدمات الثانوية أحادية العقدة رأسيًا، بينما لا ينطبق ذلك على الخدمات الأساسية أحادية العقدة.
القيود
قيود عزل أعباء العمل
-
تتعامل جميع الخدمات للقراءة والكتابة مع عمليات الدمج في الخلفية افتراضيًا. عند إدراج البيانات في ClickHouse، تُدرِج قاعدة البيانات البيانات أولًا في بعض partitionات التهيئة المرحلية، ثم تُجري عمليات الدمج في الخلفية. وقد تستهلك عمليات الدمج هذه موارد الذاكرة وCPU. وعندما تتشارك خدمتان للقراءة والكتابة التخزين نفسه، فإن كلتيهما تنفذ عمليات في الخلفية. وهذا يعني أنه قد تحدث حالة يكون فيها استعلام
INSERTفي الخدمة 1، بينما تُستكمَل عملية الدمج بواسطة الخدمة 2. لاحظ أن الخدمات للقراءة فقط لا تنفذ عمليات الدمج في الخلفية، لذا فهي لا تستهلك مواردها في هذه العملية. كما يمكن لفريق الدعم لدينا تعطيل عمليات الدمج على خدمة معينة. - تنفذ جميع الخدمات للقراءة والكتابة عمليات الإدراج الخاصة بمحرك الجدول S3Queue. عند إنشاء جدول S3Queue على خدمة للقراءة/الكتابة، قد تنفذ جميع الخدمات الأخرى للقراءة/الكتابة في الـمستودع عمليات قراءة البيانات من S3 وكتابتها إلى قاعدة البيانات.
- قد تمنع عمليات الإدراج على إحدى الخدمات للقراءة والكتابة خدمةً أخرى للقراءة والكتابة من الدخول في حالة الخمول إذا كان الخمول مُمكّنًا. توجد حالات تنفذ فيها إحدى الخدمات عمليات الدمج في الخلفية نيابةً عن خدمة أخرى. وقد تمنع هذه العمليات في الخلفية الخدمة الثانية من الدخول في حالة الخمول. وبمجرد انتهاء العمليات في الخلفية، ستدخل الخدمة في حالة الخمول. ولا تتأثر الخدمات للقراءة فقط.
ملاحظات مفيدة
- إصدارات ClickHouse: يتحدد جدول الترقية وفقًا لإعدادات الخدمة الأساسية. ولا يمكن أن يكون للخدمات الثانوية جدول إصدارات مستقل عن الخدمة الأساسية.
-
قد تُمنع استعلامات
CREATE/RENAME/DROP DATABASEافتراضيًا بسبب الخدمات الخاملة/المتوقفة. إذا نُفِّذت هذه الاستعلامات عندما تكون الخدمة في حالة خمول أو متوقفة، فقد تظل معلّقة. لتجاوز ذلك، يمكنك تشغيل استعلامات إدارة قاعدة البيانات باستخدامsettings distributed_ddl_task_timeout=0على مستوى الجلسة أو على مستوى كل استعلام.
- الخدمة الأساسية ذات النسخة المتماثلة الواحدة حاليًا، يتمثل السلوك الافتراضي في أن الخدمات الثانوية يمكن أن تحتوي على نسخة متماثلة واحدة، بينما يجب أن تحتوي الخدمة الأساسية على نسختين متماثلتين على الأقل. لتمكين الخدمات الأساسية ذات النسخة المتماثلة الواحدة، يرجى التواصل مع الدعم. سيكون هذا السلوك مفعّلًا افتراضيًا في الربع الثاني من عام 2026.
- خمول الخدمة الأساسية: يكون الخمول التلقائي للخدمة الأساسية مفعّلًا افتراضيًا.
التسعير
النسخ الاحتياطية
- بما أن جميع الخدمات ضمن مستودع واحد تشترك في مساحة التخزين نفسها، فلا تُنشأ النسخ الاحتياطية إلا على الخدمة الأساسية (الأولية). وبهذه الطريقة، تُؤخذ نسخة احتياطية من بيانات جميع الخدمات في المستودع.
- إذا قمت باستعادة نسخة احتياطية من الخدمة الأساسية في مستودع، فستُستعاد إلى خدمة جديدة تمامًا غير متصلة بالمستودع الحالي. ويمكنك بعد ذلك إضافة المزيد من الخدمات إلى الخدمة الجديدة فور اكتمال عملية الاستعادة.
كيفية إعداد مستودع
إنشاء مستودع
الشكل 7 - انقر على علامة الزائد لإنشاء خدمة جديدة في مستودع في شاشة إنشاء الخدمة، ستكون الخدمة الأصلية محددة في القائمة المنسدلة باعتبارها مصدر بيانات الخدمة الجديدة. وبمجرد إنشائها، ستشكّل هاتان الخدمتان مستودعًا.
إعادة تسمية مستودع
- يمكنك اختيار “الفرز حسب المستودع” في صفحة الخدمات من الزاوية العلوية اليمنى، ثم النقر على أيقونة القلم بجوار اسم المستودع
- يمكنك النقر على اسم المستودع ضمن أي خدمة، ثم إعادة تسميته من هناك
حذف مستودع
- احذف جميع الخدمات التي أُنشئت بالإضافة إلى أول خدمة أُنشئت؛
- احذف أول خدمة (تحذير: ستُحذف جميع بيانات المستودع في هذه الخطوة).