"

همگام‌سازی Change Tracking برای جداول در SQL Server,مزایای استفاده از Change Tracking در SQL Server,فعال‌سازی Change Tracking در پایگاه داده

همگام‌سازی Change Tracking برای جداول در SQL Server

همگام‌سازی Change Tracking در SQL Server روشی سبک و سریع برای شناسایی رکوردهای تغییر یافته و انتقال داده‌ها است.

تیم تحریریه
3
0
24 خرداد 1405
لینک کوتاه

همگام‌سازی Change Tracking برای جداول در SQL Server

در بسیاری از سیستم‌های نرم‌افزاری، نیاز است که تغییرات داده‌ها به‌صورت مداوم بین پایگاه داده اصلی و سایر سیستم‌ها همگام‌سازی شوند.
این موضوع در نرم‌افزارهای سازمانی، برنامه‌های موبایل، سیستم‌های توزیع‌شده و محیط‌هایی که چندین پایگاه داده با یکدیگر در ارتباط هستند، اهمیت ویژه‌ای دارد.
یکی از قابلیت‌های کاربردی SQL Server برای مدیریت این نیاز، Change Tracking است.
این ویژگی امکان شناسایی رکوردهای تغییر یافته را با حداقل سربار فراهم می‌کند و به توسعه‌دهندگان کمک می‌کند تا فرآیند همگام‌سازی داده‌ها را به‌صورت ساده و بهینه پیاده‌سازی کنند.



همگام‌سازی Change Tracking برای جداول در SQL Server

Change Tracking چیست؟

Change Tracking قابلیتی در SQL Server است که اطلاعات مربوط به تغییرات اعمال‌شده روی داده‌های جداول را ذخیره می‌کند.
برخلاف برخی فناوری‌های دیگر مانند Change Data Capture (CDC)، این ویژگی جزئیات کامل تغییرات را نگهداری نمی‌کند، بلکه فقط مشخص می‌کند که کدام رکوردها از زمان مشخصی تغییر کرده‌اند.

به عبارت دیگر، Change Tracking برای پاسخ به این سؤال طراحی شده است:

"چه رکوردهایی از آخرین همگام‌سازی تغییر کرده‌اند؟"

این ویژگی برای سناریوهایی مناسب است که تنها به دانستن شناسه رکوردهای تغییر یافته نیاز داریم و نیازی به مشاهده مقدار قبلی یا جزئیات کامل تغییرات نداریم.

 

مزایای استفاده از Change Tracking در SQL Server

استفاده از Change Tracking مزایای متعددی دارد که آن را به گزینه‌ای مناسب برای همگام‌سازی داده‌ها تبدیل می‌کند:

  • سربار کم روی پایگاه داده

    این قابلیت نسبت به CDC یا Triggerها منابع بسیار کمتری مصرف می‌کند و تأثیر ناچیزی بر عملکرد سیستم دارد.
  • راه‌اندازی ساده

    فعال‌سازی Change Tracking تنها با چند دستور SQL انجام می‌شود و نیازی به ایجاد جداول اضافی یا کدنویسی پیچیده ندارد.
  • مناسب برای همگام‌سازی

    برنامه‌های کلاینت می‌توانند تنها داده‌های تغییر یافته را دریافت کنند و از انتقال مجدد کل اطلاعات جلوگیری شود.
  • پشتیبانی از عملیات CRUD

    این ویژگی تغییرات ناشی از:
    • Insert

    • Update

    • Delete

را شناسایی می‌کند.

  • کاهش ترافیک شبکه

    تنها رکوردهای تغییر یافته بین سرور و کلاینت منتقل می‌شوند که باعث بهبود سرعت و کاهش مصرف پهنای باند می‌شود.



مزایای استفاده از Change Tracking در SQL Server

فعال‌سازی Change Tracking در پایگاه داده

ابتدا باید Change Tracking را در سطح پایگاه داده فعال کنیم.

ALTER DATABASE SalesDB

SET CHANGE_TRACKING = ON

(

CHANGE_RETENTION = 5 DAYS,

AUTO_CLEANUP = ON

);

 

در این دستور:

  • CHANGE_RETENTION مدت نگهداری اطلاعات تغییرات را مشخص می‌کند.
  • AUTO_CLEANUP باعث حذف خودکار اطلاعات قدیمی می‌شود.

فعال‌سازی Change Tracking برای جدول در SQL

پس از فعال‌سازی در سطح دیتابیس، باید آن را برای جداول موردنظر نیز فعال کنیم.

فرض کنید جدول زیر را داریم:

 

CREATE TABLE Customers

