الانتقال إلى المحتوى الرئيسي
يتيح Executable Pool تحميل البيانات من مجموعة من العمليات. ولا يعمل هذا المصدر مع تخطيطات القواميس التي تحتاج إلى تحميل جميع البيانات من المصدر. يعمل Executable Pool إذا كان القاموس مخزّنًا باستخدام أحد التخطيطات التالية:
  • cache
  • complex_key_cache
  • ssd_cache
  • complex_key_ssd_cache
  • direct
  • complex_key_direct
ينشئ Executable Pool مجموعة من العمليات باستخدام الأمر المحدد ويُبقيها قيد التشغيل إلى أن تنتهي. يجب أن يقرأ البرنامج البيانات من STDIN ما دامت متاحة، وأن يرسل النتيجة إلى STDOUT. ويمكنه انتظار كتلة البيانات التالية على STDIN. لن يغلق ClickHouse ‏STDIN بعد معالجة كتلة بيانات، بل سيمرّر كتلة أخرى من البيانات عند الحاجة. يجب أن يكون السكربت التنفيذي مهيأً لطريقة معالجة البيانات هذه — أي ينبغي أن يراقب STDIN وأن يفرّغ البيانات إلى STDOUT مبكرًا. مثال على الإعدادات:
SOURCE(EXECUTABLE_POOL(
    command 'while read key; do printf "$key\tData for key $key\n"; done'
    format 'TabSeparated'
    pool_size 10
    max_command_execution_time 10
    implicit_key false
))
حقول الإعداد:
الإعدادالوصف
commandالمسار المطلق إلى الملف التنفيذي، أو اسم الملف (إذا كان دليل البرنامج موجودًا في PATH).
formatتنسيق الملف. جميع التنسيقات الموصوفة في Formats مدعومة.
pool_sizeحجم المجموعة. إذا تم تحديد 0 لقيمة pool_size، فلن تكون هناك قيود على حجم المجموعة. القيمة الافتراضية هي 16.
command_termination_timeoutيجب أن يحتوي السكربت التنفيذي على حلقة read-write رئيسية. بعد إتلاف القاموس، يُغلق الـ pipe، ويكون لدى الملف التنفيذي command_termination_timeout ثانية للتوقف قبل أن يرسل ClickHouse إشارة SIGTERM إلى العملية الفرعية. تُحدَّد القيمة بالثواني. القيمة الافتراضية هي 10. اختياري.
max_command_execution_timeالحد الأقصى لوقت تنفيذ أمر السكربت التنفيذي لمعالجة كتلة بيانات. تُحدَّد القيمة بالثواني. القيمة الافتراضية هي 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. القيمة الافتراضية هي 1. اختياري.
send_chunk_headerيتحكم فيما إذا كان سيتم إرسال عدد الصفوف قبل إرسال كتلة من البيانات إلى العملية. القيمة الافتراضية هي false. اختياري.
لا يمكن تهيئة مصدر القاموس هذا إلا عبر إعدادات XML. تم تعطيل إنشاء القواميس ذات المصدر التنفيذي عبر DDL، وإلا فسيكون مستخدم قاعدة البيانات قادرًا على تنفيذ أي ملف تنفيذي عشوائي على عقدة ClickHouse.
آخر تعديل في ٢٥ يونيو ٢٠٢٦