دليل النشر

استضافة ClickHouse على خادم VPS

انشر على VPS Cloud ←

دليل عملي

قواعد البيانات

استضافة ClickHouse على خادم VPS

ClickHouse هو قاعدة بيانات تحليلية موجّهة نحو الأعمدة، قادرة على تجميع مليارات الصفوف في بضع مللي ثانية. إنه الأداة المرجعية لإعداد التقارير وتحليل السجلّات ولوحات المعلومات في الوقت الفعلي، ويُستضاف ذاتيًا بشكل ممتاز على خادم VPS محدد الحجم بشكل صحيح. وإليك كيفية نشره باستخدام Docker وتأمينه وتهيئته لأداء أمثل.

9 دقائق للقراءةعدد الخطوات: 6
المحتويات· لماذا تستضيف ClickHouse بنفسك على خادم VPS1/10
  1. 01لماذا تستضيف ClickHouse بنفسك على خادم VPS
  2. 02الفوائد العملية لاستضافة ClickHouse بنفسك
  3. 03متطلبات الأجهزة والبرامج
  4. 04نشر ClickHouse خطوة بخطوة
  5. 05الإعداد بعد التثبيت: المستخدمون وقاعدة البيانات والضغط
  6. 06حالات الاستخدام العملية: سجلات التطبيقات والمقاييس الزمنية
  7. 07الأداء: إدراج الدفعات ومراقبة الأجزاء
  8. 08استكشاف الأخطاء الشائعة
  9. 09تثبيته بنقرة واحدة من Marketplace سيرفوربيت
  10. 10‏ClickHouse مقابل Elasticsearch للسجلات: أي قاعدة بيانات تختار؟

لماذا تستضيف ClickHouse بنفسك على خادم VPS

‏ClickHouse يتألق في استعلامات التحليل (OLAP): بفضل التخزين العمودي والضغط القوي، يستطيع مسح تيرابايتات على أجهزة متواضعة حيث تنهار قواعد البيانات العلائقية الكلاسيكية. استضافته بنفسك على خادم VPS يوفّر عليك تكاليف الاستعلامات في الخدمات المُدارة (ClickHouse Cloud أو BigQuery) ويمنحك السيطرة الكاملة على المخطط ومحركات الجداول وسياسات الاحتفاظ بالبيانات. هذا مناسب بشكل خاص لاستيعاب سجلات تطبيقاتك ومقاييس منتجاتك أو أحداث التحليلات دون إرسال بياناتك إلى طرف ثالث. بما أن ‏ClickHouse يضغط البيانات بمعدل 5 إلى 10 مرات، يستطيع خادم VPS بقرص SSD معقول تخزين مئات الملايين من الأحداث. كذلك تحتفظ بالسيطرة على زمن الاستجابة: لوحاتك تستعلم من نسخة قريبة من مستخدميك بدلاً من خدمة بعيدة.

الفوائد العملية لاستضافة ClickHouse بنفسك

  • استعلامات تحليلية سريعة للغاية: تجميعات على مئات الملايين من الصفوف في أقل من ثانية.
  • ضغط عمودي بمعدل 5 إلى 10 مرات يُقلّص تكلفة تخزين السجلات والأحداث بشكل كبير.
  • استيعاب هائل: مئات الآلاف من الصفوف في الثانية على عقدة واحدة مضبوطة جيداً.
  • ‏متوافق مع SQL ومع العديد من الموصّلات (Grafana وMetabase وعملاء HTTP والبروتوكول الأصلي).
  • سيادة تحليلية: سجلاتك ومقاييس منتجاتك تبقى على بنيتك التحتية.
  • لا فوترة لكل استعلام: تكلفة VPS ثابتة مقابل حجم تحليلي مرتفع.

متطلبات الأجهزة والبرامج

‏ClickHouse يحب الذاكرة العشوائية RAM والقرص السريع. الحد الأدنى المطلق هو 2 جيجابايت من الذاكرة لبيئة الاختبار أو التطوير، لكن 4 جيجابايت هي الحد الأدنى الموصى به للأحمال الإنتاجية الخفيفة، وتوفر 8 جيجابايت هامشاً أفضل بكثير للتجميعات الكبيرة والـ mark cache. أما المعالج، فإن 2 vCPU تكفي للاستعلامات البسيطة، وتصبح 4 vCPU ضرورية للتجميعات والجمع على الجداول الكثيفة. القرص هو العامل الأكثر أهمية: قرص NVMe SSD إلزامي — فـ‏ClickHouse يُولّد I/O مكثفة أثناء دمج الأقسام. الميناءان الأساسيان: 8123 لواجهة HTTP و9000 للبروتوكول الأصلي TCP. لا تكشف المنفذ 9000 مباشرة على الإنترنت.