(

CustomerID INT PRIMARY KEY,

FirstName NVARCHAR(50),

LastName NVARCHAR(50),

City NVARCHAR(50)

);

فعال‌سازی Change Tracking

ALTER TABLE Customers

ENABLE CHANGE_TRACKING

WITH (TRACK_COLUMNS_UPDATED = ON);

گزینه TRACK_COLUMNS_UPDATED مشخص می‌کند که اطلاعات ستون‌های تغییر یافته نیز ذخیره شود.

 

مشاهده نسخه فعلی تغییرات

SQL Server برای هر تغییر یک نسخه داخلی ایجاد می‌کند.

برای مشاهده آخرین نسخه:

SELECT CHANGE_TRACKING_CURRENT_VERSION();

خروجی:

1250

این عدد نشان‌دهنده آخرین نسخه ثبت‌شده در سیستم Change Tracking است.




🌟 آیا می‌خواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟

با دوره آموزشی SQL Server ما، شما می‌توانید به راحتی و با روشی عملی، تمام مهارت‌های لازم را یاد بگیرید!

این دوره به شما آموزش می‌دهد که چگونه داده‌ها را به بهترین شکل مدیریت کنید، گزارش‌های قدرتمند بسازید و به تحلیل‌های عمیق دست یابید.

با محتوای جذاب و پروژه‌های واقعی، شما نه تنها تئوری را یاد می‌گیرید، بلکه توانایی‌های عملی خود را نیز تقویت می‌کنید.

پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشن‌تر بردارید!

 همین حالا شروع کنید و به دنیای داده‌ها بپیوندید!






ثبت داده‌های نمونه

ابتدا چند رکورد وارد می‌کنیم:

INSERT INTO Customers

VALUES

(1,'Ali','Ahmadi','Tehran'),

(2,'Sara','Moradi','Mashhad');

سپس نسخه فعلی را ذخیره می‌کنیم:

DECLARE @Version BIGINT;




SET @Version =

CHANGE_TRACKING_CURRENT_VERSION();

ایجاد تغییر در داده‌ها در  SQL Server

اکنون برخی تغییرات اعمال می‌کنیم.

ویرایش رکورد:

 

UPDATE Customers

SET City = 'Tabriz'

WHERE CustomerID = 1;

 

افزودن رکورد جدید:

 

INSERT INTO Customers

VALUES

(3,'Reza','Karimi','Shiraz');

حذف رکورد:

 

DELETE FROM Customers

WHERE CustomerID = 2;

دریافت رکوردهای تغییر یافته در SQL

برای مشاهده تغییرات از تابع CHANGETABLE استفاده می‌شود.

SELECT *

FROM CHANGETABLE

(

CHANGES Customers,

@Version

) AS CT;

نمونه خروجی:

CustomerID SYS_CHANGE_VERSION SYS_CHANGE_OPERATION

1 1251 U

2 1252 D

3 1253 I

 

معانی عملیات:

 

I = Insert

U = Update

D = Delete

دریافت اطلاعات کامل رکوردها در SQL

معمولاً علاوه بر شناسه رکورد، به اطلاعات کامل آن نیز نیاز داریم.

 

SELECT

C.CustomerID,

C.FirstName,

C.LastName,

C.City,

CT.SYS_CHANGE_OPERATION

FROM CHANGETABLE

(

CHANGES Customers,

@Version

) CT

LEFT JOIN Customers C

ON C.CustomerID = CT.CustomerID;

 

در این حالت داده‌های واقعی جدول نیز نمایش داده می‌شوند.

 

بررسی ستون‌های تغییر یافته در SQL Server

اگر گزینه TRACK_COLUMNS_UPDATED فعال باشد می‌توان ستون‌های تغییر یافته را بررسی کرد.

SELECT

SYS_CHANGE_COLUMNS

FROM CHANGETABLE

(

CHANGES Customers,

@Version

) CT;

این مقدار به صورت باینری ذخیره می‌شود و مشخص می‌کند کدام ستون‌ها تغییر کرده‌اند.

برای بررسی یک ستون خاص:

SELECT

CHANGE_TRACKING_IS_COLUMN_IN_MASK

(

COLUMNPROPERTY

(

OBJECT_ID('Customers'),

'City',

'ColumnId'

),

SYS_CHANGE_COLUMNS

)

FROM CHANGETABLE

(

CHANGES Customers,

@Version

) CT;

خروجی:

 

1

 

به این معنا که ستون City تغییر کرده است.

 

فرآیند همگام‌سازی داده‌ها در SQL Server 

یک سناریوی معمول همگام‌سازی به شکل زیر است:

