في هذا الدليل، ستُدرِج 28 مليون صف من بيانات Hacker News في جدول ClickHouse باستخدام تنسيقي CSV وParquet، ثم تُشغِّل بعض الاستعلامات البسيطة لاستكشاف البيانات.
CSV
تنزيل CSV
يمكن تنزيل نسخة CSV من مجموعة البيانات من حاوية S3 العامة الخاصة بنا، أو بتشغيل هذا الأمر:أخذ عينة من البيانات
يتيح لكclickhouse-local إجراء معالجة سريعة للملفات المحلية دون
الحاجة إلى نشر خادم ClickHouse وتهيئته.قبل تخزين أي بيانات في ClickHouse، لنأخذ عينة من الملف باستخدام clickhouse-local.
من الطرفية شغّل:Query
Response
file قراءة الملف من قرص محلي، مع تحديد التنسيق CSVWithNames فقط.
والأهم من ذلك، تُستنتج البنية تلقائيًا من محتويات الملف.
لاحظ أيضًا أن clickhouse-local يستطيع قراءة الملف المضغوط، إذ يستنتج تنسيق gzip من امتداد الملف.
يُستخدم التنسيق Vertical لتسهيل عرض البيانات لكل عمود.حمّل البيانات باستخدام استدلال المخطط
أبسط أداة لتحميل البيانات وأكثرها قوة هيclickhouse-client: عميل سطر أوامر أصلي غني بالميزات.
ولتحميل البيانات، يمكنك مرة أخرى الاستفادة من استدلال المخطط، مع الاعتماد على ClickHouse لتحديد أنواع الأعمدة.شغّل الأمر التالي لإنشاء جدول وإدراج البيانات مباشرةً من ملف CSV بعيد، مع الوصول إلى المحتوى عبر الدالة url.
ويُستدل على المخطط تلقائيًا:DESCRIBE TABLE فهم الأنواع التي جرى تعيينها.Query
Response
INSERT INTO, SELECT.
وباستخدام الدالة url، ستُبث البيانات مباشرةً من عنوان URL:استعراض البيانات
احصل على عيّنة من قصص Hacker News وبعض الأعمدة المحددة بتشغيل الاستعلام التالي:Query
Response
عرّف مخططًا
من التحسينات الواضحة والمباشرة تحديد نوع لكل حقل. بالإضافة إلى تعريف حقل الوقت بالنوعDateTime، نحدّد نوعًا مناسبًا لكل حقل من الحقول أدناه بعد حذف مجموعة البيانات الحالية.
في ClickHouse، يُحدَّد المفتاح الأساسي للبيانات عبر عبارة ORDER BY.يساعد اختيار الأنواع المناسبة وتحديد الأعمدة التي ينبغي تضمينها في عبارة ORDER BY
على تحسين سرعة الاستعلام والضغط.شغّل الاستعلام أدناه لحذف المخطط القديم وإنشاء المخطط المُحسَّن:Query
clickhouse-client مرة أخرى، أدرِج الملف عبر عبارة INFILE مع تعليمة INSERT INTO صريحة.Query
تشغيل استعلامات نموذجية
فيما يلي بعض نماذج الاستعلامات لتستلهم منها أفكاراً لكتابة استعلاماتك الخاصة.ما مدى شيوع موضوع “ClickHouse” في Hacker News؟
يوفر حقل score مقياسًا لشعبية القصص، في حين يمكن استخدام حقلid ومعامل الدمج ||
لإنشاء رابط للمنشور الأصلي.Query
Response
time
بوصفه DateTime، إذ يتيح استخدام نوع البيانات المناسب توظيف الدالة toYYYYMM():Query
Response
من هم أكثر المعلّقين نشاطاً على المقالات المتعلقة بـ ClickHouse؟
Query
Response
ما التعليقات التي تُثير أكبر قدر من الاهتمام؟
Query
Response
Parquet
إدراج البيانات
نفّذ الاستعلام التالي لقراءة البيانات نفسها بتنسيق Parquet، باستخدام الدالة url مرة أخرى لقراءة البيانات البعيدة:المفاتيح ذات القيمة NULL مع Parquetبحكم تنسيق Parquet، علينا أن نقبل أن المفاتيح قد تكون
NULL،
حتى إن لم تكن موجودة في البيانات.Response
أضف فهرس تخطٍّ لتسريع الاستعلامات
لمعرفة كم تعليقًا يذكر “ClickHouse”، شغّل الاستعلام التالي:Query
Response
system.data_skipping_indices).شغّل الاستعلام مرة أخرى بعد إنشاء الفهرس:Query
Response
EXPLAIN لفهم سبب تحسين
إضافة هذا الفهرس لأداء الاستعلام بنحو 3.4 مرة.Response
Query
Response
Query
Response