الانتقال إلى المحتوى الرئيسي
يدعم ClickHouse عدة تنسيقات ثنائية، ما يوفّر أداءً أفضل وكفاءة أعلى في استهلاك المساحة. كما أن التنسيقات الثنائية آمنة أيضًا من حيث ترميز المحارف، لأن البيانات تُحفَظ في هيئة ثنائية. سنستخدم جدول some_data table وملف data للتوضيح، ويمكنك إعادة تطبيق ذلك على مثيل ClickHouse لديك.

التصدير بتنسيق Native الخاص بـ ClickHouse

أكثر تنسيقات البيانات كفاءةً لتصدير البيانات واستيرادها بين عُقد ClickHouse هو تنسيق Native. ويُجرى التصدير باستخدام العبارة INTO OUTFILE:
سيؤدي هذا إلى إنشاء ملف data.clickhouse بتنسيق Native.

الاستيراد من تنسيق Native

لاستيراد البيانات، يمكن استخدام file() مع الملفات الأصغر أو لأغراض الاستكشاف:
عند استخدام الدالة file() مع ClickHouse Cloud، ستحتاج إلى تشغيل الأوامر في clickhouse client على الجهاز الموجود عليه الملف. ويمكنك أيضًا استخدام clickhouse-local لاستكشاف الملفات محليًا.
في بيئة production، نستخدم FROM INFILE لاستيراد البيانات:

ضغط تنسيق Native

يمكننا أيضًا تفعيل الضغط عند تصدير البيانات إلى تنسيق Native (وكذلك معظم التنسيقات الأخرى) باستخدام بند COMPRESSION:
استخدمنا ضغط LZ4 للتصدير. وسنحتاج إلى تحديد ذلك عند استيراد البيانات:

التصدير إلى RowBinary

من بين التنسيقات الثنائية المدعومة أيضًا RowBinary، والذي يتيح استيراد البيانات وتصديرها في صورة صفوف ممثلة ثنائيًا:
سيؤدي ذلك إلى إنشاء ملف data.binary بتنسيق ثنائي للصفوف.

استكشاف ملفات RowBinary

لا يدعم هذا التنسيق استنتاج المخطط تلقائيًا، لذا يجب تحديد المخطط صراحةً للاستكشاف قبل التحميل:
يمكنك استخدام RowBinaryWithNames، إذ يضيف أيضًا صف عنوان يتضمن قائمة بأسماء الأعمدة. كما يضيف RowBinaryWithNamesAndTypes صف عنوان إضافيًا يتضمن أنواع الأعمدة.

الاستيراد من ملفات RowBinary

لتحميل البيانات من ملف RowBinary، يمكن استخدام بند FROM INFILE:

استيراد قيمة ثنائية واحدة باستخدام RawBLOB

لنفترض أننا نريد قراءة ملف ثنائي بالكامل وحفظه في حقل ضمن جدول. وهذه هي الحالة التي يمكن فيها استخدام تنسيق RawBLOB. ولا يمكن استخدام هذا التنسيق مباشرةً إلا مع جدول ذي عمود واحد فقط:
لنحفظ ملف صورة في الجدول images:
يمكننا التحقق من طول حقل data، إذ سيكون مساويًا لحجم الملف الأصلي:

تصدير بيانات RawBLOB

يمكن أيضًا استخدام هذا التنسيق لتصدير البيانات باستخدام عبارة INTO OUTFILE:
لاحظ أننا اضطررنا إلى استخدام LIMIT 1، لأن تصدير أكثر من قيمة واحدة سيؤدي إلى إنشاء ملف تالف.

MessagePack

يدعم ClickHouse الاستيراد من MessagePack والتصدير إليه باستخدام MsgPack. للتصدير بتنسيق MessagePack:
لاستيراد البيانات من ملف بتنسيق MessagePack:

Protocol Buffers

للعمل مع Protocol Buffers، نحتاج أولًا إلى تعريف ملف المخطط:
يُضبط مسار ملف المخطط هذا (schema.proto في حالتنا) عبر خيار الإعداد format_schema الخاص بتنسيق Protobuf:
يحفظ هذا البيانات في ملف proto.bin. ويدعم ClickHouse أيضًا استيراد بيانات Protobuf، بالإضافة إلى الرسائل المتداخلة. يُستحسن استخدام ProtobufSingle للعمل مع رسالة Protocol Buffer واحدة (لن تُضمَّن محددات الطول في هذه الحالة).

Cap’n Proto

من تنسيقات التسلسل الثنائي الشائعة الأخرى التي يدعمها ClickHouse تنسيق Cap’n Proto. وكما هو الحال مع تنسيق Protobuf، علينا تعريف ملف المخطط (schema.capnp) في مثالنا:
يمكننا الآن الاستيراد والتصدير باستخدام تنسيق CapnProto والمخطط التالي:
لاحظ أننا اضطررنا إلى تحويل نوع العمود Date إلى UInt32 من أجل مطابقة الأنواع المقابلة.

تنسيقات أخرى

يدعم ClickHouse العديد من التنسيقات، النصية والثنائية، لتلبية مختلف السيناريوهات والمنصات. اطّلع على المزيد من التنسيقات وطرق العمل معها في المقالات التالية: واطّلع أيضًا على clickhouse-local — وهي أداة محمولة متكاملة الميزات للعمل على الملفات المحلية/البعيدة دون تشغيل ClickHouse server.
آخر تعديل في ٢ يوليو ٢٠٢٦