SELECT وINSERT على البيانات المخزّنة على خادم MySQL بعيد.
البنية
الوسيطات
يمكن أيضًا تمرير الوسيطات باستخدام المجموعات المسماة. في هذه الحالة، يجب تحديد
host وport كلٌّ على حدة. يُوصى بهذا الأسلوب في بيئة الإنتاج.
تُنفَّذ عبارات WHERE البسيطة مثل =, !=, >, >=, <, <= حاليًا على خادم MySQL.
أما بقية الشروط وقيد LIMIT لأخذ العينات، فتُنفَّذ في ClickHouse فقط بعد انتهاء الاستعلام إلى MySQL.
TLS/SSL
تُمرَّر بيانات اعتماد اتصال MySQL المشفّر كمفاتيح لمجموعة مسمّاة (أو كوسيطات مفتاح-قيمة):
القيم هي محتويات ملفات PEM المقابلة، ويمكن نسخها إلى مجموعة مسمّاة أو إلى استعلام. وتُحجب في السجلات واستعلامات
SHOW، بالطريقة نفسها التي تُحجب بها كلمات المرور.
يمكن أيضًا توفير بيانات الاعتماد نفسها كمسارات لملفات على الخادم، في ssl_ca وssl_cert وssl_key — ولكن فقط ضمن مجموعة مسمّاة محددة في ملف تهيئة الخادم، ولا يمكن تجاوز هذه القيمة في استعلام. يفتح الخادم تلك الملفات بصلاحياته الخاصة، لذا فإن قبول مسار من SQL سيسمح لأي مستخدم قادر على تعريف مصدر MySQL بفحص نظام الملفات المحلي والمصادقة باستخدام شهادة ومفتاح لا يُسمح له بقراءتهما بنفسه.
تمرير استعلام بدلًا من اسم جدول
بدلًا من اسم جدول، يمكن أن تكون الوسيطة الثالثة استعلامSELECT يُمرَّر إلى MySQL كما هو. ويُستدل على بنية الجدول الناتج من نتيجة الاستعلام. ويمكن كتابة الاستعلام إما على شكل استعلام فرعي، أو تغليفه داخل الدالة query:
INSERT فيه. كما يدعم محرّك الجدول MySQL البنية نفسها.
يحلّل ClickHouse صيغة الاستعلام الفرعي
(SELECT ...) ثم يعيد تسلسلها وفق لهجة MySQL (باستخدام علامات الاقتباس الخلفية للمعرّفات) قبل إرسالها إلى الخادم. لذلك يجب أن تكون صالحة في ClickHouse SQL. ولتمرير بنية خاصة بـ MySQL لا يستطيع ClickHouse تحليلها، استخدم صيغة query('...')، إذ يُرسَل نصها إلى MySQL كما هو.أي WHERE أو LIMIT أو تجميع أو غير ذلك في استعلام ClickHouse المحيط لا يُدفَع مطلقًا إلى داخل الاستعلام المُمرَّر، بل يُطبَّق في ClickHouse بعد جلب نتيجة الاستعلام كاملة. ولتقييد البيانات المقروءة من MySQL، ضع عامل التصفية داخل الاستعلام المُمرَّر. عند استخدام external_table_strict_query = 1، يُرفَض عامل تصفية خارجي على أعمدة دالة الجدول مع استثناء بدلًا من تطبيقه محليًا، لأنه لا يمكن دفعه إلى الاستعلام المُمرَّر. يشمل الفحص مسند WHERE ذي المستوى الأعلى وكل حدّ مقترن في AND ذي المستوى الأعلى. لا تُعد PREWHERE على أعمدة هذا الجدول حالةً لهذا الإعداد: لا يدعم محرّك الجدول هذا PREWHERE، ويُرفَض مثل هذا الاستعلام باستخدام ILLEGAL_PREWHERE بغض النظر عن الإعداد. لا يُجرى الفحص إلا حيث يمكن دفع عامل تصفية: عندما يكون هذا الجدول هو الجدول الوحيد في الاستعلام، أو على أي من جانبي INNER JOIN، أو على الجانب الحافظ في عملية ربط خارجية (الجانب الأيسر من LEFT JOIN، والجانب الأيمن من RIGHT JOIN). على الجانب غير الحافظ من LEFT/RIGHT JOIN وعلى أي من جانبي FULL JOIN لا يُدفَع شيء ولا يُفحَص شيء، لذا يُطبَّق عامل تصفية على أعمدة هذا الجدول محليًا بعد عملية الربط حتى في الوضع الصارم. حيث يُجرى الفحص، لا يُدفَع مسند يشير إلى جداول أخرى مرتبطة في الاستعلام المحيط ويُستثنى من الفحص، سواء أشار إلى الجانب المرتبط فقط أو مزجه مع هذا الجدول داخل تعبير واحد غير AND (مثل OR)؛ ويحافظ مثل هذا المسند على نقطة تقييمه المعتادة في ClickHouse (WHERE بعد عملية الربط، وPREWHERE قبلها) ولا يُرفَض.|. على سبيل المثال:
القيمة المُعادة
كائن جدول له الأعمدة نفسها الموجودة في جدول MySQL الأصلي.يمكن ربط بعض أنواع بيانات MySQL بأنواع مختلفة في ClickHouse، ويُتحكَّم في ذلك عبر الإعداد على مستوى الاستعلام mysql_datatypes_support_level
في استعلام
INSERT، وللتمييز بين دالة الجدول mysql(...) واسم جدول يتبعه قائمة بأسماء الأعمدة، يجب استخدام الكلمتين المفتاحيتين FUNCTION أو TABLE FUNCTION. راجع الأمثلة أدناه.أمثلة
جدول في MySQL:enable_compression
يُفعّل الضغط لاتصال بروتوكول MySQL.
القيمة الافتراضية: false.
ينطبق هذا الإعداد على:
- دالة الجدول
mysql; - محرك الجدول
MySQL; - محرك قاعدة البيانات
MySQL; - المجموعات المسماة المستخدمة في تكاملات MySQL.
id حالية: