في هذا الدليل، ستُدرِج 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
إدراج البيانات
نفّذ الاستعلام التالي لقراءة البيانات نفسها بتنسيق Parquet، باستخدام الدالة url مرة أخرى لقراءة البيانات البعيدة:شغّل الأمر التالي لعرض المخطط المُستنتَج:كما فعلنا سابقًا مع ملف CSV، يمكنك تحديد المخطط يدويًا لمزيد من التحكم في الأنواع المختارة وإدراج
البيانات مباشرةً من S3:
المفاتيح ذات القيمة NULL مع Parquetبحكم تنسيق Parquet، علينا أن نقبل أن المفاتيح قد تكون
NULL،
حتى إن لم تكن موجودة في البيانات.Response
2
أضف فهرس تخطٍّ لتسريع الاستعلامات
لمعرفة كم تعليقًا يذكر “ClickHouse”، شغّل الاستعلام التالي:بعد ذلك، ستنشئ فهرسًا معكوسًا على العمود “comment”
لتسريع تنفيذ هذا الاستعلام.
لاحظ أن التعليقات المكتوبة بأحرف صغيرة ستُفهرس للعثور على المصطلحات بغضّ النظر عن حالة الأحرف.شغّل الأوامر التالية لإنشاء الفهرس:تستغرق عملية تجسيد الفهرس بعض الوقت (للتحقق مما إذا كان الفهرس قد أُنشئ، استخدم جدول النظام لاحظ أن الاستعلام لا يستغرق الآن سوى 0.248 ثانية مع الفهرس، بعد أن كان يستغرق 0.843 ثانية سابقًا من دونه:يمكن استخدام عبارة لاحظ كيف أتاح الفهرس تخطّي عدد كبير من الحبيبات
لتسريع الاستعلام.ومن الممكن الآن أيضًا البحث بكفاءة عن مصطلح واحد أو عن مجموعة من المصطلحات كلها:
Query
Response
system.data_skipping_indices).شغّل الاستعلام مرة أخرى بعد إنشاء الفهرس:Query
Response
EXPLAIN لفهم سبب تحسين
إضافة هذا الفهرس لأداء الاستعلام بنحو 3.4 مرة.Response
Query
Response
Query
Response