مرحله اول

کلاینت آخرین نسخه دریافت‌شده را ذخیره می‌کند.

مثلاً:

Version = 1200

مرحله دوم

کاربر تغییراتی در پایگاه داده اعمال می‌کند.

مرحله سوم

کلاینت درخواست تغییرات جدید را ارسال می‌کند.

 

SELECT *

FROM CHANGETABLE

(

CHANGES Customers,

1200

);

مرحله چهارم

فقط رکوردهای تغییر یافته ارسال می‌شوند.

مرحله پنجم

کلاینت نسخه جدید را ذخیره می‌کند.

 

SELECT CHANGE_TRACKING_CURRENT_VERSION();

اعتبارسنجی نسخه‌ها

گاهی ممکن است نسخه ذخیره‌شده در کلاینت بسیار قدیمی باشد و اطلاعات آن از سیستم حذف شده باشد.

برای بررسی اعتبار نسخه:

SELECT

CHANGE_TRACKING_MIN_VALID_VERSION

(

OBJECT_ID('Customers')

);

نمونه خروجی:

1100

اگر نسخه کلاینت کمتر از این مقدار باشد:

Version = 1000

 

باید همگام‌سازی کامل انجام شود زیرا اطلاعات تغییرات قبلی دیگر در دسترس نیست.

 

غیرفعال‌سازی Change Tracking در SQL Server

در صورت نیاز می‌توان آن را برای جدول غیرفعال کرد:

 

ALTER TABLE Customers

DISABLE CHANGE_TRACKING;

و برای کل پایگاه داده:

ALTER DATABASE SalesDB

SET CHANGE_TRACKING = OFF;

 

تفاوت Change Tracking و Change Data Capture 

ویژگی CDC  Change Tracking 
مصرف منابع  کم  بیشتر
ذخیره جزئیات تغییرات  خیر  بله
ذخیره مقدار قبل و بعد  خیر  بله
مناسب برای Sync  بله  بله
مناسب برای Audit  خیر  بله
پیاده‌سازی  ساده  پیچیده‌تر

 

در نتیجه اگر تنها هدف شما همگام‌سازی داده‌ها باشد، Change Tracking انتخاب بهتری است. اما اگر نیاز به تاریخچه کامل تغییرات داشته باشید، CDC گزینه مناسب‌تری خواهد بود.

 

بهترین شیوه‌ همگام‌سازی Change Tracking در SQL

  • دوره نگهداری مناسب انتخاب کنید

    مقدار CHANGE_RETENTION باید متناسب با فاصله زمانی همگام‌سازی کلاینت‌ها تنظیم شود.
  • از Primary Key استفاده کنید

    Change Tracking برای شناسایی رکوردها به کلید اصلی وابسته است.
  • همواره نسخه‌ها را ذخیره کنید

    پس از هر همگام‌سازی موفق، شماره نسخه جدید باید در سیستم کلاینت ذخیره شود.
  • اعتبار نسخه را بررسی کنید

    قبل از اجرای همگام‌سازی، مقدار CHANGE_TRACKING_MIN_VALID_VERSION را کنترل کنید.
  • از ایندکس‌های مناسب استفاده کنید

    وجود ایندکس مناسب روی کلیدهای اصلی باعث بهبود عملکرد عملیات همگام‌سازی می‌شود.





بهترین شیوه‌ همگام‌سازی Change Tracking در SQL

جمع‌بندی

Change Tracking یکی از قابلیت‌های ارزشمند SQL Server برای شناسایی تغییرات داده‌ها و پیاده‌سازی فرآیندهای همگام‌سازی است.
این ویژگی با مصرف حداقل منابع، امکان تشخیص رکوردهای درج‌شده، ویرایش‌شده و حذف‌شده را فراهم می‌کند و گزینه‌ای ایده‌آل برای برنامه‌های توزیع‌شده، نرم‌افزارهای موبایل و سیستم‌های چندلایه محسوب می‌شود.
با استفاده از توابعی مانند CHANGETABLE، CHANGE_TRACKING_CURRENT_VERSION و CHANGE_TRACKING_MIN_VALID_VERSION می‌توان مکانیزم‌های همگام‌سازی سریع، قابل اعتماد و مقیاس‌پذیر را در SQL Server پیاده‌سازی کرد و از انتقال غیرضروری داده‌ها جلوگیری نمود.

محصولات مرتبط

کاربران ما

شما هم نظرتون با ما دریاره “همگام‌سازی Change Tracking برای جداول در SQL Server” اشتراک بزارید

برای ارسال نظر لطفا ورود یا ثبت نام کنید

منو