نشر ClickHouse خطوة بخطوة

  1. تحضير الخادم VPS

    ‏ثبّت Docker وارفع حدود النظام (ulimit -n إلى 262144) لأن ClickHouse يفتح عدداً كبيراً من واصفات الملفات. عطّل الـ swap المفرط وتحقق من أن القرص NVMe SSD.

  2. تشغيل ClickHouse عبر Docker

    ‏استخدم الصورة الرسمية clickhouse/clickhouse-server. ارفع ثلاثة أحجام دائمة: /var/lib/clickhouse للبيانات، و/var/log/clickhouse-server للسجلات، ومجلد الإعداد /etc/clickhouse-server/config.d. أضف ulimits: nofile: 262144 في ملف compose.

  3. إنشاء مستخدم وكلمة مرور

    ‏لا تترك المستخدم default بدون كلمة مرور. أنشئ ملف users.d/custom.xml بمستخدم مخصص وكلمة مرور مُشفَّرة (echo -n password | sha256sum) وحصصاً. قيّد <networks> بعناوين IP المصرّح بها.

  4. ضبط الذاكرة والملف الشخصي

    ‏في config.d، اضبط max_server_memory_usage_to_ram_ratio على 0.8 وحدّد max_memory_usage لكل استعلام مناسباً لخادمك. فعّل TTL على جداولك (TTL date + INTERVAL 90 DAY).

  5. كشف واجهة HTTP خلف وكيل عكسي

    ‏ClickHouse يكشف واجهة HTTP على المنفذ 8123. ضع Nginx أو Caddy أمامه لـ TLS والمصادقة الإضافية، ولا تفتح المنفذ 9000 للعموم.

  6. ربط أداة تصور

    ‏صل Grafana أو Metabase بنقطة HTTPS لبناء لوحاتك. أنشئ جداولك بمحرك MergeTree مع ORDER BY مناسب وتقسيم شهري.

الإعداد بعد التثبيت: المستخدمون وقاعدة البيانات والضغط

‏بمجرد تشغيل ClickHouse، ثلاثة إجراءات تعزز الأمان والأداء. أولاً، أنشئ قاعدة بيانات مخصصة عبر CREATE DATABASE analytics;. ثانياً، عرّف مستخدميك في ملف users.d/production.xml بدلاً من users.xml الرئيسي لتتمكن من إعادة تحميل المستخدمين دون إعادة تشغيل الخادم (SYSTEM RELOAD USERS). ثالثاً، فعّل ضغط LZ4 في config.d/compression.xml: وهو الكودك الافتراضي لـ ClickHouse ويوفر توازناً جيداً بين نسبة الضغط وسرعة فك الضغط. للحصول على تخزين أكثر ضغطاً، ZSTD (المستويات 1 إلى 3) بديل مناسب للأعمدة نادرة الاستعلام.

حالات الاستخدام العملية: سجلات التطبيقات والمقاييس الزمنية

‏ClickHouse هو بديل طبيعي لـ Elasticsearch في خطوط أنابيب سجلات التحليلات. حيث يفهرس Elasticsearch كل حقل في كل مستند JSON ويستهلك ذاكرة JVM كبيرة، يخزّن ClickHouse كل عمود بشكل منفصل ويضغط القيم المتكررة بكفاءة عالية. لخط أنابيب السجلات، أنشئ جدول logs بمحرك MergeTree مقسّماً بالتاريخ مرتّباً بـ (service, timestamp). استوعب البيانات عبر واجهة HTTP في INSERT دفعية، أو عبر Vector.dev أو Fluent Bit. استعلام نموذجي على 500 مليون صف يعمل في 2 إلى 8 ثوانٍ على خادم 4 vCPU / 8 جيجابايت — أسرع بـ 10 إلى 100 مرة من قاعدة بيانات علائقية تقليدية.

الأداء: إدراج الدفعات ومراقبة الأجزاء

‏سلوك الكتابة في ClickHouse مختلف جوهرياً عن قواعد OLTP. كل INSERT ينشئ جزءاً جديداً على القرص، وClickHouse يدمج هذه الأجزاء في الخلفية. إذا أدرجت صفاً بصف أو بدفعات صغيرة (أقل من 1000 صف)، ستغمر النظام بأجزاء صغيرة وستظهر خطأ Too many parts. القاعدة الذهبية هي الإدراج بدفعات من 10,000 إلى 100,000 صف على الأقل. راقب صحة الأجزاء بـ SELECT table, count() as parts FROM system.parts WHERE active GROUP BY table ORDER BY parts DESC.

استكشاف الأخطاء الشائعة

‏ثلاثة أخطاء تظهر بانتظام عند نشر ClickHouse على VPS. Too many parts: أنت تُدرج دفعات صغيرة جداً؛ جمّع إدراجاتك أو استخدم محرك Buffer. خطأ OOM: الاستعلام استهلك ذاكرة أكثر مما يسمح به max_memory_usage؛ أضف LIMIT لاستعلاماتك الاستكشافية أو انتقل إلى VPS بذاكرة أكبر. Permission denied على /var/lib/clickhouse: مستخدم النظام clickhouse (UID 101) لا يملك حقوق الكتابة على الحجم المُركَّب؛ شغّل chown -R 101:101 /مسارك/clickhouse-data على المضيف قبل تشغيل الحاوية.

تثبيته بنقرة واحدة من Marketplace سيرفوربيت

‏كل ما سبق يمكن فعله يدوياً، ومفيد معرفة كيفية ذلك. إذا كنت تفضّل عدم فعله، ClickHouse متاح في Marketplace سيرفوربيت ويُثبَّت على VPS بنقرة واحدة. النموذج ينشر الإصدار 26.3 LTS المُثبَّت، يُركّب الأحجام الدائمة للبيانات والسجلات، يرفع حد واصفات الملفات إلى 262144، وينشئ قاعدة بيانات analytics عند أول تشغيل. والأهم أنه يُغلق الفخ الأكثر شيوعاً: الصورة الأصلية تأتي بحساب default بدون كلمة مرور، والتثبيت يحذفه ويستبدله بحساب admin كلمة مروره مُولَّدة لخادمك وتظهر في منطقتك الشخصية.

‏ClickHouse مقابل Elasticsearch للسجلات: أي قاعدة بيانات تختار؟

مرّر الجدول أفقيًا

Backendabverdict
التخزين لكل جيجابايت من السجلات‏ClickHouse‏Elasticsearch‏ClickHouse (ضغط 5-10x مقابل 1-2x)
الاستعلامات التحليلية (التجميعات، الاتجاهات)ثوانٍ على 500 مليون صفدقائق أو تدهور‏ClickHouse
البحث النصي الكامل في الرسائلمحدود (LIKE, token BF)أصلي وعالي الأداء‏Elasticsearch
الذاكرة المطلوبة للبدء2 جيجابايت كحد أدنى4-8 جيجابايت كحد أدنى (JVM)‏ClickHouse
الاستيعاب الفوري (تدفق البيانات)يُوصى بالدفعاتأصلي ومُحسَّن‏Elasticsearch
‏موصّلات Grafana وBI‏مكوّن ClickHouse الأصلي‏مكوّن Elasticsearchمتكافئ

‏اختيار مفتاح الترتيب (ORDER BY) لمحرك MergeTree هو العامل الحاسم للأداء: ضع أولاً الأعمدة الأكثر تصفية في استعلاماتك (غالباً تاريخ ومعرّف). استخدم جداول Buffer أو إدراجات دفعية بآلاف الصفوف بدلاً من الإدراج صفاً بصف الذي ينشئ أقساماً صغيرة ويُطلق عمليات دمج مكلفة. راقب system.merges وsystem.parts لاكتشاف التجزؤ المفرط.

انشر ClickHouse بنقرة واحدة على خادم افتراضي من ServOrbit

إصدار 26.3 LTS مثبَّت، وأقراص دائمة، وحساب مدير مولَّد: مستودع تحليلي جاهز لاستقبال أحداثك.