Change Data Capture (CDC) به فرآیند شناسایی و ضبط تغییرات ایجاد شده در دادههای یک پایگاه داده اشاره دارد و سپس این تغییرات را در زمان واقعی به یک فرایند یا سیستم پاییندستی تحویل میدهد.
چرا اهمیت دارد
ضبط هر تغییر حاصل از تراکنشها در یک پایگاه داده منبع و انتقال آنها به هدف در زمان واقعی، سیستمها را همگام نگه میدارد و امکان تکرار داده قابل اعتماد و مهاجرت به ابر بدون توقف را فراهم میکند.
CDC برای معماریهای مدرن ابری ایدهآل است زیرا روشی بسیار کارآمد برای انتقال دادهها در شبکههای گسترده است. همچنین، با توجه به اینکه دادهها در زمان واقعی منتقل میشوند، از تحلیل و علم داده در زمان واقعی نیز پشتیبانی میکند.
Change Data Capture در ETL
Change Data Capture روشی از ETL (استخراج، تبدیل، بارگذاری) است که در آن دادهها از یک منبع استخراج، تبدیل و سپس به یک مخزن هدف مانند Data Lake یا Data Warehouse بارگذاری میشوند. بیایید هر مرحله از پایپلاین ETL را بررسی کنیم.

استخراج (Extract):
به طور تاریخی، دادهها به صورت دستهای با پرسوجوهای پایگاه داده استخراج میشدند. مشکل زمانی ایجاد میشود که دادهها در جداول منبع بهطور مداوم بهروزرسانی میشوند. بازسازی کامل یک نسخه از دادههای منبع مناسب نیست و بنابراین این بهروزرسانیها به طور قابل اعتماد در مخزن هدف منعکس نمیشوند.
Change Data Capture این چالش را حل میکند، دادهها را به صورت زمان واقعی یا نزدیک به زمان واقعی استخراج کرده و جریان قابل اعتماد تغییر داده را فراهم میکند.
تبدیل (Transformation):
معمولاً ابزارهای ETL دادهها را در یک محیط موقت قبل از بارگذاری تبدیل میکنند. این شامل تبدیل ساختار و فرمت دادهها برای انطباق با مخزن هدف، معمولاً یک Data Warehouse سنتی است. با توجه به محدودیتهای این انبارها، کل مجموعه داده باید قبل از بارگذاری تبدیل شود و بنابراین تبدیل مجموعه دادههای بزرگ میتواند زمانبر باشد.
مجموعه دادههای امروزی بسیار بزرگ و حساسیت زمانی بسیار مهم است. در پایپلاین مدرنتر ELT (استخراج، بارگذاری، تبدیل)، دادهها بلافاصله بارگذاری شده و سپس در سیستم هدف، معمولاً Data Warehouse ابری، Data Lake یا Data Lakehouse، تبدیل میشوند. ELT به صورت میکرو-بچ عمل میکند، تنها دادههای تغییر یافته از آخرین بارگذاری موفق را بارگذاری میکند، یا به صورت CDC که دادهها را به محض تغییر در منبع بهطور مداوم بارگذاری میکند.
بارگذاری (Load):
این مرحله به فرآیند قرار دادن دادهها در سیستم هدف اشاره دارد، جایی که میتوان آنها را با ابزارهای BI یا تحلیلی تحلیل کرد.
مزایای Change Data Capture
موارد استفاده زیادی برای CDC در استراتژی یکپارچهسازی دادههای شما وجود دارد. ممکن است دادهها را به یک Data Warehouse یا Data Lake منتقل کنید، یک مخزن داده عملیاتی ایجاد کنید یا یک نسخه واقعی از دادههای منبع بسازید. یا حتی معماری مدرن Data Fabric را پیادهسازی کنید. در نهایت، CDC به سازمان شما کمک میکند ارزش بیشتری از دادهها کسب کند، با امکان ادغام و تحلیل سریعتر دادهها و استفاده کمتر از منابع سیستم. برخی از مزایای کلیدی عبارتند از:
-
حذف نیاز به بهروزرسانی دستهای و پنجرههای زمانی ناخوشایند با امکان بارگذاری افزایشی یا جریان دادهها به صورت زمان واقعی در مخزن هدف.
-
CDC مبتنی بر لاگ روشی بسیار کارآمد برای محدود کردن تأثیر استخراج دادهها از منبع هنگام بارگذاری دادههای جدید است.
-
با توجه به اینکه CDC دادهها را در زمان واقعی منتقل میکند، مهاجرت پایگاه داده بدون توقف را تسهیل میکند و از تحلیل زمان واقعی، حفاظت از تقلب و همگامسازی دادهها در سیستمهای توزیعشده پشتیبانی میکند.
-
CDC یک روش بسیار کارآمد برای انتقال دادهها در شبکههای گسترده است و بنابراین برای ابر ایدهآل است.
-
ضبط تغییرات داده همچنین برای انتقال دادهها به راهکارهای پردازش جریان مانند Apache Kafka مناسب است.
-
CDC تضمین میکند که دادهها در سیستمهای متعدد همگام باقی بمانند، که این مسئله به ویژه در محیطهای داده با سرعت بالا و تصمیمگیریهای حساس به زمان اهمیت دارد.
روشهای Change Data Capture
چند روش برای پیادهسازی سیستم CDC وجود دارد. قبل از معرفی ویژگیهای CDC در SQL Server، Oracle و چند پایگاه داده دیگر، توسعهدهندگان و DBAها از تکنیکهایی مانند Table Differencing، Change-Value Selection و Database Triggers برای ضبط تغییرات پایگاه داده استفاده میکردند. با این حال، این روشها میتوانند ناکارآمد یا تهاجمی باشند و معمولاً بار اضافی قابل توجهی روی سرورهای منبع ایجاد میکنند. به همین دلیل DBAها به سرعت از ویژگیهای CDC تعبیهشده مبتنی بر لاگ مانند Oracle CDC استفاده کردند. این ویژگیها از یک فرآیند پسزمینه برای اسکن لاگ تراکنشهای پایگاه داده جهت ضبط دادههای تغییر یافته استفاده میکنند. بنابراین تراکنشها تحت تأثیر قرار نمیگیرند و تأثیر عملکردی روی سرورهای منبع به حداقل میرسد.
روش محبوب، استفاده از Transaction Log است که تغییرات دادهها و متادیتا را ثبت میکند. در اینجا سه رویکرد اصلی بررسی میشوند:
-
Log-based CDC: کارآمدترین روش برای پیادهسازی CDC است. زمانی که تراکنش جدیدی وارد پایگاه داده میشود، در فایل لاگ ثبت میشود بدون اینکه تأثیری بر سیستم منبع داشته باشد و شما میتوانید این تغییرات را از لاگ برداشت و منتقل کنید.

