يُمكّن محرك جدول ArrowFlight في ClickHouse من القراءة من مجموعات البيانات البعيدة والكتابة إليها عبر بروتوكول Apache Arrow Flight. ويتيح هذا التكامل لـ ClickHouse التفاعل مع الخوادم الخارجية الداعمة لـ Flight بتنسيق Arrow عمودي وبأداء عالٍ.
إنشاء جدول
CREATE TABLE [IF NOT EXISTS] [db.]table_name (name1 [type1], name2 [type2], ...)
ENGINE = ArrowFlight('host:port', 'dataset_name' [, 'username', 'password']);معلمات المحرّك
host:port— عنوان خادم Arrow Flight البعيد. إذا لم يُحدَّد المنفذ، فسيُستخدم المنفذ الافتراضي8815. String.dataset_name— معرّف مجموعة البيانات على خادم Flight (يُستخدم كواصف PATH أو في استعلامSELECT *، بحسب الإعدادarrow_flight_request_descriptor_type). String.username— اسم المستخدم لمصادقة HTTP الأساسية. String.password— كلمة المرور لمصادقة HTTP الأساسية. String.
إذا لم يتم تحديد username وpassword، فلن تُستخدم المصادقة (ولا يعمل ذلك إلا إذا كان خادم Arrow Flight يسمح بالوصول من دون مصادقة).
قائمة الأعمدة اختيارية — إذا لم تُحدَّد، فسيُستنتج المخطط من خادم Arrow Flight البعيد عبر GetSchema.
المجموعات المُسمّاة
يدعم المحرّك المجموعات المُسمّاة لتخزين معلمات الاتصال:
CREATE TABLE remote_flight_data
ENGINE = ArrowFlight(named_collection_name);معلمات المجموعة المسماة:
| المعلمة | مطلوب | الافتراضي | الوصف |
|---|---|---|---|
host or hostname |
لا | "" |
اسم مضيف الخادم. |
port |
نعم | — | منفذ الخادم. |
dataset |
لا | "" |
اسم مجموعة البيانات أو الواصف. |
use_basic_authentication |
لا | true |
تمكين المصادقة الأساسية. |
user or username |
إذا كانت المصادقة مفعّلة | — | اسم المستخدم للمصادقة. |
password |
لا | "" |
كلمة المرور للمصادقة. |
enable_ssl |
لا | false |
تمكين تشفير TLS. |
ssl_ca |
لا | "" |
مسار ملف شهادة CA المستخدمة للتحقق عبر TLS. |
ssl_override_hostname |
لا | "" |
تجاوز اسم المضيف الذي يجري التحقق منه أثناء التحقق عبر TLS. |
الإعدادات
arrow_flight_request_descriptor_type— يتحكّم في كيفية إرسال اسم مجموعة البيانات إلى خادم Flight. القيم المحتملة:path(الافتراضي، ويُرسَل على هيئة واصف PATH) أوcommand(ويُرسَل على هيئة واصف CMD معSELECT * FROM <dataset>). استخدمcommandمع خوادم Flight التي تتوقع أوامر SQL (مثل Dremio).
مثال على الاستخدام
قراءة البيانات من خادم Arrow Flight بعيد:
CREATE TABLE remote_flight_data
(
id UInt32,
name String,
value Float64
) ENGINE = ArrowFlight('127.0.0.1:9005', 'sample_dataset');
SELECT * FROM remote_flight_data ORDER BY id;┌─id─┬─name────┬─value─┐
│ 1 │ foo │ 42.1 │
│ 2 │ bar │ 13.3 │
│ 3 │ baz │ 77.0 │
└────┴─────────┴───────┘إدراج البيانات في خادم Arrow Flight البعيد:
INSERT INTO remote_flight_data VALUES (4, 'qux', 99.9);ملاحظات
- إذا جرى تحديد الأعمدة في عبارة
CREATE TABLE، فيجب أن تتطابق مع المخطط الذي يعيده خادم Flight. - إذا لم تُحدَّد الأعمدة، فسيُستنتَج المخطط تلقائيًا من الخادم البعيد.
- كلٌّ من القراءة (
SELECT) والكتابة (INSERT) مدعومان. - يتحكم الإعداد
arrow_flight_request_descriptor_typeفي ما إذا كان اسم مجموعة البيانات يُرسَل كواصف PATH أو كواصف CMD يتضمّن استعلامSELECT *.