لماذا تبث البيانات من SQL Server إلى ClickHouse؟
- إعداد تقارير داخلية لا تؤثر في أداء تطبيقات الإنتاج
- لوحات معلومات موجهة للعملاء تحتاج إلى أن تكون سريعة ومحدَّثة دائمًا
- بث الأحداث، مثل الحفاظ على حداثة سجلات نشاط المستخدمين لأغراض التحليلات
ما ستحتاج إليه للبدء
المتطلبات الأساسية
- مثيل SQL Server قيد التشغيل
- في هذا الدليل العملي، نستخدم AWS RDS for SQL Server، لكن أي مثيل حديث من SQL Server سيؤدي الغرض.إعداد AWS SQL Server من الصفر.
- مثيل ClickHouse
- ذاتي الاستضافة أو سحابي.إعداد ClickHouse من الصفر.
- Streamkap
- ستكون هذه الأداة العمود الفقري لمسار المعالجة لتدفق البيانات لديك.
معلومات الاتصال
- عنوان خادم SQL Server والمنفذ واسم المستخدم وكلمة المرور. يُنصح بإنشاء مستخدم ودور منفصلين لـ Streamkap للوصول إلى قاعدة بيانات SQL Server الخاصة بك.اطّلع على وثائقنا لمعرفة الإعداد.
- عنوان خادم ClickHouse والمنفذ واسم المستخدم وكلمة المرور. تحدد قوائم الوصول حسب IP في ClickHouse الخدمات التي يمكنها الاتصال بقاعدة بيانات ClickHouse الخاصة بك.اتبع الإرشادات هنا.
- الجداول التي تريد بثها—ابدأ بجدول واحد في الوقت الحالي
1
إنشاء مصدر لـ SQL Server في Streamkap
هيا نبدأ!سنبدأ بإعداد اتصال المصدر. بهذه الطريقة يعرف Streamkap من أين يجلب التغييرات.إليك الطريقة:
- افتح Streamkap وانتقل إلى قسم المصادر.
- أنشئ مصدرًا جديدًا.
- امنحه اسمًا واضحًا يسهل تمييزه (على سبيل المثال: sqlserver-demo-source).
- أدخل تفاصيل الاتصال بـ SQL Server:
- المضيف (على سبيل المثال: your-db-instance.rds.amazonaws.com)
- المنفذ (المنفذ الافتراضي لـ SQL Server هو 3306)
- اسم المستخدم وكلمة المرور
- اسم قاعدة البيانات
ما الذي يحدث في الخلفية
عند إعداد ذلك، سيتصل Streamkap بخادم SQL Server لديك ويكتشف الجداول. في هذا العرض التوضيحي، سنختار جدولًا تتدفق إليه بعض البيانات بالفعل، مثل الأحداث أو المعاملات.2
أضِف وجهة ClickHouse في Streamkap
الآن لنُعِدّ الوجهة التي سنرسل إليها كل هذه البيانات.وكما فعلنا مع المصدر، سننشئ وجهة باستخدام تفاصيل اتصال ClickHouse الخاصة بنا.
الخطوات:
- انتقل إلى قسم الوجهات في Streamkap.
- أضف وجهة جديدة — واختر ClickHouse كنوع الوجهة.
- أدخل معلومات ClickHouse الخاصة بك:
- المضيف
- المنفذ (القيمة default هي 9000)
- اسم المستخدم وكلمة المرور
- اسم قاعدة البيانات
وضع upsert: ما المقصود به؟
هذه خطوة مهمة: نريد استخدام وضع “upsert” في ClickHouse، والذي يستخدم في الخلفية المحرك ReplacingMergeTree في ClickHouse. يتيح لنا ذلك دمج السجلات الواردة بكفاءة والتعامل مع التحديثات بعد استيعاب البيانات، باستخدام ما يسميه ClickHouse “دمج الأجزاء”.- يضمن ذلك عدم امتلاء جدول الوجهة لديك بالسجلات المكررة عند حدوث تغييرات على جانب SQL Server.
التعامل مع تطور المخطط
في بعض الأحيان، لا تكون الأعمدة في ClickHouse وSQL Server متطابقة، خاصةً عندما يكون تطبيقك قيد التشغيل ويواصل المطورون إضافة أعمدة أثناء العمل.- الخبر السار: يمكن لـ Streamkap التعامل مع تطور المخطط الأساسي. وهذا يعني أنه إذا أضفت عمودًا جديدًا في SQL Server، فسيظهر على جانب ClickHouse أيضًا.
3
إعداد مسار المعالجة في Streamkap
بعد تحديد المصدر والوجهة، حان وقت الجزء الممتع—وهو بث بياناتك!
إعداد مسار البيانات
- انتقل إلى علامة التبويب Pipelines في Streamkap.
- أنشئ مسار بيانات جديدًا.
- حدِّد مصدر SQL Server الخاص بك (sqlserver-demo-source).
- حدِّد وجهة ClickHouse الخاصة بك (clickhouse-tutorial-destination).
- اختر الجدول الذي تريد بثه—ولنفترض أنه events.
- اضبط الإعدادات لاستخدام التقاط تغييرات البيانات (CDC).
- في هذا التشغيل، سنبث البيانات الجديدة (لا تتردد في تخطي تحميل البيانات التاريخية في البداية والتركيز على أحداث CDC).
هل تحتاج إلى تحميل البيانات التاريخية؟
قد تتساءل: هل ينبغي تحميل البيانات القديمة؟في كثير من حالات التحليلات، قد تفضّل البدء ببث التغييرات من الآن فصاعدًا، لكن يمكنك دائمًا العودة وتحميل البيانات الأقدم أيضًا.ما عليك سوى اختيار “don’t backfill” في الوقت الحالي ما لم تكن لديك حاجة محددة.4
مراقبة تدفق البيانات
الآن أصبح مسار المعالجة لديك مُعدًّا ويعمل!إليك ما يحدث:توقّع بعض التأخر في سيناريوهات الأحمال العالية، لكن معظم حالات الاستخدام تشهد تدفّقًا شبه لحظي.
- عند وصول بيانات جديدة إلى الجدول المصدر في SQL Server، يلتقط مسار Streamkap هذا التغيير ويرسله إلى ClickHouse.
- يستوعب ClickHouse (بفضل ReplacingMergeTree ودمج الأجزاء) هذه الصفوف ويدمج التحديثات.
- يواكب المخطط ذلك — أضف أعمدة في SQL Server وستظهر في ClickHouse أيضًا.
ما الذي يفعله Streamkap فعليًا في الخلفية؟
- يراقب Streamkap السجل الثنائي لـ SQL Server (وهو السجل نفسه المستخدم في النسخ المتماثل).
- ما إن يُدرَج صف أو يُحدَّث أو يُحذَف في جدولك، حتى يلتقط Streamkap هذا الحدث.
- ثم يحوّل الحدث إلى صيغة يفهمها ClickHouse ويرسله إليه، مع تطبيق التغييرات فورًا في قاعدة بيانات التحليلات لديك.
الخيارات المتقدمة
نمط Upsert مقابل نمط Insert
- نمط Insert: يُضاف كل صف جديد، وحتى إذا كان تحديثًا، فستحصل على صفوف مكررة.
- نمط Upsert: تستبدل التحديثات على الصفوف الموجودة ما هو موجود بالفعل، وهذا أفضل بكثير للحفاظ على حداثة التحليلات ونظافتها.
التعامل مع تغييرات المخطط
- هل أضفت عمودًا جديدًا إلى جدولك التشغيلي؟ سيلتقطه Streamkap ويضيفه إلى جانب ClickHouse أيضًا.
- هل أزلت عمودًا؟ اعتمادًا على الإعدادات، قد تحتاج إلى ترحيل — لكن معظم الإضافات تتم بسلاسة.
المراقبة في البيئات الفعلية: متابعة مسار المعالجة عن كثب
التحقق من صحة مسار المعالجة
- الاطلاع على تأخر مسار المعالجة (ما مدى حداثة بياناتك؟)
- مراقبة عدد الصفوف ومعدل المعالجة
- تلقّي تنبيهات عند حدوث أي خلل
المقاييس الشائعة التي ينبغي مراقبتها
- التأخر: إلى أي مدى يتأخر ClickHouse عن SQL Server؟
- معدل المعالجة: عدد الصفوف في الثانية
- معدل الأخطاء: ينبغي أن يكون قريبًا من الصفر
بدء الاستخدام الفعلي: الاستعلام عن ClickHouse
الخطوات التالية والتعمق أكثر
- إعداد تدفقات مُرشَّحة (مزامنة بعض الجداول/الأعمدة فقط)
- تدفّق مصادر متعددة إلى قاعدة بيانات تحليلية واحدة
- دمج ذلك مع S3/بحيرات البيانات للتخزين البارد
- أتمتة ترحيلات المخطط عند تغيير الجداول
- تأمين مسار المعالجة باستخدام SSL وقواعد جدار الحماية
FAQ واستكشاف الأخطاء وإصلاحها
binlog في DB المصدر، لكن في معظم الحالات سيكون التأخر أقل من ثانية.
س: هل يدعم عمليات الحذف أيضًا؟
ج: بالتأكيد. في وضع upsert، يتم تمييز عمليات الحذف والتعامل معها في ClickHouse أيضًا.
الخلاصة
- Upsert مقابل Insert والتفاصيل الدقيقة لكلٍّ منهما
- زمن الوصول من البداية إلى النهاية: ما مدى السرعة التي يمكنك بها الوصول إلى العرض التحليلي النهائي؟
- ضبط الأداء والإنتاجية
- لوحات معلومات واقعية مبنية على هذه المنظومة