يمكنك الانضمام إلى قائمة انتظار المعاينة الخاصة من هنا.
المتطلب المسبق
إنشاء أول ClickPipe لك
- افتح SQL Console لخدمة ClickHouse Cloud الخاصة بك.
- اختر زر
Data Sourcesمن القائمة الجانبية اليسرى، ثم انقر على “Set up a ClickPipe”
- اختر GCP Pub/Sub كمصدر للبيانات.
- املأ النموذج بإدخال اسم لـ ClickPipe، وGCP Project ID، وملف JSON لحساب الخدمة الخاص بحساب الخدمة الذي مُنِح حق الوصول إلى Pub/Sub. يجب أن يتكون Project ID من 6 إلى 30 حرفًا، ويمكن أن يحتوي على أحرف صغيرة وأرقام وواصلات، ويجب أن يبدأ بحرف، ولا يجوز أن ينتهي بواصلة.
-
اختر موضوع Pub/Sub الذي تريد إدخال البيانات منه. تُعبَّأ القائمة المنسدلة تلقائيًا من الموضوعات الموجودة في مشروع GCP الخاص بك (مرتبة أبجديًا) بمجرد التحقق من صحة بيانات الاعتماد.
- تنسيق البيانات. يستعلم ClickPipes سجل المخططات في Pub/Sub عند اختيار موضوع. إذا كان الموضوع يحتوي على مخطط Avro أو Protobuf أصلي مرفق، فسيتم اكتشاف تنسيق البيانات والمخطط تلقائيًا، وستُثبَّت المحددات على أحدث مخطط في الموضوع. أما الموضوعات التي لا تحتوي على مخطط أصلي فستُضبط افتراضيًا على JSONEachRow.
- الإزاحة الابتدائية. اختر نقطة بدء الاستهلاك. الخيارات المتاحة هي Latest (الرسائل الجديدة فقط) وEarliest (أقدم الرسائل المحتفظ بها) وSeek to Timestamp (مع منتقي تاريخ ووقت بتوقيت UTC).
- تعبير التصفية (اختياري). عامل تصفية اشتراك في Pub/Sub على سمات الرسائل — على سبيل المثال،
attributes.type = "telemetry". تُطبَّق عوامل التصفية على سمات الرسائل فقط، وليس على الحمولة، ولا يمكن تغييرها بعد إنشاء الـ pipe (يتطلب تغيير عامل التصفية إعادة إنشاء الـ pipe). - ستعرض واجهة المستخدم رسالة نموذجية من الموضوع المحدد، مع مفتاح تسطيح الكائن الذي يتيح لك معاينة كيفية تسطيح JSON المتداخل في جهة الوجهة.
- في الخطوة التالية، يمكنك اختيار ما إذا كنت تريد إدخال البيانات إلى جدول ClickHouse جديد أو إعادة استخدام جدول موجود. اتبع الإرشادات الظاهرة على الشاشة لتعديل اسم الجدول والمخطط والإعدادات. ويمكنك رؤية معاينة فورية لتغييراتك في جدول العينة بالأعلى.
- بدلاً من ذلك، يمكنك اختيار إدخال بياناتك في جدول ClickHouse موجود. في هذه الحالة، ستتيح لك واجهة المستخدم ربط الحقول من المصدر بحقول ClickHouse في جدول الوجهة المحدد.
- أخيرًا، يمكنك تهيئة الأذونات لمستخدم ClickPipes الداخلي.
Full access: مع وصول كامل إلى الـ cluster. قد يكون هذا مفيدًا إذا كنت تستخدم materialized view أو Dictionary مع جدول الوجهة.Only destination table: مع أذوناتINSERTعلى جدول الوجهة فقط.
- عند النقر على “Complete Setup”، سيسجل النظام ClickPipe الخاص بك، وستتمكن من رؤيته مدرجًا في جدول الملخص.
- تهانينا! لقد أعددت بنجاح أول ClickPipe لـ Pub/Sub. وسيعمل بشكل مستمر، مع إدخال البيانات في الوقت الفعلي من موضوع Pub/Sub إلى خدمة ClickHouse Cloud الخاصة بك.
الاشتراكات المُدارة
- يُسمّى الاشتراك المُدار
clickpipes-{pipeID}ويُنشأ على الـ موضوع عند بدء تشغيل الـ pipe. - يُضبط بمهلة مهلة الإقرار مدتها 60 ثانية، مع الاحتفاظ بالرسائل لمدة 7 أيام، وتمكين ترتيب الرسائل.
- يكون إنشاء الاشتراك قابلاً للتكرار بأمان — إذ تعيد عمليات إعادة تشغيل الـ pipe وإعادة جدولة الـ نسخة المتماثلة استخدام اشتراك موجود إذا كان يشير بالفعل إلى الـ موضوع المُهيأ.
- أثناء اكتشاف الـ موضوع وأخذ عينات من الرسائل، ينشئ ClickPipes أيضًا اشتراكات ephemeral قصيرة العمر (
clickpipes-discovery-{uuid}) تُحذف فور اكتمال أخذ العينات. - عند حذف الـ pipe، يحذف ClickPipes الاشتراك المُدار كجزء من عملية الإزالة.
تنسيقات البيانات المدعومة
- JSON
- Avro — عبر مخططات Pub/Sub الأصلية (ترميز BINARY)
- Protobuf — عبر مخططات Pub/Sub الأصلية (ترميز BINARY)
الضغط
- gzip
- zstd
- lz4
- snappy (تنسيق بإطارات)
يُعد الاكتشاف التلقائي آمنًا للتنسيقات النصية مثل JSON، لأن محارف ASCII القابلة للطباعة لن تتطابق أبدًا مع البايتات المميِّزة للضغط. ويقتصر حجم الحمولة بعد فك الضغط على 64MB.
أنواع البيانات المدعومة
دعم الأنواع القياسية
- الأنواع الرقمية الأساسية - [U]Int8/16/32/64 و Float32/64 و BFloat16
- أنواع الأعداد الصحيحة الكبيرة - [U]Int128/256
- أنواع Decimal
- Boolean
- String
- FixedString
- Date و Date32
- DateTime و DateTime64 (المناطق الزمنية UTC فقط)
- Enum8/Enum16
- UUID
- IPv4
- IPv6
- جميع أنواع LowCardinality في ClickHouse
- Map بمفاتيح وقيم تستخدم أيًا من الأنواع المذكورة أعلاه (بما في ذلك Nullable)
- Tuple و Array بعناصر تستخدم أيًا من الأنواع المذكورة أعلاه (بما في ذلك Nullable، وعلى عمق مستوى واحد فقط)
- أنواع SimpleAggregateFunction (لوجهات AggregatingMergeTree أو SummingMergeTree)
دعم النوع Variant
Variant(String, Int64, DateTime)) لأي حقل JSON
ضمن تدفق بيانات المصدر. ونظرًا إلى الطريقة التي يحدد بها ClickPipes النوع الفرعي الصحيح من Variant المطلوب استخدامه، لا يمكن استخدام أكثر من نوع واحد فقط من أنواع الأعداد الصحيحة أو أنواع التاريخ والوقت
في تعريف Variant — على سبيل المثال، Variant(Int64, UInt32) غير مدعوم.
دعم نوع JSON
الأعمدة الافتراضية في Pub/Sub
Add Column.
| الاسم | الوصف | نوع البيانات الموصى به |
|---|---|---|
| _message_id | معرّف رسالة Pub/Sub الذي يحدده الوسيط | String |
| _publish_time | الطابع الزمني لنشر Pub/Sub (بدقة الملّي ثانية، UTC) | DateTime64(3) |
| _ordering_key | مفتاح الترتيب في Pub/Sub (سلسلة فارغة إذا لم يُعيَّن مفتاح للرسالة) | String |
| _attributes | سمات رسائل Pub/Sub المعرّفة من المستخدم | Map(String, String) |
| _raw_message | حمولة رسالة Pub/Sub الكاملة (مُعطَّل افتراضيًا) | String |
_raw_message في الحالات التي تكون فيها حمولة رسالة Pub/Sub الكاملة وحدها مطلوبة (مثل استخدام دوال ClickHouse JsonExtract* لملء عرض مادي في مرحلة لاحقة). وفي مثل هذه الـ pipes، قد يؤدي حذف جميع الأعمدة “غير الافتراضية” إلى تحسين أداء ClickPipes.
القيود
- DEFAULT غير مدعوم.
- يقتصر حجم الرسالة الواحدة افتراضيًا على 16MB (غير مضغوطة) عند التشغيل بأصغر حجم نسخة متماثلة (XS)، وعلى 32MB (غير مضغوطة) مع الـ نسخ المتماثلة الأكبر. ستُرفض الرسائل التي تتجاوز هذا الحد مع ظهور خطأ. إذا كنت بحاجة إلى رسائل أكبر، فيُرجى التواصل مع الدعم.
- عوامل تصفية اشتراك Pub/Sub ثابتة — ويتطلب تغيير تعبير التصفية إعادة إنشاء الـ pipe.
- تُطبَّق عوامل التصفية على سمات الرسالة فقط، وليس على حمولة الرسالة.
الأداء
التجميع على دفعات
- وصول حجم الدفعة إلى الحد الأقصى (100,000 صف أو 32MB لكل 1GB من ذاكرة النسخة المتماثلة)
- بقاء الدفعة مفتوحة للمدة القصوى (5 ثوانٍ)
زمن الاستجابة
مفاتيح الترتيب
التوسّع
ضمانات التسليم
_message_id (يكون معرّف كل رسالة Pub/Sub فريدًا داخل الموضوع).