اخبار، مطالب و رویدادهای مرتبط با توسعه نرم افزار رادکام

CDC چیست - بخش اول

در مقاله امروز رادکام، به بررسی قابلیت کمتر شناخته‌شده‌ای از SQL Server می‌پردازیم که نگهداری لاگ در اپلیکیشن را ساده‌تر می‌کند.

CDC یا Change Data Capture پس از فعال‌سازی، هر تغییر صورت گرفته اعم از insert، update یا delete بر جداول منتخب را در جدول‌های مخصوص خود نگهداری می‌کند.

طرز کار CDC

طرز کار CDC به این صورت است که از لاگ تراکنش‌ها (Transaction) تغذیه می‌کند. به همین علت بسته به بار پردازشی که بر دیتابیس و سرور وجود دارد، حداقل تأخیر در حدود 4 یا 5 ثانیه در منعکس کردن این تغییرات در جداول مخصوص CDC مشاهده می‌شود.

با اجرای دستور فعال‌سازی CDC، دو job ایجاد می‌شود:

  1. Capture job: وظیفه جمع‌آوری اطلاعات را بر عهده دارد.

    • این job بعد از اجرای دستور بلافاصله آغاز به کار می‌کند.
    • پیوسته در حال اجراشدن است.
    • در هر اجرا نهایتاً 1000 تراکنش انجام می‌دهد.
    • بین هر اجرا 5 ثانیه تأخیر وجود دارد.
  2. Clean up job: وظیفه حذف رکوردهای قدیمی را بر عهده دارد.

    • هر شب ساعت 2 اجرا می‌شود.
    • به‌صورت پیش‌فرض رکوردهای قدیمی‌تر از 3 روز را پاک می‌کند.
    • با هر دستور delete در حدود 5000 رکورد را حذف می‌کند.

نحوه استفاده

پیش از فعال کردن، باید SQL Server Agent در حال اجرا باشد.

فعال کردن SQL Server Agent

قبل از هر چیزی، باید CDC در سطح دیتابیس فعال شود (اگر پیش‌ازاین فعال‌سازی را انجام نداده باشید). این کار از طریق Stored Procedure به نام sys.sp_cdc_enable_db انجام می‌شود:

    
execute sys.sp_cdc_enable_db 
    

سپس به کمک stored procedure تحت عنوان sys.sp_cdc_enable_table می‌توان CDC را برای جداول موردنظر فعال کرد. به این صورت:

    
EXECUTE sys.sp_cdc_enable_table
@source_schema = N'SCHEMA_NAME'  
, @source_name = N'TABLE_NAME'  
, @role_name = N'cdc_Admin';  
GO 
    

پس از اجرای این دستور در دیتابیس شما مشابه تصویر زیر در قسمت system tables جداولی با شمای cdc ایجاد می‌شود.

جداول CDC ایجاد شده

در قسمت بعدی، به بررسی جداول ایجادشده و نحوه استفاده از آن‌ها می‌پردازیم.


نام را وارد کنید
تعداد کاراکتر باقیمانده: 1000
نظر خود را وارد کنید