Đồng bộ dữ liệu giữa hai bảng trong SQL Server

Trên thực tế có nhiều tình huống các ứng dụng cần đồng bộ dữ liệu giữa các table với nhau điển hình như:

– Ứng dụng với CSDL phân tán.
– Ứng dụng Data Warehouse cần nhận biết dữ liệu update, insert để làm mới dữ liệu.

Cách truyền thống để so sánh sự thay đổi dữ liệu từ bảng nguồn so với bảng đích là so sánh giá trị trên từng field của từng dòng trong table, kỹ thuật này rất thủ công và cũng rất chậm và tốn nhiều thời gian cũng như tài nguyên hệ thống.

Đọc thêm »

Sử dụng Change Tracking trong SQL Server 2008 (Phần cuối)

Sau một thời gian nghiên cứu, nay chúng ta sẽ đi đến phần cuối cùng của loạt bài về Change Tracking trong SQL Server 2008, người dịch bài này thấy có rất nhiều điều có thể ứng dụng từ chức năng này trong SQL Server 2008. Trong đó, một trường hợp mà chúng ta có thể xây dựng một cơ chế đồng bộ dữ liệu giữa hai database, trong đó dữ liệu đã được thay đổi kể từ lần đồng bộ cuối cùng sẽ do Change Tracking cung cấp, và chúng ta chỉ cần đồng bộ những dòng dữ liệu đã được thay đổi này, thậm chí chỉ cần đồng bộ các cột đã được thay đổi, có nghĩa là chúng ta chỉ lấy ra những dữ liệu cần thiết từ dữ liệu nguồn, truyền qua mạng internet, LAN, … đến database đich. Vi dữ liệu được lấy ra không dư thừa, nên sẽ tăng tốc độ cho việc đồng bộ dữ liệu cũng như độ chính xác của nó.
Với đặc điểm này, chũng ta cũng có thể xây dựng một chức năng nhỏ trên ứng dụng, cho phép ứng dụng nhắc nhở tới người dùng những dữ liệu nào chưa được đồng bộ, theo một khoảng thời gian nhất định. 
Trong loạt ví dụ sau chúng ta sẽ tìm hiểu:

  1. Kích hoạt Change Tracking ở mức Database và mức Table.
  2. Truy vấn các bảng hệ thống cung cấp thông tin về thiết lập Change Tracking.
  3. Tìm hiểu các hàm dùng để truy vấn các thông tin thay đổi  với Change Tracking.
  4. Vô hiệu chức năng Change Tracking.

Đọc thêm »

Sử dụng Change Tracking trong SQL Server 2008 (Phần 3)

So sánh Data Change Capture và Change Tracking
SQL Server 2008 giới thiệu hai tính năng theo dõi sự thay đổi dữ liệu, cho phép các ứng dụng xác định những thay đổi gây ra bởi các hoạt động DML (Thêm, sửa, xóa) đã được thực hiện cho các bảng người dùng trong cơ sở dữ liệu. Trước khi các tính năng này được cung cấp, nhà lập trình phải tự tạo ra các cơ chế dùng để theo dõi sự thay đổi dữ liệu bên trong các ứng dụng. Những cơ chế này thường kéo theo phải thay đổi lược đồ (schema) của bảng cần theo dõi hoặc phải sử dụng trigger. Tuy nhiên với hai tính năng được cung cấp với SQL 2008 này thì không cần phải thực hiện các biện pháp trên.

Đọc thêm »

Sử dụng Change Tracking trong SQL Server 2008 (Phần 1)

Vấn đề:
Bài trước đã nói về sử dụng và cấu hình Change Data Capture, trong bài này, chúng ta tiếp tục nghiên cứu tiếp một tính năng nữa là Change Tracking.
Change Tracking là một tính năng nhỏ cung cấp cơ chế đồng bộ dữ liệu giữa các bảng người dùng trong các ứng dụng.
Change Tracking cho phép ứng dụng chỉ nhận những thay đổi ròng (net changes) đã làm trên các bảng người dùng, cùng với các thông tin về những sự thay đổi đó.  Điều này có nghĩa là nếu một bản ghi được chỉnh sửa hơn 1 lần, thì CT chỉ theo bảo trì và lưu trữ về sự thay đổi cuối cùng.
Với việc Change Tracking được tích hợp vào SQL Server 2008, các lập trình viên sẽ không còn phải xây dựng các giải pháp phức tạp mà ở đó họ phải viết hàng ngàn câu lệnh (như sử dụng trigger, cột timestamp, và viết code để dọn dẹp thông tin lưu trữ)  trong các bản SQL trước để theo dõi sự thay đổi dữ liệu nữa. Việc này đã có SQL Server làm thay.
Change Tracking một khối xây dựng quan trọng cho các ứng dụng đồng bộ hóa sao chép dữ liệu trong các tình huống mà ở đó các giải pháp đồng bộ dữ liệu khác không làm việc (hoặc không thể làm việc) cần một giải pháp tùy chỉnh theo ý nhà phát triển. Ví dụ, một kịch bản yêu cầu đồng bộ hóa dữ liệu từ các kho dữ liệu không phải trên cơ sở dữ liệu SQL Server hoặc trong trường hợp lược đồ của các kho dữ liệu lưu trữ là rất khác nhau.
Trong bài này, chúng ta sẽ tìm hiểu chi tiết Change Tracking là gì, nó làm việc như thế nào, cách cấu hình, một tình huống có thể dùng Change Tracking, và nó khác gì so với CDC.
Change Tracking có trong tất cả các phiên bản của SQL Server 2008.

Đọc thêm »

Sử dụng Change Data Capture trong SQL Server 2008

Vấn đề:
Change Data Capture là một tính năng mới trong SQL Server, nó được thiết kế để “chụp” lại các hoạt động như Insert, Update, Delete áp dụng trên các bảng dữ liệu trong Sql Server. Và làm cho thông tin chi tiết về các sự thay đổi có sẵn trong những định dạng liên quan có thể sử dụng một cách đơn giản.
Một ví dụ tốt về tính năng này có thể được sử dụng trong việc thực hiện cập nhật định kỳ vào một kho dữ liệu.
Một trong những yêu cầu của quá trình trích xuất (Etrack), chuyển đổi (Transform), và tải dữ liệu (Load) gọi tắt là ETL là cập nhật các dữ liệu đã được thay đổi kể từ lần cuối cùng mà quá trình ETL chạy. Trước khi có CDC, chúng ta làm việc này đơn giản bằng cách truy vấn lần thay đổi cuối cùng từ cột LastUpdate trong bảng dữ liệu nguồn để nhận diện dòng dữ liệu nào đã được thay đổi, mặc dù phương pháp này cũng khá hiệu quả, tuy nhiên nó lại không thể được sử dụng cho việc nhận biết là các dòng dữ liệu nào đã được xóa, thêm vào đó, chúng ta cũng không thể biết là cái gì đã được thay đổi khi nào, chúng ta chỉ đơn giản là truy xuất được trạng thái hiện tại của các dòng đã được nhận diện là có thay đổi. CDC cung cấp giải pháp để giải quyết các vấn đề đã đặt ra ở trên và còn hơn thế nữa.
Change Data Capture chỉ có trên các phiên bản: Enterprise, Developer và Evaluation.

Đọc thêm »