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

نظرة عامة

في ClickHouse، تشير “القيود” المفروضة على الإعدادات إلى الحدود والقواعد التي يمكنك تعيينها للإعدادات. ويمكن تطبيق هذه القيود للحفاظ على الاستقرار والأمان وسهولة التنبؤ بسلوك قاعدة البيانات.

تعريف القيود

يمكن تعريف القيود على الإعدادات في قسم ملف التعريف ضمن ملف الإعداد user.xml. وهي تمنع المستخدمين من تغيير بعض الإعدادات باستخدام تعليمة SET. تُعرَّف القيود على النحو التالي:
إذا حاول المستخدم انتهاك القيود، فسيُطلَق استثناء ويظل الإعداد دون تغيير.

أنواع القيود

هناك عدة أنواع من القيود التي يدعمها ClickHouse:
  • min
  • max
  • disallowed
  • readonly (بالاسم المستعار const)
  • changeable_in_readonly
يحدّد القيدان min وmax الحدين الأدنى والأقصى لإعداد رقمي، ويمكن استخدامهما معًا. يمكن استخدام القيد disallowed لتحديد قيمة أو قيم معيّنة لا ينبغي السماح بها لإعداد محدد. ينصّ القيد readonly أو const على أن المستخدم لا يمكنه تغيير الإعداد المقابل مطلقًا. يتيح نوع القيد changeable_in_readonly للمستخدمين تغيير الإعداد ضمن نطاق min/max حتى إذا كان الإعداد readonly مضبوطًا على 1، وإلا فلن يُسمح بتغيير الإعدادات في وضع readonly=1.
لا يكون changeable_in_readonly مدعومًا إلا إذا كان settings_constraints_replace_previous مفعّلًا:

ملفات تعريف القيود المتعددة

إذا كان هناك عدة ملفات تعريف نشطة لمستخدم، فستُدمَج القيود. تعتمد عملية الدمج على settings_constraints_replace_previous:
  • true (موصى به): تُستبدَل القيود الخاصة بالإعداد نفسه أثناء الدمج، بحيث يُستخدَم القيد الأخير وتُتجاهَل جميع القيود السابقة. ويشمل ذلك الحقول غير المعيّنة في القيد الجديد.
  • false (افتراضي): تُدمَج القيود الخاصة بالإعداد نفسه بطريقة يُؤخَذ فيها كل نوع من القيود غير المعيّنة من ملف التعريف السابق، ويُستبدَل كل نوع من القيود المعيّنة بالقيمة من ملف التعريف الجديد.

وضع القراءة فقط

يتم تفعيل وضع القراءة فقط بواسطة الإعداد readonly، ويجب عدم الخلط بينه وبين نوع القيد readonly:
  • readonly=0: لا توجد أي قيود على وضع القراءة فقط.
  • readonly=1: يُسمح فقط باستعلامات القراءة، ولا يمكن تغيير الإعدادات إلا إذا كان changeable_in_readonly مُعيَّنًا.
  • readonly=2: يُسمح فقط باستعلامات القراءة، لكن يمكن تغيير الإعدادات، باستثناء الإعداد readonly نفسه.

مثال

ليتضمّن الملف users.xml الأسطر التالية:
ستُرجِع جميع الاستعلامات التالية استثناءات:
يُتعامل مع ملف التعريف default على نحوٍ خاص: إذ تصبح جميع القيود المعرّفة لملف التعريف default هي القيود الافتراضية، وبالتالي تُطبَّق على جميع المستخدمين ما لم يُتجاوز عنها صراحةً لهؤلاء المستخدمين.

قيود على إعدادات MergeTree

يمكن فرض قيود على إعدادات MergeTree. تُطبَّق هذه القيود عند إنشاء جدول يستخدم محرك MergeTree أو عند تعديل إعدادات التخزين الخاصة به. يجب أن يُسبق اسم إعداد MergeTree بالبادئة merge_tree_ عند الإشارة إليه في قسم <constraints>.

مثال

يمكنك منع إنشاء جداول جديدة مع تحديد storage_policy صراحةً
آخر تعديل في ٢ يوليو ٢٠٢٦