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

ما هو فصل الحوسبة عن الحوسبة؟

قبل مناقشة ماهية فصل الحوسبة عن الحوسبة، من المفيد فهم معنى الخدمة في ClickHouse Cloud. تتضمن كل خدمة في ClickHouse Cloud ما يلي:
  • عُقد compute في ClickHouse (ويُشار إليها باسم النسخ المتماثلة) مع موارد CPU وذاكرة مخصصة
  • نقطة نهاية واحدة (أو عدة نقاط نهاية تُنشأ عبر واجهة Console في ClickHouse Cloud) للاتصال بالخدمة (على سبيل المثال، https://dv2fzne24g.us-east-1.aws.clickhouse.cloud:8443) من أجل الاتصالات المحلية واتصالات تطبيقات الجهات الخارجية
  • مجلد في التخزين الكائني تخزّن فيه الخدمة جميع البيانات وجزءًا من البيانات الوصفية:

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

ما هو المستودع؟

في ClickHouse Cloud، يُقصد بـ المستودع مجموعة من الخدمات التي تتشارك البيانات نفسها. يضم كل مستودع خدمة أساسية (الخدمة التي أُنشئت أولًا) وخدمة ثانوية واحدة أو أكثر. على سبيل المثال، في لقطة الشاشة أدناه، يظهر مستودع باسم “DWH Prod” يتكوّن من خدمتين:
  • الخدمة الأساسية DWH Prod
  • الخدمة الثانوية DWH Prod Subservice

الشكل 3 - مثال على مستودع تشترك جميع الخدمات داخل المستودع نفسه في ما يلي:
  • المنطقة (على سبيل المثال، us-east1)
  • موفّر الخدمات السحابية (AWS أو GCP أو Azure)
  • إصدار قاعدة بيانات ClickHouse
  • ClickHouse Keeper (لإدارة النسخ المتماثلة)

ضوابط الوصول

بيانات اعتماد قاعدة البيانات

نظرًا إلى أن جميع الخدمات في المستودع تشترك في المجموعة نفسها من الجداول، فهي تتشارك أيضًا ضوابط الوصول نفسها عبر الخدمات. وهذا يعني أن جميع مستخدمي قاعدة البيانات الذين يُنشؤون في Service 1 سيتمكنون أيضًا من استخدام Service 2 بالأذونات نفسها (مثل منح الجداول وطرق العرض وما إلى ذلك)، والعكس صحيح. تُستخدم نقطة نهاية مختلفة لكل خدمة، لكن يُستخدم اسم المستخدم وكلمة المرور نفسيهما عبر جميع الخدمات. وبعبارة أخرى، يتشارك المستخدمون بين الخدمات التي تعمل على مساحة التخزين نفسها، كما هو موضح في الشكل أدناه:
الشكل 4 - أُنشئت المستخدمِة أليس في Service 1، لكنها تستطيع استخدام بيانات الاعتماد نفسها للوصول إلى جميع الخدمات التي تشترك في البيانات نفسها

التحكم في الوصول إلى الشبكة

لتقييد الوصول إلى خدمات محددة من قِبل تطبيقات أخرى أو مستخدمين مؤقتين، يمكنك تطبيق قيود على الشبكة. للقيام بذلك، انتقل إلى Settings في علامة تبويب الخدمة الخاصة بالخدمة التي تريد تقييد الوصول إليها في وحدة تحكم ClickHouse Cloud. يمكن تطبيق إعدادات تصفية عناوين IP على كل خدمة على حدة، ما يعني أنه يمكنك التحكم في التطبيقات التي يمكنها الوصول إلى كل خدمة. ويتيح لك ذلك منع المستخدمين من استخدام خدمات محددة. في المثال أدناه، مُنعت Alice من الوصول إلى الخدمة 2 في المستودع:
الشكل 5 - مُنعت Alice من الوصول إلى الخدمة 2 بسبب إعدادات التحكم في الوصول إلى الشبكة يمكن أيضًا تطبيق أدوار ClickHouse والامتيازات للتحكم في الوصول إلى البيانات عندما يتصل المستخدمون بحساباتهم الفردية بدلًا من المستخدم default.

خدمات للقراءة فقط مقابل خدمات للقراءة والكتابة

يمكن أن تكون الخدمات من أحد النوعين التاليين:
  • للقراءة والكتابة
    • يمكنها قراءة البيانات وكتابتها في ClickHouse
    • تُجري عمليات الدمج في الخلفية (مثل دمج الأجزاء بعد عمليات insert للبيانات)، ما يستهلك CPU والذاكرة
    • يمكنها تصدير البيانات إلى أنظمة خارجية
  • للقراءة فقط
    • يمكنها فقط قراءة البيانات؛ ولا يمكنها كتابة البيانات أو تعديلها في ClickHouse
    • لا تُجري عمليات الدمج في الخلفية خارج system tables، لذا تكون مواردها مخصصة بالكامل لاستعلامات القراءة
    • لا يزال بإمكانها تصدير البيانات إلى أنظمة خارجية (مثلًا عبر table functions)، لكنها لا تستطيع تغيير البيانات داخل ClickHouse
    • تنتقل إلى وضع الخمول فورًا، بخلاف خدمات للقراءة والكتابة التي قد تبقى نشطة بسبب عمليات الدمج في الخلفية.
قد تحتاج أحيانًا إلى عزل workloads القراءة الحرجة عن overhead الكتابة/الدمج من خلال جعل service للقراءة فقط. يمكنك القيام بذلك للخدمة الثانية وأي خدمات إضافية تنشئها، لكن الخدمة الأولى ستكون دائمًا من نوع للقراءة والكتابة، كما هو موضح في الشكل أدناه:
الشكل 6 - خدمات للقراءة والكتابة وللقراءة فقط في مستودع
  1. تدعم خدمات للقراءة فقط حاليًا عمليات إدارة المستخدمين (CREATE وDROP وما إلى ذلك).
  2. تعمل Refreshable materialized views فقط على خدمات للقراءة والكتابة ‏(RW) داخل مستودع.
  3. يكون نوع service (للقراءة فقط أو للقراءة والكتابة) ثابتًا عند الإنشاء، ولا يمكن تغييره لاحقًا من Cloud Console. وللتبديل بين للقراءة فقط وللقراءة والكتابة، أنشئ service جديدة في مستودع بالنوع المطلوب.

التوسع

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

تغيّرات في سلوك clusterAllReplicas

بمجرد أن يضمّ الـ مستودع عدة services، يتغيّر سلوك 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.
  • خمول الخدمة الأساسية: يكون الخمول التلقائي للخدمة الأساسية مفعّلًا افتراضيًا.

التسعير

أسعار الحوسبة هي نفسها لجميع الخدمات ضمن مستودع (الأساسية والثانوية). ولا تتم محاسبة Storage إلا مرة واحدة فقط، إذ تكون مضمنة في الخدمة الأولى (الأصلية). يُرجى الرجوع إلى pricing calculator في صفحة pricing، إذ سيساعدك في تقدير التكلفة بناءً على حجم workload لديك واختيار tier. وسيعرض لك جدول Usage Breakdown تفاصيل تكاليف الحوسبة عبر الخدمات.

النسخ الاحتياطية

  • بما أن جميع الخدمات ضمن مستودع واحد تشترك في مساحة التخزين نفسها، فلا تُنشأ النسخ الاحتياطية إلا على الخدمة الأساسية (الأولية). وبهذه الطريقة، تُؤخذ نسخة احتياطية من بيانات جميع الخدمات في المستودع.
  • إذا قمت باستعادة نسخة احتياطية من الخدمة الأساسية في مستودع، فستُستعاد إلى خدمة جديدة تمامًا غير متصلة بالمستودع الحالي. ويمكنك بعد ذلك إضافة المزيد من الخدمات إلى الخدمة الجديدة فور اكتمال عملية الاستعادة.

كيفية إعداد مستودع

إنشاء مستودع

لإنشاء مستودع، تحتاج إلى إنشاء خدمة ثانية تشترك في البيانات مع خدمة موجودة. ويمكنك القيام بذلك بالنقر على علامة الزائد في أيٍ من الخدمات الحالية:
الشكل 7 - انقر على علامة الزائد لإنشاء خدمة جديدة في مستودع في شاشة إنشاء الخدمة، ستكون الخدمة الأصلية محددة في القائمة المنسدلة باعتبارها مصدر بيانات الخدمة الجديدة. وبمجرد إنشائها، ستشكّل هاتان الخدمتان مستودعًا.

إعادة تسمية مستودع

هناك طريقتان لإعادة تسمية مستودع:
  • يمكنك اختيار “الفرز حسب المستودع” في صفحة الخدمات من الزاوية العلوية اليمنى، ثم النقر على أيقونة القلم بجوار اسم المستودع
  • يمكنك النقر على اسم المستودع ضمن أي خدمة، ثم إعادة تسميته من هناك

حذف مستودع

يعني حذف المستودع حذفَ جميع خدمات الحوسبة والبيانات (الجداول، والعروض، والمستخدمين، وما إلى ذلك). ولا يمكن التراجع عن هذا الإجراء. لا يمكنك حذف مستودع إلا بحذف أول خدمة أُنشئت. وللقيام بذلك:
  1. احذف جميع الخدمات التي أُنشئت بالإضافة إلى أول خدمة أُنشئت؛
  2. احذف أول خدمة (تحذير: ستُحذف جميع بيانات المستودع في هذه الخطوة).
آخر تعديل في ٢ يوليو ٢٠٢٦