في عالم النهاردة واللي بيعتمد على البيانات بشكل كبير، الشركات محتاجة تعالج وتحلل البيانات بشكل لحظي عشان تاخد قرارات صح. وتقنية الـ Change Data Capture (CDC) ظهرت كحل سحري واعتمدت عليها Pinterest في قواعد بياناتها .
في عالم النهاردة واللي بيعتمد على البيانات بشكل كبير، الشركات محتاجة تعالج وتحلل البيانات بشكل لحظي عشان تاخد قرارات صح. وتقنية الـ Change Data Capture (CDC) ظهرت كحل سحري واعتمدت عليها Pinterest في قواعد بياناتها .
الـ CDC بتساعد المؤسسات إنها تتابع وتلتقط التغييرات اللي بتحصل في قواعد البيانات بتاعتها بكفاءة وعشان كده في المقال ده، هنكتشف يعني إيه CDC، وليه هي مهمة، وإزاي Pinterest قدروا يطبقوا حلول الـ CDC بشكل عام لكل قواعد البيانات بتاعتهم.
يعني إيه Change Data Capture؟
الـ CDC عبارة عن مجموعة من أنماط التصميم اللي بتستخدم لتحديد وتتبع التغييرات في قاعدة البيانات، زي الإضافات (inserts)، والتحديثات (updates)، وعمليات الحذف (deletes).
التقنية دي بتسمح للتطبيقات إنها تستجيب للتغييرات دي في وقت لحظي Realtime، وده بيخليها جزء أساسي في تكامل البيانات (Data Integration)، وكذلك في الـ (replication)، وعملية المزامنة الخاصة بقواعد البيانات وبعضها.
ليه الـ CDC مهمة؟
معالجة البيانات بشكل لحظي (Realtime): الـ CDC بتمكّننا من معالجة البيانات لحظة بلحظة عن طريق انها بتلتقط التغييرات أول بأول. وده مهم للتطبيقات اللي بتحتاج معلومات محدثة الـ Fraud Detection Systems أو الـ Recommendation Engines.
تكامل البيانات (Data Integration): من خلال التقاط التغييرات أول بأول، الـ CDC بتسهّل تكامل البيانات بين أنظمة مختلفة. وده مفيد في البيئات اللي فيها تطبيقات متعددة بتحتاج توصل لنفس البيانات وتعالجها وممكن تكون ليها قواعد بيانات مختلفة ولكن هي محتاجة نفس البيانات.
تقليل الحمل على الـ Source Systems: بدل ما نعمل تحميل كامل للبيانات ونعملها كلها Loading وبعدين ننقلها كلها .. فالـ CDC بتسحب التغييرات اللي حصلت، وده بيقلل الحمل على الأنظمة المصدرية وبيحسّن الأداء.
الـ Audit & Compliance: الـ CDC بتوفر طريقة موثوقة لتتبع التغييرات اللي حصلت وده مناسب جدًا للـ Auditing والـ Compliance، فبتضمن إن كل التعديلات متسجلة وقابلة للتتبع.
رحلة Pinterest في تنفيذ الـ CDC
خلونا دلوقتي نشوف رحلة Pinterest وازاي قدروا يطبقوا وينفذوا الـ CDC في قواعد البيانات بتاعتهم وإنهم يبنوا حاجة Generic تتماشى مع الـ System بتاعهم ونشوف ايه التحديات اللي قابلوها واتصرفوا معاها ازاي.
تحديات الـ CDC السابقة
في الماضي، فرق مختلفة في Pinterest نفذت حلول CDC منفصلة عشان يلبوا احتياجات محددة خاصة بيهم. ورغم إنها كانت فعّالة لغرضها، إلا إن الحلول دي سببت عدم رضا للمستخدمين بسبب التباينات اللي ظهرت، وعدم وضوح المسؤوليات مين مسئول عن ايه، ومشاكل من ناحية الموثوقية أو الـ Reliability.
بناء Generic CDC
عشان فريق Pinterest يحل التحديات دي، قرروا إنهم يبنوا حل CDC Generic ويكون معتمد على Debezium™ من Red Hat. الحل ده بيهدف إلى:
ضمان أنظمة موثوقة (Reliable)، بزمن استجابة منخفض يعني Low-Latency، وتكون قابلة للتوسع Scalable، مع ضمان معالجة البيانات على الأقل مرة واحدة وده اللي بنسميه At Least Once Processing.
دعم الـ Distributed Databases بشكل كبير.
تنفيذ Load Balancing قوي وتقليل التأثير على قواعد البيانات الأساسية.
توفير إمكانيات للـ Configuration والـ Observability متقدمة للمستخدمين.
Pinterest CDC Architecture
البنية التحتية لقواعد البيانات في Pinterest بتتميز بالتوزيع العالي Highly Distribution، وكل وحدة موزعة بنسميها shard. بعض قواعد البيانات الكبيرة ممكن يكون فيها حوالي 10,000 shard. وعلى الرغم من إن Debezium Connector المفتوح المصدر، زي MySQL Connector، بيشتغل بشكل سلس مع shard واحدة فقط.
فالتحدي كان في توافقه مع قواعد البيانات الموزعة بتاعة Pinterest خصوصًا إن هم عندهم Distributed Architecture.