يُعد Apache Avro تنسيق تسلسل موجَّهًا للصفوف يستخدم الترميز الثنائي لمعالجة البيانات بكفاءة. ويدعم تنسيق AvroConfluent قراءة الرسائل المرمّزة بـ Avro وكتابتها باستخدام Confluent Schema Registry (أو الخدمات المتوافقة مع واجهة برمجة التطبيقات).
تستخدم كل رسالة تنسيق Confluent wire: بايت سحري (0x00) يتبعه معرّف مخطط بطول 4 بايت بترتيب big-endian، ثم بيانات Avro الثنائية. عند القراءة، يحدّد ClickHouse معرّف مخطط عبر الاستعلام من السجل. وعند الكتابة، يسجّل ClickHouse المخطط المستمد من أعمدة الإخراج ويضيف المعرّف الناتج إلى بداية كل صف. وتُخزَّن المخططات مؤقتًا لتحقيق أفضل أداء.
يوضح الجدول أدناه جميع أنواع البيانات التي يدعمها تنسيق Apache Avro، وأنواع بيانات ClickHouse المقابلة في استعلامات INSERT وSELECT.
** يقبل نوع Variant القيمة null ضمنيًا كقيمة للحقل، لذلك سيُحوَّل Avro union(T1, T2, null)، على سبيل المثال، إلى Variant(T1, T2).
ونتيجةً لذلك، عند إنشاء Avro من ClickHouse، يجب علينا دائمًا تضمين النوع null ضمن مجموعة أنواع Avro union لأننا لا نعرف أثناء استدلال المخطط ما إذا كانت أي قيمة هي بالفعل null.
*** الأنواع المنطقية في Avro
أنواع البيانات المنطقية غير المدعومة في Avro:
time-millis
time-micros
duration
لقراءة موضوع Kafka مُشفَّرًا باستخدام Avro عبر محرك جدول Kafka، استخدم الإعداد format_avro_schema_registry_url لتحديد URL لسجل المخططات.
لكتابة رسائل AvroConfluent إلى موضوع Kafka، عيّن عنوان URL لسجل المخططات واسم الـsubject. يُسجَّل المخطط تلقائيًا في السجل عند أول عملية كتابة.
استخدام المصادقة الأساسية
إذا كان سجل المخططات لديك يتطلب المصادقة الأساسية (على سبيل المثال، إذا كنت تستخدم Confluent Cloud)، فيمكنك تمرير بيانات الاعتماد المرمَّزة وفق URL في الإعداد format_avro_schema_registry_url.
لمراقبة تقدّم الإدخال واستكشاف أخطاء مستهلك Kafka، يمكنك الاستعلام عن جدول النظام system.kafka_consumers. إذا كان النشر لديك يتضمن عدة نُسخ متماثلة (على سبيل المثال، ClickHouse Cloud)، فيجب عليك استخدام دالة الجدول clusterAllReplicas.
إذا واجهت مشكلات في التعرّف على المخطط، يمكنك استخدام kafkacat مع clickhouse-local لتشخيص المشكلة:
آخر تعديل في ٢ يوليو ٢٠٢٦