- اللقطة الأولية عبر S3 ClickPipes
- التحديثات في الوقت الفعلي عبر Kinesis ClickPipes
ReplacingMergeTree. ويُستخدم table engine هذا عادةً في سيناريوهات CDC للسماح بتطبيق عمليات التحديث. ويمكنك الاطّلاع على مزيد من التفاصيل حول هذا النمط في مقالات المدوّنة التالية:
- التقاط بيانات التغيير (CDC) باستخدام PostgreSQL وClickHouse - الجزء 1
- التقاط بيانات التغيير (CDC) باستخدام PostgreSQL وClickHouse - الجزء 2
1
إعداد Kinesis Stream
أولاً، ستحتاج إلى تمكين Kinesis Stream على جدول DynamoDB لديك لالتقاط التغييرات في الوقت الفعلي. نريد القيام بذلك قبل إنشاء اللقطة حتى لا نفقد أي بيانات.
اطّلع على دليل AWS هنا.
2
أنشئ اللقطة
بعد ذلك، سننشئ لقطة من جدول DynamoDB. ويمكن إجراء ذلك عبر تصدير من AWS إلى S3. يمكنك العثور على دليل AWS هنا.
ستحتاج إلى إجراء “تصدير كامل” بتنسيق DynamoDB JSON.
3
حمّل بيانات اللقطة إلى ClickHouse
أنشئ الجداول اللازمة
ستبدو بيانات اللقطة من DynamoDB على النحو التالي:JSONExtract في ClickHouse داخل عرض مادي.سنحتاج إلى إنشاء ثلاثة جداول:- جدول لتخزين البيانات الخام من DynamoDB
- جدول لتخزين البيانات النهائية بعد تسطيحها (جدول الوجهة)
- عرض مادي لتسطيح البيانات
- يجب أن يكون هذا الجدول من نوع
ReplacingMergeTree - يجب أن يحتوي الجدول على عمود
version- في الخطوات اللاحقة، سنربط الحقل
ApproximateCreationDateTimeمن Kinesis Stream بالعمودversion.
- في الخطوات اللاحقة، سنربط الحقل
- ينبغي أن يستخدم الجدول مفتاح التقسيم بوصفه مفتاح الترتيب (المحدَّد بواسطة
ORDER BY)- ستُزال تكرارات الصفوف ذات مفتاح الترتيب نفسه استنادًا إلى العمود
version.
- ستُزال تكرارات الصفوف ذات مفتاح الترتيب نفسه استنادًا إلى العمود
أنشئ ClickPipe الخاص باللقطة
يمكنك الآن إنشاء ClickPipe لتحميل بيانات اللقطة من S3 إلى ClickHouse. اتبع دليل S3 ClickPipe من هنا، ولكن استخدم الإعدادات التالية:- مسار الاستيعاب: ستحتاج إلى تحديد مسار ملفات json المُصدَّرة في S3. سيبدو المسار على النحو التالي تقريبًا:
- التنسيق: JSONEachRow
- الجدول: جدول اللقطة لديك (مثل
default.snapshotفي المثال أعلاه)
4
أنشئ ClickPipe لـ Kinesis
الآن يمكننا إعداد Kinesis ClickPipe لالتقاط التغييرات في الوقت الفعلي من Kinesis Stream. اتبع دليل Kinesis ClickPipe هنا، ولكن استخدم الإعدادات التالية:
- Stream: Kinesis Stream المستخدم في الخطوة 1
- Table: جدول الوجهة لديك (مثل
default.destinationفي المثال أعلاه) - Flatten object: true
- Column mappings:
ApproximateCreationDateTime:version- اربط الحقول الأخرى بأعمدة الوجهة المناسبة كما هو موضح أدناه
5
التنظيف (اختياري)
بمجرد اكتمال ClickPipe الخاص باللقطة، يمكنك حذف جدول اللقطة والعرض المادي.