الانتقال إلى المحتوى الرئيسي

تنسيقات بيانات الإدخال والإخراج

يدعم ClickHouse معظم تنسيقات البيانات النصية والثنائية المعروفة. ويتيح ذلك دمجه بسهولة في أي خط أنابيب بيانات تقريبًا للاستفادة من مزايا ClickHouse.

تنسيقات الإدخال

تُستخدم تنسيقات الإدخال في:
  • تحليل البيانات المُمرَّرة إلى عبارات INSERT
  • تنفيذ استعلامات SELECT من الجداول المستندة إلى ملفات، مثل File أو URL أو HDFS
  • قراءة Dictionaries
يُعد اختيار تنسيق الإدخال المناسب أمرًا بالغ الأهمية لتحقيق كفاءة إدخال البيانات في ClickHouse. ومع توفر أكثر من 70 تنسيقًا مدعومًا، فإن اختيار الخيار الأفضل أداءً يمكن أن يؤثر بشكل كبير في سرعة الإدراج، واستخدام CPU والذاكرة، والكفاءة العامة للنظام. ولمساعدتك على المفاضلة بين هذه الخيارات، أجرينا مقارنة معيارية لأداء إدخال البيانات عبر التنسيقات المختلفة، وكشفت عن أبرز النتائج التالية:
  • يُعد تنسيق Native أكثر تنسيقات الإدخال كفاءة، إذ يوفّر أفضل ضغط، وأقل استهلاك للموارد، وأدنى حمل إضافي للمعالجة على جانب الخادم.
  • الضغط ضروري - إذ يقلل LZ4 حجم البيانات بأقل تكلفة ممكنة على CPU، بينما يوفّر ZSTD ضغطًا أعلى على حساب زيادة إضافية في استخدام CPU.
  • للترتيب المسبق تأثير متوسط، لأن ClickHouse يرتّب البيانات بكفاءة بالفعل.
  • يُحسّن التجميع الكفاءة بشكل كبير - فكلما كانت الدُفعات أكبر، انخفض الحمل الإضافي للإدراج وتحسّن معدل النقل.
للاطلاع بتعمق على النتائج وأفضل الممارسات، اقرأ تحليل المقارنة المعيارية الكامل. وللاطلاع على نتائج الاختبار كاملةً، استكشف لوحة FastFormats عبر الإنترنت.

تنسيقات الإخراج

تُستخدم تنسيقات الإخراج المدعومة من أجل:
  • تنسيق نتائج استعلام SELECT
  • تنفيذ عمليات INSERT في الجداول المعتمدة على الملفات

نظرة عامة على التنسيقات

التنسيقات المدعومة هي: يمكنك التحكّم في بعض معلمات معالجة التنسيق باستخدام إعدادات ClickHouse. لمزيد من المعلومات، راجع قسم الإعدادات.

مخطط التنسيق

يُحدَّد اسم الملف الذي يحتوي على مخطط التنسيق بواسطة الإعداد format_schema. ويجب تعيين هذا الإعداد عند استخدام أحد التنسيقين Cap'n Proto وProtobuf. مخطط التنسيق هو عبارة عن اسم ملف متبوعًا باسم نوع الرسالة داخل هذا الملف، ويفصل بينهما نقطتان، على سبيل المثال schemafile.proto:MessageType. إذا كان الملف يحمل الامتداد القياسي للتنسيق (مثل .proto بالنسبة إلى Protobuf)، فيمكن حذفه، وفي هذه الحالة يكون مخطط التنسيق بالشكل schemafile:MessageType. إذا كنت تُدخل البيانات أو تُخرجها عبر العميل في الوضع التفاعلي، فإن اسم الملف المحدد في مخطط التنسيق يمكن أن يتضمن مسارًا مطلقًا أو مسارًا نسبيًا إلى الدليل الحالي على العميل. أما إذا كنت تستخدم العميل في وضع الدفعات، فيجب أن يكون مسار المخطط نسبيًا لأسباب أمنية. إذا كنت تُدخل البيانات أو تُخرجها عبر واجهة HTTP، فإن اسم الملف المحدد في مخطط التنسيق يجب أن يكون موجودًا في الدليل المحدد في format_schema_path ضمن إعدادات الخادم.

تخطي الأخطاء

يمكن لبعض التنسيقات مثل CSV وTabSeparated وTSKV وJSONEachRow وTemplate وCustomSeparated وProtobuf تخطي صف تالف عند حدوث خطأ في التحليل، ومواصلة التحليل من بداية الصف التالي. راجع إعدادَي input_format_allow_errors_num و input_format_allow_errors_ratio. القيود:
  • عند حدوث خطأ في التحليل، يتخطى JSONEachRow جميع البيانات حتى نهاية السطر (أو EOF)، لذا يجب أن تكون الصفوف مفصولة بـ \n لكي يُحتسب عدد الأخطاء بشكل صحيح.
  • يستخدم Template وCustomSeparated الفاصل بعد العمود الأخير والفاصل بين الصفوف لتحديد بداية الصف التالي، لذا لا يعمل تخطي الأخطاء إلا إذا كان أحدهما على الأقل غير فارغ.
آخر تعديل في ٢ يوليو ٢٠٢٦