Amazon Relational Database Service (Amazon RDS) لـ MySQL تكامل صفري ETL مع الأمازون الأحمر وكان أعلن قيد المعاينة في AWS re:Invent 2023 لـ Amazon RDS لـ MySQL الإصدار 8.0.28 أو أعلى. في هذا المنشور، نقدم إرشادات خطوة بخطوة حول كيفية البدء في التحليلات التشغيلية في الوقت الفعلي تقريبًا باستخدام هذه الميزة. هذا المنشور هو استمرار لسلسلة Zero-ETL التي بدأت بـ دليل البدء للتحليلات التشغيلية في الوقت الفعلي تقريبًا باستخدام تكامل Amazon Aurora Zero-ETL مع Amazon Redshift.
التحديات
يتطلع العملاء عبر الصناعات اليوم إلى استخدام البيانات لتحقيق ميزتهم التنافسية وزيادة الإيرادات ومشاركة العملاء من خلال تنفيذ حالات استخدام التحليلات في الوقت الفعلي تقريبًا مثل استراتيجيات التخصيص واكتشاف الاحتيال ومراقبة المخزون وغير ذلك الكثير. هناك طريقتان واسعتان لتحليل البيانات التشغيلية لحالات الاستخدام هذه:
- تحليل البيانات الموجودة في قاعدة البيانات التشغيلية (مثل النسخ المتماثلة للقراءة والاستعلام الموحد ومسرعات التحليلات)
- انقل البيانات إلى مخزن بيانات مُحسّن لتشغيل الاستعلامات الخاصة بحالة الاستخدام مثل مستودع البيانات
يركز تكامل الصفر-ETL على تبسيط النهج الأخير.
تعد عملية الاستخراج والتحويل والتحميل (ETL) نمطًا شائعًا لنقل البيانات من قاعدة بيانات تشغيلية إلى مستودع بيانات تحليلية. ELT هو المكان الذي يتم فيه تحميل البيانات المستخرجة كما هي في الهدف أولاً ثم تحويلها. يمكن أن تكون خطوط أنابيب ETL وELT مكلفة في البناء ومعقدة في الإدارة. مع نقاط الاتصال المتعددة، يمكن أن تؤدي الأخطاء المتقطعة في خطوط أنابيب ETL وELT إلى تأخيرات طويلة، مما يترك تطبيقات مستودع البيانات ببيانات قديمة أو مفقودة، مما يؤدي أيضًا إلى ضياع فرص العمل.
وبدلاً من ذلك، قد تعمل الحلول التي تحلل البيانات في مكانها بشكل رائع لتسريع الاستعلامات في قاعدة بيانات واحدة، ولكن هذه الحلول غير قادرة على تجميع البيانات من قواعد بيانات تشغيلية متعددة للعملاء الذين يحتاجون إلى تشغيل تحليلات موحدة.
صفر- ETL
على عكس الأنظمة التقليدية حيث يتم عزل البيانات في قاعدة بيانات واحدة ويتعين على المستخدم إجراء مقايضة بين التحليل الموحد والأداء، يمكن لمهندسي البيانات الآن نسخ البيانات من عدة RDS لقواعد بيانات MySQL في مستودع بيانات Redshift واحد لاستخلاص رؤى شاملة عبر العديد من التطبيقات أو الأقسام. يتم نشر التحديثات في قواعد بيانات المعاملات بشكل تلقائي ومستمر إلى Amazon Redshift بحيث يحصل مهندسو البيانات على أحدث المعلومات في الوقت الفعلي تقريبًا. لا توجد بنية تحتية لإدارتها ويمكن أن يتوسع التكامل تلقائيًا لأعلى ولأسفل بناءً على حجم البيانات.
في AWS ، كنا نحقق تقدمًا مطردًا نحو تقديم رؤية الصفر ETL الي الحياة. المصادر التالية مدعومة حاليًا لتكاملات ETL الصفرية:
عندما تقوم بإنشاء تكامل صفري ETL لـ Amazon Redshift، فإنك تستمر في الدفع مقابل قاعدة البيانات المصدر الأساسية واستخدام قاعدة بيانات Redshift المستهدفة. تشير إلى تكاليف التكامل صفر-ETL (معاينة) لمزيد من التفاصيل.
من خلال التكامل الصفري لـ ETL مع Amazon Redshift، يقوم التكامل بنسخ البيانات من قاعدة البيانات المصدر إلى مستودع البيانات الهدف. تصبح البيانات متاحة في Amazon Redshift في غضون ثوانٍ، مما يسمح لك باستخدام ميزات التحليلات في Amazon Redshift وإمكانات مثل مشاركة البيانات، والأتمتة لتحسين عبء العمل، وتوسيع نطاق التزامن، والتعلم الآلي، وغير ذلك الكثير. يمكنك متابعة معالجة معاملتك على Amazon RDS أو أمازون أورورا مع استخدام Amazon Redshift في نفس الوقت لأحمال عمل التحليلات مثل إعداد التقارير ولوحات المعلومات.
يوضح الرسم البياني التالي هذه العمارة.
حل نظرة عامة
دعونا ننظر تذكرة، موقع ويب خيالي حيث يقوم المستخدمون بشراء وبيع التذاكر عبر الإنترنت للأحداث الرياضية والعروض والحفلات الموسيقية. يتم تحميل بيانات المعاملات من موقع الويب هذا إلى قاعدة بيانات Amazon RDS لـ MySQL 8.0.28 (أو إصدار أعلى). يريد محللو أعمال الشركة إنشاء مقاييس لتحديد حركة التذاكر بمرور الوقت، ومعدلات نجاح البائعين، والأحداث والأماكن والمواسم الأكثر مبيعًا. إنهم يرغبون في الحصول على هذه المقاييس في الوقت الفعلي تقريبًا باستخدام تكامل صفري لـ ETL.
تم إعداد التكامل بين Amazon RDS for MySQL (المصدر) وAmazon Redshift (الوجهة). يتم تحديث بيانات المعاملات من المصدر في الوقت الفعلي تقريبًا على الوجهة، التي تعالج الاستعلامات التحليلية.
يمكنك استخدام إما الخيار بدون خادم أو مجموعة RA3 المشفرة لـ Amazon Redshift. في هذا المنشور، نستخدم قاعدة بيانات RDS المتوفرة ومستودع بيانات Redshift المتوفر.
يوضح الرسم البياني التالي العمارة عالية المستوى.
فيما يلي الخطوات اللازمة لإعداد تكامل ETL صفري. يمكن تنفيذ هذه الخطوات تلقائيًا بواسطة معالج صفر ETL، ولكنك ستحتاج إلى إعادة التشغيل إذا قام المعالج بتغيير الإعداد الخاص بـ Amazon RDS أو Amazon Redshift. يمكنك تنفيذ هذه الخطوات يدويًا، إذا لم تكن قد تم تكوينها بالفعل، وإجراء عمليات إعادة التشغيل بالشكل الذي يناسبك. للحصول على أدلة البدء الكاملة، راجع العمل مع عمليات التكامل مع Amazon RDS Zero-ETL مع Amazon Redshift (معاينة) و العمل مع عمليات التكامل الصفرية ETL.
- قم بتكوين RDS لمصدر MySQL باستخدام مجموعة معلمات قاعدة بيانات مخصصة.
- قم بتكوين مجموعة Redshift لتمكين المعرفات الحساسة لحالة الأحرف.
- تكوين الأذونات المطلوبة.
- إنشاء تكامل الصفر ETL.
- قم بإنشاء قاعدة بيانات من التكامل في Amazon Redshift.
قم بتكوين RDS لمصدر MySQL باستخدام مجموعة معلمات قاعدة بيانات مخصصة
لإنشاء RDS لقاعدة بيانات MySQL، أكمل الخطوات التالية:
- في وحدة تحكم Amazon RDS، قم بإنشاء مجموعة معلمات قاعدة بيانات تسمى
zero-etl-custom-pg
.
يعمل التكامل Zero-ETL باستخدام السجلات الثنائية (binlogs) التي تم إنشاؤها بواسطة قاعدة بيانات MySQL. لتمكين السجلات الثنائية على Amazon RDS لـ MySQL، يجب تمكين مجموعة محددة من المعلمات.
- قم بتعيين إعدادات معلمات مجموعة binlog التالية:
binlog_format = ROW
binlog_row_image = FULL
binlog_checksum = NONE
بالإضافة إلى ذلك، تأكد من أن binlog_row_value_options
لم يتم تعيين المعلمة ل PARTIAL_JSON
. بشكل افتراضي، لم يتم تعيين هذه المعلمة.
- اختار قواعد بيانات في جزء التنقل ، ثم اختر إنشاء قاعدة البيانات.
- في حالة نسخة المحرك، اختر الخلية 8.0.28 (أو أعلى).
- في حالة النماذج، حدد الإنتــاج.
- في حالة التوفر والمتانة، حدد إما مثيل قاعدة بيانات متعددة لمناطق توافر الخدمات or مثيل قاعدة بيانات واحدة (مجموعات قاعدة بيانات Multi-AZ غير مدعومة، حتى كتابة هذه السطور).
- في حالة معرف مثيل قاعدة البيانات، أدخل
zero-etl-source-rms
.
- تحت تكوين المثيل، حدد فئات الذاكرة الأمثل واختر المثيل
db.r6g.large
، والتي ينبغي أن تكون كافية لحالة استخدام TICKIT.
- تحت تكوين إضافي، ل مجموعة معلمات الكتلة DB، اختر مجموعة المعلمات التي أنشأتها مسبقًا (
zero-etl-custom-pg
).
- اختار إنشاء قاعدة البيانات.
في بضع دقائق، من المفترض أن يقوم بتدوير RDS لقاعدة بيانات MySQL كمصدر للتكامل صفر ETL.
قم بتكوين وجهة Redshift
بعد إنشاء مجموعة قاعدة بيانات المصدر الخاصة بك، يجب عليك إنشاء مستودع بيانات مستهدف وتكوينه في Amazon Redshift. يجب أن يستوفي مستودع البيانات المتطلبات التالية:
- استخدام نوع عقدة RA3 (
ra3.16xlarge
,ra3.4xlarge
الطرق أوra3.xlplus
) أو أمازون Redshift Serverless - مشفرة (في حالة استخدام مجموعة متوفرة)
بالنسبة لحالة الاستخدام الخاصة بنا، قم بإنشاء مجموعة Redshift من خلال استكمال الخطوات التالية:
- في وحدة تحكم Amazon Redshift ، اختر تكوينات ثم اختر إدارة عبء العمل.
- في قسم مجموعة المعلمات، اختر إنشاء.
- قم بإنشاء مجموعة معلمات جديدة باسم
zero-etl-rms
. - اختار تحرير المعلمات وتغيير قيمة
enable_case_sensitive_identifier
إلىTrue
. - اختار حفظ.
يمكنك أيضا استخدام واجهة سطر الأوامر AWS (AWS CLI) أمر تحديث-مجموعة العمل بالنسبة إلى Redshift Serverless:
- اختار تم توفير لوحة معلومات المجموعات.
في الجزء العلوي من نافذة وحدة التحكم الخاصة بك، سوف ترى جرّب ميزات Amazon Redshift الجديدة في المعاينة لافتة.
- اختار إنشاء مجموعة المعاينة.
- في حالة معاينة المساراختار
preview_2023
. - في حالة نوع العقدة، اختر أحد أنواع العقد المدعومة (في هذا المنشور، نستخدم
ra3.xlplus
).
- تحت تكوينات إضافية، وسعت تكوينات قواعد البيانات.
- في حالة مجموعات المعلمات، اختر
zero-etl-rms
. - في حالة التشفير، حدد استخدم خدمة إدارة المفاتيح AWS.
- اختار إنشاء الكتلة.
يجب أن تصبح الكتلة متوفرة في بضع دقائق.
- انتقل إلى مساحة الاسم
zero-etl-target-rs-ns
واختيار سياسة الموارد علامة التبويب. - اختار أضف الأساسيين المعتمدين.
- أدخل إما اسم Amazon Resource (ARN) لمستخدم أو دور AWS، أو معرف حساب AWS (مبادئ IAM) المسموح له بإنشاء عمليات التكامل.
يتم تخزين معرف الحساب باعتباره ARN مع المستخدم الجذر.
- في مجلة مصادر التكامل المعتمدة القسم، اختر أضف مصدر التكامل المعتمد لإضافة ARN الخاص بـ RDS لمثيل MySQL DB الذي يعد مصدر البيانات للتكامل صفر ETL.
يمكنك العثور على هذه القيمة بالانتقال إلى وحدة تحكم Amazon RDS والانتقال إلى الاعداد علامة التبويب zero-etl-source-rms
مثيل قاعدة البيانات.
يجب أن تشبه سياسة الموارد الخاصة بك لقطة الشاشة التالية.
تكوين الأذونات المطلوبة
لإنشاء تكامل صفري ETL ، يجب إرفاق المستخدم أو الدور الخاص بك السياسة القائمة على الهوية مع المناسب إدارة الهوية والوصول AWS (IAM) أذونات. يمكن لمالك حساب AWS تكوين الأذونات المطلوبة للمستخدمين أو الأدوار الذين قد يقومون بإنشاء عمليات تكامل صفرية ETL. تسمح سياسة العينة للمدير المرتبط بتنفيذ الإجراءات التالية:
- إنشاء عمليات تكامل صفرية لـ ETL لـ RDS المصدر لمثيل MySQL DB.
- عرض وحذف جميع عمليات تكامل صفرية ETL.
- إنشاء عمليات تكامل واردة في مستودع البيانات المستهدف. هذا الإذن غير مطلوب إذا كان الحساب نفسه يمتلك مستودع بيانات Redshift وكان هذا الحساب هو الحساب الرئيسي المعتمد لمستودع البيانات هذا. لاحظ أيضًا أن Amazon Redshift لديه تنسيق ARN مختلف للمجموعات المتوفرة والمجموعات التي لا تحتوي على خادم:
- مخصص -
arn:aws:redshift:{region}:{account-id}:namespace:namespace-uuid
- Serverless -
arn:aws:redshift-serverless:{region}:{account-id}:namespace/namespace-uuid
- مخصص -
أكمل الخطوات التالية لتكوين الأذونات:
- في وحدة تحكم IAM ، اختر السياسات في جزء التنقل.
- اختار إنشاء سياسة.
- قم بإنشاء سياسة جديدة تسمى
rds-integrations
باستخدام JSON التالي (استبدالregion
وaccount-id
بقيمك الفعلية):
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": [
"rds:CreateIntegration"
],
"Resource": [
"arn:aws:rds:{region}:{account-id}:db:source-instancename",
"arn:aws:rds:{region}:{account-id}:integration:*"
]
},
{
"Effect": "Allow",
"Action": [
"rds:DescribeIntegration"
],
"Resource": ["*"]
},
{
"Effect": "Allow",
"Action": [
"rds:DeleteIntegration"
],
"Resource": [
"arn:aws:rds:{region}:{account-id}:integration:*"
]
},
{
"Effect": "Allow",
"Action": [
"redshift:CreateInboundIntegration"
],
"Resource": [
"arn:aws:redshift:{region}:{account-id}:cluster:namespace-uuid"
]
}]
}
- قم بإرفاق السياسة التي أنشأتها بمستخدم IAM أو أذونات الدور.
إنشاء تكامل الصفر ETL
لإنشاء تكامل صفري ETL ، أكمل الخطوات التالية:
- في وحدة تحكم Amazon RDS ، اختر تكامل Zero-ETL في جزء التنقل.
- اختار إنشاء تكامل صفري ETL.
- في حالة معرف التكامل، أدخل اسمًا ، على سبيل المثال
zero-etl-demo
.
- في حالة قاعدة بيانات المصدر، اختر تصفح قواعد بيانات RDS واختر المجموعة المصدر
zero-etl-source-rms
. - اختار التالى.
- تحت الهدف، ل مستودع بيانات Amazon Redshift، اختر تصفح مستودعات بيانات Redshift واختر مستودع بيانات Redshift (
zero-etl-target-rs
). - اختار التالى.
- أضف العلامات والتشفير، إن أمكن.
- اختار التالى.
- تحقق من اسم التكامل والمصدر والهدف والإعدادات الأخرى.
- اختار إنشاء تكامل صفري ETL.
يمكنك اختيار التكامل لعرض التفاصيل ومراقبة تقدمه. استغرق الأمر حوالي 30 دقيقة حتى تتغير الحالة خلق إلى النشطه.
سيختلف الوقت حسب حجم مجموعة البيانات الخاصة بك في المصدر.
قم بإنشاء قاعدة بيانات من التكامل في Amazon Redshift
لإنشاء قاعدة البيانات الخاصة بك من التكامل صفر-ETL، أكمل الخطوات التالية:
- في وحدة تحكم Amazon Redshift ، اختر مجموعات في جزء التنقل.
- فتح
zero-etl-target-rs
العنقودية. - اختار بيانات الاستعلام لفتح محرر الاستعلام v2.
- اتصل بمستودع بيانات Redshift عن طريق الاختيار حفظ.
- الحصول على
integration_id
منsvv_integration
جدول النظام:
select integration_id from svv_integration; -- copy this result, use in the next sql
- استخدم
integration_id
من الخطوة السابقة لإنشاء قاعدة بيانات جديدة من التكامل:
CREATE DATABASE zetl_source FROM INTEGRATION '<result from above>';
اكتمل التكامل الآن، وستظهر لقطة كاملة للمصدر كما هي في الوجهة. ستتم مزامنة التغييرات الجارية في الوقت الفعلي تقريبًا.
تحليل بيانات المعاملات في الوقت الحقيقي القريب
الآن يمكننا تشغيل تحليلات على بيانات تشغيل TICKIT.
قم بتعبئة بيانات المصدر TICKIT
لتعبئة بيانات المصدر ، أكمل الخطوات التالية:
- انسخ ملفات بيانات إدخال CSV إلى دليل محلي. فيما يلي مثال على الأمر:
aws s3 cp 's3://redshift-blogs/zero-etl-integration/data/tickit' . --recursive
- اتصل بمجموعة RDS for MySQL وأنشئ قاعدة بيانات أو مخططًا لنموذج بيانات TICKIT، وتحقق من أن الجداول الموجودة في هذا المخطط تحتوي على مفتاح أساسي، وابدأ عملية التحميل:
mysql -h <rds_db_instance_endpoint> -u admin -p password --local-infile=1
- استخدم ما يلي إنشاء أوامر الجدول.
- قم بتحميل البيانات من الملفات المحلية باستخدام أمر LOAD DATA.
وفيما يلي مثال على ذلك. لاحظ أن ملف الإدخال CSV مقسم إلى عدة ملفات. يجب تشغيل هذا الأمر لكل ملف إذا كنت ترغب في تحميل كافة البيانات. ولأغراض العرض التوضيحي، يجب أن يعمل التحميل الجزئي للبيانات أيضًا.
تحليل مصدر بيانات TICKIT في الوجهة
في وحدة تحكم Amazon Redshift، افتح الإصدار 2 من محرر الاستعلام باستخدام قاعدة البيانات التي قمت بإنشائها كجزء من إعداد التكامل. استخدم الكود التالي للتحقق من صحة النشاط الأولي أو مركز السيطرة على الأمراض:
يمكنك الآن تطبيق منطق عملك على التحويلات مباشرةً على البيانات التي تم نسخها نسخًا متماثلاً إلى مستودع البيانات. يمكنك أيضًا استخدام تقنيات تحسين الأداء مثل إنشاء طريقة عرض Redshift مجسدة تربط الجداول المنسوخة والجداول المحلية الأخرى لتحسين أداء الاستعلام لاستعلاماتك التحليلية.
مراقبة
يمكنك الاستعلام عن عروض النظام والجداول التالية في Amazon Redshift للحصول على معلومات حول عمليات التكامل ذات القيمة الصفرية لـETL مع Amazon Redshift:
لعرض المقاييس المتعلقة بالتكامل المنشورة على الأمازون CloudWatch، افتح وحدة تحكم Amazon Redshift. يختار تكامل Zero-ETL في جزء التنقل واختر التكامل لعرض مقاييس النشاط.
المقاييس المتوفرة على وحدة تحكم Amazon Redshift هي مقاييس التكامل وإحصائيات الجدول، حيث توفر إحصائيات الجدول تفاصيل كل جدول منسوخًا من Amazon RDS لـ MySQL إلى Amazon Redshift.
تحتوي مقاييس التكامل على نجاح النسخ المتماثل للجدول وأعداد الفشل وتفاصيل التأخر.
عمليات إعادة المزامنة اليدوية
سيبدأ التكامل الصفري لـ ETL تلقائيًا في إعادة المزامنة إذا ظهرت حالة مزامنة الجدول على أنها فاشلة أو مطلوبة إعادة المزامنة. ولكن في حالة فشل إعادة المزامنة التلقائية، يمكنك بدء إعادة المزامنة على مستوى التفاصيل على مستوى الجدول:
ALTER DATABASE zetl_source INTEGRATION REFRESH TABLES tbl1, tbl2;
يمكن أن يدخل الجدول في حالة فشل لعدة أسباب:
- تمت إزالة المفتاح الأساسي من الجدول. في مثل هذه الحالات، تحتاج إلى إعادة إضافة المفتاح الأساسي وتنفيذ أمر ALTER المذكور مسبقًا.
- تمت مصادفة قيمة غير صالحة أثناء النسخ المتماثل أو تمت إضافة عمود جديد إلى الجدول باستخدام نوع بيانات غير معتمد. في مثل هذه الحالات، تحتاج إلى إزالة العمود الذي يحتوي على نوع بيانات غير مدعوم وتنفيذ أمر ALTER المذكور مسبقًا.
- قد يؤدي خطأ داخلي، في حالات نادرة، إلى فشل الجدول. يجب أن يقوم أمر ALTER بإصلاحه.
تنظيف
عندما تقوم بحذف تكامل صفري ETL، لا يتم حذف بيانات المعاملات الخاصة بك من RDS المصدر أو قواعد بيانات Redshift المستهدفة، لكن Amazon RDS لا يرسل أي تغييرات جديدة إلى Amazon Redshift.
لحذف تكامل صفري ETL ، أكمل الخطوات التالية:
- في وحدة تحكم Amazon RDS ، اختر تكامل Zero-ETL في جزء التنقل.
- حدد تكامل الصفر ETL الذي تريد حذفه واختياره حذف.
- لتأكيد الحذف ، اختر حذف.
وفي الختام
في هذا المنشور، أوضحنا لك كيفية إعداد تكامل ETL صفري من Amazon RDS لـ MySQL إلى Amazon Redshift. وهذا يقلل من الحاجة إلى الحفاظ على خطوط أنابيب البيانات المعقدة ويتيح إجراء تحليلات في الوقت الفعلي تقريبًا بشأن بيانات المعاملات والتشغيل.
لمعرفة المزيد حول تكامل Amazon RDS Zero-ETL مع Amazon Redshift، راجع العمل مع عمليات التكامل مع Amazon RDS Zero-ETL مع Amazon Redshift (معاينة).
حول المؤلف
ميليند أوك هو أحد كبار مهندسي الحلول المتخصصة في Redshift والذي عمل في Amazon Web Services لمدة ثلاث سنوات. وهو حاصل على شهادة مساعد SA وتخصص أمني وتخصص تحليلي معتمد من AWS، ومقره في كوينز، نيويورك.
أديتيا سامانت هو أحد الخبراء المخضرمين في صناعة قواعد البيانات العلائقية ولديه أكثر من عقدين من الخبرة في العمل مع قواعد البيانات التجارية ومفتوحة المصدر. يعمل حاليًا في Amazon Web Services كمهندس رئيسي لحلول قواعد البيانات المتخصصة. ومن خلال منصبه، يقضي وقتًا في العمل مع العملاء لتصميم بنيات سحابية أصلية قابلة للتطوير وآمنة وقوية. تعمل Aditya بشكل وثيق مع فرق الخدمة وتتعاون في تصميم وتقديم الميزات الجديدة لقواعد بيانات Amazon المُدارة.
- محتوى مدعوم من تحسين محركات البحث وتوزيع العلاقات العامة. تضخيم اليوم.
- PlatoData.Network Vertical Generative Ai. تمكين نفسك. الوصول هنا.
- أفلاطونايستريم. ذكاء Web3. تضخيم المعرفة. الوصول هنا.
- أفلاطون كربون، كلينتك ، الطاقة، بيئة، شمسي، إدارة المخلفات. الوصول هنا.
- أفلاطون هيلث. التكنولوجيا الحيوية وذكاء التجارب السريرية. الوصول هنا.
- المصدر https://aws.amazon.com/blogs/big-data/unlock-insights-on-amazon-rds-for-mysql-data-with-zero-etl-integration-to-amazon-redshift/