Change Data Capture

change-data-capture-چیست؟

معرفی انواع CDC در MySQL

عملیات CDC را میتوان در هر لایه ای از پروژه انجام داد.

روشهای ضبط تغییرات داده (CDC) در بانکهای اطلاعاتی (databases) :

  1. Timestamps on rows: ستونی در جدول اضافه شود تا تاریخ آخرین تغییر را نشان دهد.

    در MySQL  اینکار از طریق نوع TIMESTAMP قابل پیاده سازی است . مثال عملیاتی

  2. Version Numbers on rows : ستونی در جدول اضافه شود که شماره نسخه را ذخیره میکند . این ستون به ازاء هر تغییر افزوده می شود.
    در
    SQL Server  اینکار از طریق نوع rowversion قابل پیاده سازی است . مستندات

    میتوان از این ستون برای قفل های خوشبیتاته(Optimistic Locking) استفاده شود مانند Hibernate. مطالعه بیشتر 

  3. Status indicators on rows : ستونی از نوع Boolean که در صورت تغییر ردیف مقدار True میگیرد. این ستون می تواند مکمل بخش های قبلی باشد.
  4. Time/Version/Status on rows : سه ستون قبلی هر سه در جدول تعریف می شوند تا بتوان تغییرات داده های جدول را بصورت جامع بررسی کرد.

  5. Triggers:

    1. Database triggers : تعریف Trigger برای جدول روشی برای ثبت تغییرات داده هاست. هر بانک اطلاعاتی ازTriggerپشتیبانی میکند.

    2. Application-level triggers:
      1. Auditing with JPA :
        JPA به صراحت شامل یک auditing API نیست، اما این قابلیت را می توان با استفاده از حوادث چرخه حیات entity بدست آورد. جزییات مثال مثال2 مثال3

      2. Hibernate Envers : چارچوبهایی (frameworks) مانند Hibernate Envers وجود دارد که بانک اطلاعاتی را در سطح برنامه شبیه سازی میکنند. مثال

      3.  Spring Data JPA: مثال 

      4. audit4j :
        برای بررسی وقایع مربوط به سرورها، برنامه ها و پایگاه های داده مورد استفاده قرار گیرد

      5. JaVers : یک کتابخانه سبک جاوا است که برای ضبط تغییر داده هاست.
  6. Event Programming : هر چند این روش نیاز به برنامه نویسی دارد ولی روشی بسیار دقیق و مطلوب تر و انعطاف بیشتری دارد.

  7. Log scanners on databases : استفاده از transaction log بانکهای اطلاعاتی.
    • با توجه به دسترسی نداشتن به مستندات log، پیاده سازی از این طریق چالش بزرگی است.
    • استفاده از این روش نیازی به ایجاد ساختار جدیدی نبوده و صرفا کافی است transaction log خوانده شود.
      هر بانک اطلاعاتی روش خودش را برای خواندن از transaction log دارد بعنوان نمونه :
      - اوراکل GoldenGate را ارائه می دهد.
      -
      SQL Server پشتیبانی از CDC را ارائه می دهد.
      - MySQL، که به طور گسترده ای برای برنامه های کاربردی وب مورد استفاده قرار گرفته است، اجازه می دهد شما را به ضبط رویدادهای CDC از طریق راه حل های 3rd party های مختلف، مانند DataBus LinkedIn
      • برای بانکهای اطلاعاتی مدرن Tracking the capture از دو روش معمول زیر انجام می شود:
        • Database Triggers
        • Reading the transaction log

  8. Debezium :
    Debezium یک پروژه منبع باز جدید است که توسط RedHat اداره می شود که اتصال دهنده های اوراکل، MySQL، PostgreSQL و حتی MongoDB است.
    • با این پروژه نه تنها شما می توانید رویدادهای CDC را استخراج کنید، بلکه می توانید آنها را به Apache Kafka بفرستید، که به عنوان یک ستون فقرات برای تمام پیام های مورد نیاز برای مبادله بین ماژول های مختلف یک سیستم بزرگ سازمان عمل می کند.



منبع این نوشته : منبع
استفاده ,data ,اطلاعاتی ,جدول ,ستون ,change ,change data ,data capture ,پیاده سازی ,بانک اطلاعاتی ,rows ستونی