في هذا الدليل، ستُدرِج 28 مليون صف من بيانات Hacker News في جدول ClickHouse باستخدام تنسيقي CSV وParquet، ثم تُشغِّل بعض الاستعلامات البسيطة لاستكشاف البيانات.
CSV
1
تنزيل CSV
يمكن تنزيل نسخة CSV من مجموعة البيانات من حاوية S3 العامة الخاصة بنا، أو بتشغيل هذا الأمر:بحجم 4.6GB و28 مليون صف، من المفترض أن يستغرق تنزيل هذا الملف المضغوط من 5 إلى 10 دقائق.
2
أخذ عينة من البيانات
يتيح لك بعد ذلك، نفّذ الأمر التالي لاستكشاف البيانات:يوفر هذا الأمر الكثير من الإمكانات الدقيقة.
يتيح لك العامل
clickhouse-local إجراء معالجة سريعة للملفات المحلية دون
الحاجة إلى نشر خادم ClickHouse وتهيئته.قبل تخزين أي بيانات في ClickHouse، لنأخذ عينة من الملف باستخدام clickhouse-local.
من الطرفية شغّل:Query
Response
file قراءة الملف من قرص محلي، مع تحديد التنسيق CSVWithNames فقط.
والأهم من ذلك، تُستنتج البنية تلقائيًا من محتويات الملف.
لاحظ أيضًا أن clickhouse-local يستطيع قراءة الملف المضغوط، إذ يستنتج تنسيق gzip من امتداد الملف.
يُستخدم التنسيق Vertical لتسهيل عرض البيانات لكل عمود.3
حمّل البيانات باستخدام استدلال المخطط
أبسط أداة لتحميل البيانات وأكثرها قوة هي يؤدي هذا إلى إنشاء جدول فارغ باستخدام المخطط المُستنتَج من البيانات.
يتيح لنا الأمر لإدخال البيانات إلى هذا الجدول، استخدم الأمر لقد نجحت في إدراج 28 مليون صف في ClickHouse باستخدام أمر واحد!
clickhouse-client: عميل سطر أوامر أصلي غني بالميزات.
ولتحميل البيانات، يمكنك مرة أخرى الاستفادة من استدلال المخطط، مع الاعتماد على ClickHouse لتحديد أنواع الأعمدة.شغّل الأمر التالي لإنشاء جدول وإدراج البيانات مباشرةً من ملف CSV بعيد، مع الوصول إلى المحتوى عبر الدالة url.
ويُستدل على المخطط تلقائيًا:DESCRIBE TABLE فهم الأنواع التي جرى تعيينها.Query
Response
INSERT INTO, SELECT.
وباستخدام الدالة url، ستُبث البيانات مباشرةً من عنوان URL:4
استعراض البيانات
احصل على عيّنة من قصص Hacker News وبعض الأعمدة المحددة بتشغيل الاستعلام التالي:في حين أن استنتاج المخطط أداة ممتازة للاستكشاف الأولي للبيانات، فإنه يعمل وفق مبدأ «أفضل جهد ممكن»، ولا يُعد بديلاً طويل الأمد عن تحديد مخطط أمثل لبياناتك.
Query
Response
5
عرّف مخططًا
من التحسينات الواضحة والمباشرة تحديد نوع لكل حقل.
بالإضافة إلى تعريف حقل الوقت بالنوع بعد تحسين المخطّط، يمكنك الآن إدراج البيانات من نظام الملفات المحلي.
وباستخدام
DateTime، نحدّد نوعًا مناسبًا لكل حقل من الحقول أدناه بعد حذف مجموعة البيانات الحالية.
في ClickHouse، يُحدَّد المفتاح الأساسي للبيانات عبر عبارة ORDER BY.يساعد اختيار الأنواع المناسبة وتحديد الأعمدة التي ينبغي تضمينها في عبارة ORDER BY
على تحسين سرعة الاستعلام والضغط.شغّل الاستعلام أدناه لحذف المخطط القديم وإنشاء المخطط المُحسَّن:Query
clickhouse-client مرة أخرى، أدرِج الملف عبر عبارة INFILE مع تعليمة INSERT INTO صريحة.Query
6
تشغيل استعلامات نموذجية
فيما يلي بعض نماذج الاستعلامات لتستلهم منها أفكاراً لكتابة استعلاماتك الخاصة.هل يُنتج ClickHouse ضوضاءً أكثر بمرور الوقت؟ يتضح هنا الفائدة من تعريف الحقل يبدو أن شعبية “ClickHouse” في تزايد مستمر مع مرور الوقت.
ما مدى شيوع موضوع “ClickHouse” في Hacker News؟
يوفر حقل score مقياسًا لشعبية القصص، في حين يمكن استخدام حقلid ومعامل الدمج ||
لإنشاء رابط للمنشور الأصلي.Query
Response
time
بوصفه DateTime، إذ يتيح استخدام نوع البيانات المناسب توظيف الدالة toYYYYMM():Query
Response
من هم أكثر المعلّقين نشاطاً على المقالات المتعلقة بـ ClickHouse؟
Query
Response
ما التعليقات التي تُثير أكبر قدر من الاهتمام؟
Query
Response
Parquet
1
أدرِج البيانات
شغّل query التالية لقراءة البيانات نفسها بتنسيق Parquet، باستخدام دالة شغّل الأمر التالي لعرض المخطط المستنتج:تستخدم الخطوات المتبقية أسماء أعمدة أوضح، مثل
url مرة أخرى لقراءة البيانات عن بُعد:مفاتيح NULL في Parquetيستنتج النظام مخططًا يجعل الأعمدة من النوع
Nullable، لذا يلزم allow_nullable_key رغم أن مجموعة البيانات هذه لا تحتوي على
أي معرّفات NULL.Query
Response
author وcomment، لذا تابع باستخدام مخطط مُحدَّد يدويًا.
احذف أولًا الجدول المُستنتَج، ثم أنشئ الجدول وأدرج البيانات مباشرةً من حاوية S3 العامة:2
أضِف فهرسًا نصيًا لتسريع البحث
لمعرفة عدد التعليقات التي تشير إلى “ClickHouse”، نفِّذ الاستعلام التالي:بعد ذلك، أنشئ فهرسًا نصيًا للعمود تقوم عملية المادية بإنشاء الفهرس للبيانات الموجودة. ينتظر الإعداد تظل النتيجة نفسها لأن الفهرس يغيّر طريقة عثور ClickHouse على الصفوف المطابقة، وليس الصفوف التي تُعدّ مطابقة. يعالج الاستعلام المفهرس
بيانات أقل بكثير ويكتمل أسرع بكثير.
استخدم يوضح الإدخال استخدم
Query
Response
comment
لتسريع هذا الاستعلام. يستخدم الفهرس النصي فهرسًا معكوسًا يربط الرموز المميزة بالصفوف التي تحتوي عليها.
يقسّم محلّل الرموز splitByNonAlpha النص عند المحارف غير الأبجدية الرقمية. يستخدم الفهرس والاستعلامات lower(comment)
مع مصطلحات بحث بأحرف صغيرة، بحيث لا تتأثر المطابقة بحالة الأحرف. يجب أن يتطابق تعبير الاستعلام مع التعبير المفهرس.شغّل الأوامر التالية لإنشاء الفهرس:mutations_sync حتى تكتمل عملية المادية.
يمكنك التحقق من تعريف الفهرس في جدول system.data_skipping_indices.شغّل الاستعلام نفسه مرة أخرى بعد اكتمال مادية الفهرس:Query
Response
EXPLAIN للتأكد من أن ClickHouse يخطط لاستخدام الفهرس:Query
Response
comment_idx أن ClickHouse يخطط لاستخدام فهرس النص. في هذا المثال، تختار الخطة 547 من أصل 3527
وحدة حبيبية، ما يقلل بدرجة كبيرة كمية البيانات التي يجري فحصها.يمكنك أيضًا البحث عن أي رمز مميز أو جميع الرموز المميزة المتعددة. تطابق هذه الدوال الرموز المميزة الكاملة التي ينتجها محلل الرموز المميزة الخاص بالفهرس.
استخدم hasAnyTokens عندما يلزم تطابق رمز مميز واحد على الأقل:Query
Response
hasAllTokens عندما يلزم تطابق جميع الوحدات النصية، بأي ترتيب:Query
Response