يعتمد التعامل مع الملفات القابلة للتنفيذ على كيفية تخزين القاموس في الذاكرة. إذا كان القاموس مخزّنًا باستخدام cache وcomplex_key_cache، يطلب ClickHouse المفاتيح المطلوبة عبر إرسال طلب إلى STDIN الخاص بالملف القابل للتنفيذ. بخلاف ذلك، يشغّل ClickHouse الملف القابل للتنفيذ ويتعامل مع مخرجاته على أنها بيانات القاموس.
مثال على الإعدادات:
SOURCE(EXECUTABLE(
command 'cat /opt/dictionaries/os.tsv'
format 'TabSeparated'
implicit_key false
))<source>
<executable>
<command>cat /opt/dictionaries/os.tsv</command>
<format>TabSeparated</format>
<implicit_key>false</implicit_key>
</executable>
</source>حقول الإعداد:
| الإعداد | الوصف |
|---|---|
command |
المسار المطلق إلى الملف القابل للتنفيذ، أو اسم الملف (إذا كان دليل الأمر موجودًا في PATH). |
format |
تنسيق الملف. جميع التنسيقات الموضحة في Formats مدعومة. |
command_termination_timeout |
يجب أن يحتوي السكربت القابل للتنفيذ على حلقة رئيسية للقراءة والكتابة. بعد إتلاف القاموس، يُغلق الـ pipe، ويُمنح الملف القابل للتنفيذ مهلة قدرها command_termination_timeout ثانية قبل أن يرسل ClickHouse إشارة SIGTERM إلى العملية الفرعية. تُحدَّد القيمة بالثواني. القيمة الافتراضية هي 10. اختياري. |
command_read_timeout |
مهلة قراءة البيانات من stdout الخاص بالأمر، بالمللي ثانية. القيمة الافتراضية 10000. اختياري. |
command_write_timeout |
مهلة كتابة البيانات إلى stdin الخاص بالأمر، بالمللي ثانية. القيمة الافتراضية 10000. اختياري. |
implicit_key |
يمكن لملف المصدر القابل للتنفيذ أن يعيد القيم فقط، ويُحدَّد تطابقها مع المفاتيح المطلوبة ضمنيًا وفقًا لترتيب الصفوف في النتيجة. القيمة الافتراضية هي false. |
execute_direct |
إذا كانت execute_direct = 1، فسيُبحث عن command داخل مجلد user_scripts المحدد بواسطة user_scripts_path. ويمكن تحديد وسائط إضافية للسكربت باستخدام مسافة فاصلة بينها. مثال: script_name arg1 arg2. وإذا كانت execute_direct = 0، فسيُمرَّر command كوسيط إلى bin/sh -c. القيمة الافتراضية هي 0. اختياري. |
send_chunk_header |
يتحكم في إرسال عدد الصفوف قبل إرسال chunk من البيانات إلى العملية. القيمة الافتراضية هي false. اختياري. |
لا يمكن تهيئة مصدر القاموس هذا إلا عبر تهيئة XML. وإنشاء القواميس ذات المصدر القابل للتنفيذ عبر DDL معطّل؛ وإلا فسيتمكن مستخدم DB من تنفيذ ملفات ثنائية عشوائية على عقدة ClickHouse.