-
Query-based CDC: در این روش دادهها در منبع پرسوجو میشوند تا تغییرات شناسایی شوند. این روش تهاجمیتر است زیرا نیاز به یک نشانگر زمانی یا مشابه در دادهها دارد.
-
Trigger-based CDC: در این روش، برنامه منبع تغییر میکند تا نوشتن دادهها به جدول تغییر را تریگر کند و سپس منتقل شود. این روش عملکرد پایگاه داده را کاهش میدهد زیرا هر بار که یک ردیف بهروزرسانی، درج یا حذف شود، چندین نوشتن انجام میشود.
نسل بعدی CDC
تعداد کمی از فروشندگان پایگاه داده فناوری CDC یا ویژگی تعبیهشده CDC ارائه میدهند. حتی زمانی که ارائه میدهند، این فناوری عموماً برای ضبط تغییرات داده از انواع دیگر سیستمهای منبع مناسب نیست. این بدان معناست که تیمهای IT باید ابزارهای CDC جداگانه را برای هر نوع پایگاه داده سازمان خود یاد بگیرند، پیکربندی و نظارت کنند.
جدیدترین نسل ابزارهای CDC مبتنی بر لاگ به صورت کاملاً یکپارچه ارائه میشوند. این ابزارها دارای قابلیتهای با عملکرد بالا برای جذب دادهها هستند که به طور یکپارچه با اکثر ابزارهای ETL و انواع مختلف سیستمهای منبع و هدف مانند CDC برای Oracle و SQL Server کار میکنند. آنها همچنین میتوانند دادهها را به اهدافی مانند Snowflake و Azure تکثیر کنند. این امکان را فراهم میکند که از یک ابزار برای تمام نیازهای ادغام دادههای زمان واقعی و انبار داده استفاده کنید.
این ویدئوی کوتاه توضیح میدهد که چگونه این ابزارها سرعت تکثیر، جذب و جریان دادهها را در طیف گستردهای از پایگاه دادههای ناهمگون، انبار دادهها و پلتفرمهای Big Data افزایش میدهند.
