إدراج البيانات في ClickHouse مقارنةً بقواعد بيانات OLTP
أفضل الممارسات لعمليات الإدراج
الإدراج على دفعات كبيرة
احرص على اتساق الدُفعات لإعادة المحاولة المتماثلة الأثر
-
- إذا كانت هناك مشكلات في العقدة التي تستقبل البيانات، فستنتهي مهلة استعلام الإدراج (أو سيُرجع خطأً أكثر تحديدًا) ولن يتلقى المُرسِل أي إقرار.
-
- إذا كانت العقدة قد كتبت البيانات ولكن تعذّر إعادة الإقرار إلى مُرسِل الاستعلام بسبب انقطاع الشبكة، فسيتلقى المُرسِل إما انتهاء مهلة أو خطأً في الشبكة.
الإدراج في جدول MergeTree أو جدول موزّع
internal_replication=true.
يترك هذا لـ ClickHouse مهمة نسخ البيانات إلى أي replica متاحة ضمن الشظايا، ويضمن أن تصبح البيانات متسقة في نهاية المطاف.
إذا كانت موازنة الحمل من جهة العميل غير عملية، فيمكنك الإدراج عبر جدول موزّع، والذي سيتولى بعد ذلك توزيع عمليات الكتابة عبر العقد. ومرة أخرى، يُنصح بضبط internal_replication=true.
ومع ذلك، تجدر الإشارة إلى أن هذا النهج أقل كفاءةً قليلًا، لأن عمليات الكتابة يجب أن تتم محليًا على العقدة التي تحتوي على الجدول الموزّع ثم تُرسل إلى الشظايا.
استخدم الإدراج غير المتزامن للدفعات الصغيرة
استخدم عملاء ClickHouse الرسميين
فضّل تنسيق Native
استخدام واجهة HTTP
مثال بسيط
INSERT INTO TABLE مع ClickHouse. لِنُدرِج بعض البيانات في الجدول الذي أنشأناه في دليل البدء السريع “إنشاء الجداول في ClickHouse”.
SELECT التالي:
تحميل البيانات من Postgres
ClickPipes، وهي أداة ETL مصممة خصيصًا لنسخ بيانات قواعد PostgreSQL. وهي متاحة في كلٍّ من:- ClickHouse Cloud - متاحة عبر خدمة الاستيعاب المُدارة ضمن ClickPipes.
- مُدار ذاتيًا - عبر مشروع PeerDB مفتوح المصدر.
- محرك جداول PostgreSQL لقراءة البيانات مباشرةً كما هو موضح في الأمثلة السابقة. ويكون هذا مناسبًا عادةً إذا كان النسخ على دفعات استنادًا إلى قيمة watermark معروفة، مثل الطابع الزمني، كافيًا، أو إذا كانت هذه عملية ترحيل لمرة واحدة. يمكن لهذا النهج التوسع إلى عشرات الملايين من الصفوف. وينبغي للمستخدمين الذين يعتزمون ترحيل مجموعات بيانات أكبر التفكير في استخدام عدة طلبات، يتعامل كلٌّ منها مع جزء من البيانات. ويمكن استخدام جداول مرحلية لكل جزء قبل نقل أقسامه إلى جدول نهائي. وهذا يتيح إعادة محاولة الطلبات الفاشلة. لمزيد من التفاصيل حول استراتيجية التحميل المجمّع هذه، راجع هنا.
- يمكن تصدير البيانات من PostgreSQL بتنسيق CSV. وبعد ذلك يمكن إدراجها في ClickHouse إما من ملفات محلية أو عبر التخزين الكائني باستخدام دوال الجداول.
هل تحتاج إلى مساعدة في إدراج مجموعات بيانات كبيرة؟إذا كنت بحاجة إلى مساعدة في إدراج مجموعات بيانات كبيرة أو واجهت أي أخطاء عند استيراد البيانات إلى ClickHouse Cloud، فيُرجى التواصل معنا على support@clickhouse.com وسنساعدك.
إدراج البيانات من سطر الأوامر
- قمت بتثبيت ClickHouse
clickhouse-serverقيد التشغيل- لديك إمكانية الوصول إلى طرفية تتوفر فيها الأدوات
wgetوzcatوcurl
1
تنزيل ملف CSV
شغّل الأمر التالي لتنزيل نسخة CSV من مجموعة البيانات من حاوية S3 العامة الخاصة بنا:يبلغ حجم هذا الملف المضغوط 4.6 جيجابايت، ويحتوي على 28 مليون صف، ومن المفترض أن يستغرق تنزيله من 5 إلى 10 دقائق.
2
إنشاء الجدول
مع تشغيل إذا لم تظهر أي أخطاء، فهذا يعني أنه تم إنشاء الجدول بنجاح. في الأمر أعلاه، استُخدمت علامات الاقتباس المفردة حول محدد Heredoc (
clickhouse-server، يمكنك إنشاء جدول فارغ بالمخطط التالي مباشرةً من سطر الأوامر باستخدام clickhouse-client في الوضع الدفعي:_EOF) لمنع أي استيفاء. ومن دون علامات الاقتباس المفردة، سيكون من الضروري إجراء إفلات لأحرف backticks المحيطة بأسماء الأعمدة.3
إدراج البيانات من سطر الأوامر
بعد ذلك، شغّل الأمر أدناه لإدراج البيانات من الملف الذي نزّلته سابقًا في جدولك:ونظرًا لأن بياناتنا مضغوطة، نحتاج أولًا إلى فك ضغط الملف باستخدام أداة مثل عند اكتمال إدراج البيانات، يمكنك تشغيل الأمر التالي لمعرفة عدد الصفوف في جدول
gzip أو zcat أو ما شابه ذلك، ثم تمرير البيانات بعد فك ضغطها إلى clickhouse-client مع تعليمة INSERT المناسبة وFORMAT.عند إدراج البيانات باستخدام clickhouse-client في الوضع التفاعلي، يمكنك ترك ClickHouse يتولى فك الضغط نيابةً عنك عند الإدراج باستخدام العبارة
COMPRESSION. ويمكن لـ ClickHouse اكتشاف نوع الضغط تلقائيًا من امتداد الملف، كما يمكنك أيضًا تحديده صراحةً.وسيبدو استعلام الإدراج حينها كما يلي:hackernews:4
إدراج البيانات عبر سطر الأوامر باستخدام curl
في الخطوات السابقة، قمت أولًا بتنزيل ملف CSV إلى جهازك المحلي باستخدام الآن شغّل:يمكنك الآن تشغيل الأمر نفسه كما في السابق للتحقق من أن البيانات أُدرجت مرة أخرى:
wget. ومن الممكن أيضًا إدراج البيانات مباشرةً من URL البعيد باستخدام أمر واحد.شغّل الأمر التالي لتفريغ بيانات جدول hackernews حتى تتمكن من إدراجها مرة أخرى من دون الخطوة الوسيطة الخاصة بتنزيلها إلى جهازك المحلي: