تقييم ClickHouse لمستودع البيانات السحابية Tencent: هل "التشغيل الفائق" في عصر البيانات الضخمة جيد ؟
إذا كنت مطور خلفي أو DBA أو محلل بيانات يموت مع كميات كبيرة من البيانات ، يجب أن تكون قد سمعت
ClickHouse
الاسم الكبير.
في مجال البيانات الكبيرة مفتوحة المصدر ، هذه الأشياء هي ببساطة وجود رائع: أداء جهاز واحد يضغط على قواعد البيانات التقليدية عشرات المرات ، واستجابة ثانية لتحليل البيانات على مستوى عشرات المليارات. يقول الأشخاص الذين استخدموها أن مشاهدتها تجري استفسارات مثل مشاهدة سوبر يركض ويقصف الشارع.
ومع ذلك ، فإن "الخدمة الصعبة" لـ Open Source ClickHouse هي أيضًا ذات شهرة في الصناعة: التشغيل والصيانة معقدة للغاية ، ومعلمات التكوين كثيرة مثل شعر البقر ، وتنهار المجموعة الموزعة إذا توسعت عن غير قصد. هذا أيضًا يثبط عثرة العديد من الشركات الصغيرة والمتوسطة.
من أجل حل نقطة الألم هذه ، أطلقت Tencent Cloud
قاعدة البيانات السحابية ClickHouse(CDCH)
. وبصراحة ، ساعدنا خبراء Tencent في القيام بالأعمال القذرة في الطابق الأرضي من ClickHouse مفتوح المصدر وتغليفها في خدمة سحابية خارج الصندوق.
اليوم ، من منظور المطورين الحقيقيين ، نجري تقييمًا متعمقًا شاملاً لـ ClickHouse of Tencent Cloud. لا تشارك في قائمة رسمية على غرار الدليل ، فقط تحدث عن البضائع الجافة ، وتحدث عن نقاط الألم ، وتحدث عن اللغة العامية.
1. لماذا ClickHouse بهذه السرعة ؟ (العلوم البيضاء الصغيرة)
قبل تقييم منتجات Tencent Cloud ، سنستغرق دقيقة واحدة للدردشة ، ما هو المنطق الأساسي لـ ClickHouse الذي يعمل بسرعة ؟
قواعد البيانات العلائقية التقليدية (مثل MySQL) هي
تخزين الخط
. للتحقق من متوسط عمر جميع المستخدمين ، يجب أن يضع MySQL سطرًا كاملاً من البيانات لكل مستخدم (الاسم ، كلمة المرور ، العنوان ، العمر…) اقرأ كل شيء من القرص الصلب ، ثم استخرج العمر. هذا مثل شراء الملفوف الصيني ، عليك زيارة سوق الخضار بأكمله ، و IO (القراءة والكتابة على القرص الصلب) ينفجر الساعة مباشرة.
و ClickHouse هو نموذجي
تخزين العمود
.
يفصل "الاسم" و "العمر" بشكل منفصل. هل تريد حساب متوسط العمر ؟ حسنًا ، يقرأ مباشرة بيانات عمود "العمر" ، ولا تلمس الأعمدة الأخرى.
بالإضافة إلى أنه يضع وحدة المعالجة المركزية
SIMD (تدفق بيانات متعددة تعليمات واحدة)
تم ضغط مجموعة التعليمات إلى أقصى الحدود ، وتم تحقيق حسابات متوازية على المستوى المادي. هذه البنية ولدت من أجل
OLAP (المعالجة التحليلية عبر الإنترنت)
، تحليل السجل الهائل وتقرير BI.
2. تقييم Tencent Cloud ClickHouse: ما الذي حل لنا ؟
نظرًا لأن المصادر المفتوحة قوية جدًا بالفعل ، فلماذا تستخدم Tencent Cloud ؟ لقد فتحنا مجموعة من المجموعات على وحدة التحكم وقمنا بتجربة عميقة. أداء الأبعاد التالية هو الأكثر إثارة للإعجاب:
1. صعوبة التشغيل والصيانة: من "وضع الجحيم" إلى "أحمق بنقرة واحدة"
يعرف أي شخص لعب ClickHouse مفتوح المصدر أن مجموعه الموزع (Table Distributed) يعتمد بشكل كبير على ZooKeeper لمزامنة البيانات الوصفية والتنسيق. عندما حجم البيانات
عندما تكون كبيرة جدًا ، غالبًا ما يسقط ZooKeeper السلسلة ، وبمجرد أن تصبح عالقة ، تشل مجموعة ClickHouse بأكملها.
حل Tencent Cloud: توفر Tencent Cloud بنية مستضافة بالكامل ، ويتم تحسين ZooKeeper وعزله بعمق في الأسفل.
التجربة العملية: لإنشاء مجموعة في وحدة التحكم ، تحتاج فقط إلى تحديد التكوين (عدة نواة ، عدة G ، عدة عقد) ، يتم إنشاء المجموعة الموزعة بأكملها في غضون بضع دقائق. بالنسبة للتكوينات الأساسية المعقدة مثل مزامنة النسخ وقواعد التقسيم ، ستساعدك Tencent Cloud على القيام بأفضل الممارسات عند التهيئة. لست بحاجة إلى إلقاء نظرة على مئات الأسطر من ملفات تعريف XML ، والتي أنقذت عددًا لا يحصى من الشعر لزملائك في الصف.
2. التوسع والمرونة: أخيرًا لست بحاجة إلى البقاء مستيقظًا لنقل البيانات
المصدر المفتوح أكبر عبء تاريخي لـ ClickHouse هو
لا يدعم الانكماش الحقيقي
. نظرًا لأنه عبارة عن بنية "اقتران الحساب والتخزين" ، بمجرد أن يكون القرص الصلب ممتلئًا ، تحتاج إلى إضافة جهاز ، وتحتاج إلى تغيير ملف التكوين يدويًا ، وكتابة برنامج نصي لنقل أجزاء البيانات المادية على الجهاز القديم إلى الجهاز الجديد ، العملية قابلة للمقارنة مع تغيير المحرك في الهواء ، فقدت القليل من البيانات عن طريق الخطأ.
حل Tencent Cloud: تدرك Tencent Cloud فصل الحوسبة المرنة عن التخزين الحسابي (بدعم من بعض الإصدارات).
التجربة الفعلية: عندما يرتفع حجم بيانات الاختبار الخاصة بنا ، انقر فوق "تغيير التكوين" في وحدة التحكم لزيادة العقد أو توسيع القرص السحابي مباشرة عبر الإنترنت. خلال العملية بأكملها ، يتم إرسال إعادة توازن البيانات تلقائيًا بواسطة Tencent Cloud الخلفية ، ولا يتأثر الاستعلام على مستوى العمل تقريبًا. هذا وحده يستحق الأجرة.
3. وحدة التحكم والتصور: أخيرًا حصلت على "لوحة القيادة" اللائقة
يحتوي ClickHouse مفتوح المصدر افتراضيًا على عميل سطر أوامر بارد واحد فقط. هل تريد معرفة مقدار تشغيل وحدة المعالجة المركزية الحالية للكتلة ؟ أي استفسار ضغط على الذاكرة ؟ آسف ، يجب أن أتحقق من استمارة النظام بنفسك
System. processes
، أو قم بإعداد مجموعة من Prometheus Grafana بنفسك.
حل Tencent Cloud: تقدم Tencent Cloud نظام مراقبة كامل للغاية وخدمة إدارة البيانات DMC.
التجربة الفعلية: قم بتسجيل الدخول إلى وحدة التحكم ، وسرعة نقل المجموعة ، وتأخير القراءة والكتابة ، وشغل القرص واضح في لمحة. الأفضل هو وظيفة تحليل الاستعلام البطيء. إذا تم تشغيل SQL لمدة 10 ثوانٍ دون نتائج ، فستحصل وحدة التحكم على ذلك مباشرةً وستعرض خطة تنفيذ مفصلة لإخباركم بأيهما جوين. هذا مجرد قطعة أثرية للمطورين لضبط SQL.
3. مشهد القتال الفعلي: ما هو الأنسب لـ Tencent Cloud ClickHouse ؟
في مراجعة الأعمال الفعلية لدينا ، تظهر ClickHouse ميزة ساحقة في السيناريوهات الثلاثة التالية:
السيناريو 1: سجل كبير وتحليل تدقيق (قتل ELK)
اعتاد الجميع على تحليل السجل
مع ELK(Elasticsearch Logstash Kibana). لكن Elasticsearch يأكل الذاكرة بشكل كبير ولديه معدل توسع مرتفع (قد يصبح السجل اليومي الأصلي 100G 200G).
سجل ClickHouse: قم بصب نفس المليارات من سجلات سلوك المستخدم في ClickHouse ، مع نسبة ضغط البيانات الفائقة التي تصل إلى 1:5 أو حتى 1:10 ، فإن مساحة القرص الصلب التي تشغل أقل من ثلث ES. علاوة على ذلك ، عند البحث عن مجموعة واسعة من البيانات المجمعة (مثل حساب اتجاه الخطأ لواجهة معينة الشهر الماضي) ، فإن ClickHouse أسرع بعدة مرات من ES.
المشهد 2: الإعلان والتشغيل المكرر (دائرة الحشد)
غالبًا ما يحتاج الطلاب المشغلون إلى طرح احتياجاتهم: "ساعدني في تحديد مستخدمي بكين الذين قاموا بتسجيل الدخول إلى التطبيقات وإعادة شحن أكثر من 100 يوان في الأيام السبعة الماضية ، والذين تتراوح أعمارهم بين 18 و 25 عامًا."
سجل ClickHouse: هذا النوع من تحليل القمع متعدد الأبعاد المستند إلى العلامة (Bitmap) هو تحفة ClickHouse. باستخدام الوظائف المتقدمة المدمجة مثل bitmapAnd و bitmapOr ، يمكن تجميع عشرات المليارات من الأشخاص ، ويمكن تحقيق النتائج في غضون ثوانٍ قليلة ، ولن يضطر المشغلون بعد الآن إلى طلب الحصول على البيانات في اليوم التالي.
4. "ظهر العملة" لـ Tencent Cloud ClickHouse: الحفرة التي يجب على المبتدئين تجنبها
على الرغم من أن Tencent Cloud تغليفها جيدًا ، إلا أن ClickHouse هو ClickHouse بعد كل شيء ، و "الخصائص الفيزيائية" في الأسفل تحدد أنها ليست كل شيء. عند استخدامه من قبل المبتدئين ، لا تستخدمه على أنه MySQL. يجب تجاوز حقول الألغام التالية:
لا تقم أبدًا بكتابة إنتاجية صغيرة عالية ومتزامنة: يحب ClickHouse "الإفراط في تناول الطعام بكميات كبيرة" ولا يحب "تناول كميات أقل ووجبات أكثر". إذا كتبت 1000 مرة في كل ثانية وكتبت قطعة واحدة فقط من البيانات في كل مرة ، فإن خلفية ClickHouse ستدمج بشكل محموم شرائح البيانات (Merge) ، وسرعان ما ستبلغ أن الأخطاء القاتلة للحزرات الرئيسية تسببت في تعليق المجموعة. اقتراح شخص حقيقي: يجب عليك عمل ذاكرة تخزين مؤقت محلية (Buffer) على مستوى العمل ، أو ادفع دفعة من خلال كافكا ، ويجب كتابة ما لا يقل عن 10000 قطعة لكل دفعة ككل.
إنها ليست جيدة في الاستعلام عالي الدقة المتزامن: ClickHouse هو وحش جزئي. يمكنك السماح لها بحساب مجموع المليار قطعة من البيانات ، والتي تمنحك 0.5 ثانية. ولكن إذا كنت ترغب في إنشاء تطبيق به عشرات الآلاف من التزامن ، دعه يتحقق من المعلومات الأساسية لمستخدم معين بناءً على معرف المستخدم (SELECT * FROM table WHERE id = 123) ، فسيملأ وحدة المعالجة المركزية بدلاً من ذلك. اقتراح شخص حقيقي: هذا النوع من أعمال التحقق من نقطة التزامن العالي ، استخدم بصدق Redis أو MySQL.
قدرة محدودة للغاية على الاستعلام المتزامن (Max)
Concurrent Queries): الحد الافتراضي لعدد الاستعلامات المتزامنة لـ ClickHouse هو 100. لأن SQL المعقدة ستملأ جميع نوى وحدة المعالجة المركزية التالية. إذا قدم 100 شخص استعلام تقرير معقد في نفس الوقت ، فإن المجموعة تتعمق مباشرة. إنه مناسب لمحللي البيانات والعمليات واللوحات الداخلية ، وهو غير مناسب للاتصال المباشر بملايين المستخدمين النشطين على الجانب C.
5. ملخص واقتراحات الاختيار
بعد بعض التقييمات المتعمقة ، أعطى Tencent Cloud ClickHouse(CDCH) للناس الشعور العام:
العيوب لا تخفي ، العيوب تكمن في جينات المصدر المفتوح ، ويتم معالجة Yu في Tencent.
لقد ورثت أداء الاستعلام النهائي للأدرينالين المرتفع في ClickHouse مفتوح المصدر ، وفي الوقت نفسه ، من خلال طرق الاستضافة السحابية الأصلية ، تم إزالة الجبال الثلاثة الأكثر انتقادًا "صعوبة في التشغيل والصيانة ، وصعوبة التوسع ، وصعوبة المراقبة" تمامًا.
أخيرًا ، أعط جملة من الاقتراحات للاختيار:
إذا تجاوزت كمية بيانات عملك عشرات الملايين أو حتى 100 مليون مستوى ، فسيستغرق تشغيل MySQL التقليدي بضع دقائق لتشغيل تقرير ، وليس لديك ميزانية إضافية لدعم فريق مخصص لتشغيل البيانات الكبيرة ، إذن ،
مباشرة إلى Tencent Cloud ClickHouse
. يمكنه استخدام تكاليف الأجهزة والعمالة المنخفضة للغاية لجلب شركتك إلى تجربة "الشعور بالدفع" في عصر البيانات الضخمة مقدمًا.
