يُمكّن محرك جدول 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 *.
آخر تعديل في ٢٩ يونيو ٢٠٢٦