الانتقال إلى المحتوى الرئيسي
في هذا الدليل، ستُدرِج 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

حمّل البيانات باستخدام استدلال المخطط

أبسط أداة لتحميل البيانات وأكثرها قوة هي clickhouse-client: عميل سطر أوامر أصلي غني بالميزات. ولتحميل البيانات، يمكنك مرة أخرى الاستفادة من استدلال المخطط، مع الاعتماد على ClickHouse لتحديد أنواع الأعمدة.شغّل الأمر التالي لإنشاء جدول وإدراج البيانات مباشرةً من ملف CSV بعيد، مع الوصول إلى المحتوى عبر الدالة url. ويُستدل على المخطط تلقائيًا:
يؤدي هذا إلى إنشاء جدول فارغ باستخدام المخطط المُستنتَج من البيانات. يتيح لنا الأمر DESCRIBE TABLE فهم الأنواع التي جرى تعيينها.
Query
Response
لإدخال البيانات إلى هذا الجدول، استخدم الأمر INSERT INTO, SELECT. وباستخدام الدالة url، ستُبث البيانات مباشرةً من عنوان URL:
لقد نجحت في إدراج 28 مليون صف في ClickHouse باستخدام أمر واحد!
4

استعراض البيانات

احصل على عيّنة من قصص Hacker News وبعض الأعمدة المحددة بتشغيل الاستعلام التالي:
Query
Response
في حين أن استنتاج المخطط أداة ممتازة للاستكشاف الأولي للبيانات، فإنه يعمل وفق مبدأ «أفضل جهد ممكن»، ولا يُعد بديلاً طويل الأمد عن تحديد مخطط أمثل لبياناتك.
5

عرّف مخططًا

من التحسينات الواضحة والمباشرة تحديد نوع لكل حقل. بالإضافة إلى تعريف حقل الوقت بالنوع DateTime، نحدّد نوعًا مناسبًا لكل حقل من الحقول أدناه بعد حذف مجموعة البيانات الحالية. في ClickHouse، يُحدَّد المفتاح الأساسي للبيانات عبر عبارة ORDER BY.يساعد اختيار الأنواع المناسبة وتحديد الأعمدة التي ينبغي تضمينها في عبارة ORDER BY على تحسين سرعة الاستعلام والضغط.شغّل الاستعلام أدناه لحذف المخطط القديم وإنشاء المخطط المُحسَّن:
Query
بعد تحسين المخطّط، يمكنك الآن إدراج البيانات من نظام الملفات المحلي. وباستخدام clickhouse-client مرة أخرى، أدرِج الملف عبر عبارة INFILE مع تعليمة INSERT INTO صريحة.
Query
6

تشغيل استعلامات نموذجية

فيما يلي بعض نماذج الاستعلامات لتستلهم منها أفكاراً لكتابة استعلاماتك الخاصة.

ما مدى شيوع موضوع “ClickHouse” في Hacker News؟

يوفر حقل score مقياسًا لشعبية القصص، في حين يمكن استخدام حقل id ومعامل الدمج || لإنشاء رابط للمنشور الأصلي.
Query
Response
هل يُنتج ClickHouse ضوضاءً أكثر بمرور الوقت؟ يتضح هنا الفائدة من تعريف الحقل time بوصفه DateTime، إذ يتيح استخدام نوع البيانات المناسب توظيف الدالة toYYYYMM():
Query
Response
يبدو أن شعبية “ClickHouse” في تزايد مستمر مع مرور الوقت.

من هم أكثر المعلّقين نشاطاً على المقالات المتعلقة بـ ClickHouse؟

Query
Response

ما التعليقات التي تُثير أكبر قدر من الاهتمام؟

Query
Response

Parquet

من نقاط قوة ClickHouse قدرته على التعامل مع طيف واسع من التنسيقات. ويمثّل CSV حالة استخدام شبه مثالية، لكنه ليس الخيار الأكثر كفاءة لتبادل البيانات. بعد ذلك، ستحمّل البيانات من ملف Parquet، وهو تنسيق عمودي فعّال. يوفّر Parquet مجموعة محدودة من الأنواع، ويجب على ClickHouse الالتزام بها، كما أن معلومات الأنواع هذه تكون مُرمَّزة في التنسيق نفسه. وسيؤدي الاستدلال على الأنواع في ملف Parquet حتمًا إلى مخطط يختلف قليلًا عن المخطط الخاص بملف CSV.
1

إدراج البيانات

نفّذ الاستعلام التالي لقراءة البيانات نفسها بتنسيق Parquet، باستخدام الدالة url مرة أخرى لقراءة البيانات البعيدة:
المفاتيح ذات القيمة NULL مع Parquetبحكم تنسيق Parquet، علينا أن نقبل أن المفاتيح قد تكون NULL، حتى إن لم تكن موجودة في البيانات.
شغّل الأمر التالي لعرض المخطط المُستنتَج:
Response
كما فعلنا سابقًا مع ملف CSV، يمكنك تحديد المخطط يدويًا لمزيد من التحكم في الأنواع المختارة وإدراج البيانات مباشرةً من S3:
2

أضف فهرس تخطٍّ لتسريع الاستعلامات

لمعرفة كم تعليقًا يذكر “ClickHouse”، شغّل الاستعلام التالي:
Query
Response
بعد ذلك، ستنشئ فهرسًا معكوسًا على العمود “comment” لتسريع تنفيذ هذا الاستعلام. لاحظ أن التعليقات المكتوبة بأحرف صغيرة ستُفهرس للعثور على المصطلحات بغضّ النظر عن حالة الأحرف.شغّل الأوامر التالية لإنشاء الفهرس:
تستغرق عملية تجسيد الفهرس بعض الوقت (للتحقق مما إذا كان الفهرس قد أُنشئ، استخدم جدول النظام system.data_skipping_indices).شغّل الاستعلام مرة أخرى بعد إنشاء الفهرس:
Query
لاحظ أن الاستعلام لا يستغرق الآن سوى 0.248 ثانية مع الفهرس، بعد أن كان يستغرق 0.843 ثانية سابقًا من دونه:
Response
يمكن استخدام عبارة EXPLAIN لفهم سبب تحسين إضافة هذا الفهرس لأداء الاستعلام بنحو 3.4 مرة.
Response
لاحظ كيف أتاح الفهرس تخطّي عدد كبير من الحبيبات لتسريع الاستعلام.ومن الممكن الآن أيضًا البحث بكفاءة عن مصطلح واحد أو عن مجموعة من المصطلحات كلها:
Query
Response
Query
Response
آخر تعديل في ١ يوليو ٢٠٢٦