Skip to main content
تشرح هذه الصفحة كيفية إعداد CDC من DynamoDB إلى ClickHouse باستخدام ClickPipes. ويتكوّن هذا التكامل من عنصرين:
  1. اللقطة الأولية عبر S3 ClickPipes
  2. التحديثات في الوقت الفعلي عبر Kinesis ClickPipes
سيتم استيعاب البيانات في ReplacingMergeTree. ويُستخدم table engine هذا عادةً في سيناريوهات CDC للسماح بتطبيق عمليات التحديث. ويمكنك الاطّلاع على مزيد من التفاصيل حول هذا النمط في مقالات المدوّنة التالية:
1

إعداد Kinesis Stream

أولاً، ستحتاج إلى تمكين Kinesis Stream على جدول DynamoDB لديك لالتقاط التغييرات في الوقت الفعلي. نريد القيام بذلك قبل إنشاء اللقطة حتى لا نفقد أي بيانات. اطّلع على دليل AWS هنا.
2

أنشئ اللقطة

بعد ذلك، سننشئ لقطة من جدول DynamoDB. ويمكن إجراء ذلك عبر تصدير من AWS إلى S3. يمكنك العثور على دليل AWS هنا. ستحتاج إلى إجراء “تصدير كامل” بتنسيق DynamoDB JSON.
3

حمّل بيانات اللقطة إلى ClickHouse

أنشئ الجداول اللازمة

ستبدو بيانات اللقطة من DynamoDB على النحو التالي:
لاحظ أن البيانات بتنسيق متداخل. سنحتاج إلى تسطيح هذه البيانات قبل تحميلها إلى ClickHouse. ويمكن إجراء ذلك باستخدام الدالة JSONExtract في ClickHouse داخل عرض مادي.سنحتاج إلى إنشاء ثلاثة جداول:
  1. جدول لتخزين البيانات الخام من DynamoDB
  2. جدول لتخزين البيانات النهائية بعد تسطيحها (جدول الوجهة)
  3. عرض مادي لتسطيح البيانات
بالنسبة إلى بيانات DynamoDB الواردة في المثال أعلاه، ستبدو جداول ClickHouse على النحو التالي:
توجد بعض المتطلبات لجدول الوجهة:
  • يجب أن يكون هذا الجدول من نوع 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 الخاص باللقطة، يمكنك حذف جدول اللقطة والعرض المادي.
آخر تعديل في ٢٤ يوليو ٢٠٢٦