Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Theo dõi cấp độ cột và cấp độ hàng trong sao chép hợp nhất

Trong bài viết này, hãy để chúng tôi xem xét các tùy chọn theo dõi cấp hàng và cấp cột trong sao chép hợp nhất và cách chúng được sử dụng để phát hiện xung đột trong quá trình sao chép hợp nhất.

Hợp nhất sao chép: Sao chép hợp nhất được sử dụng để sao chép dữ liệu theo cả hai cách, tức là từ nhà xuất bản đến người đăng ký và từ người đăng ký đến nhà xuất bản.

Ảnh chụp nhanh ban đầu của các đối tượng được chụp và áp dụng cho người đăng ký. Thay đổi dữ liệu gia tăng và thay đổi giản đồ được theo dõi bằng cách sử dụng trình kích hoạt và áp dụng cho người đăng ký khi người đăng ký đồng bộ hóa với nhà xuất bản.

Xung đột:

Trong sao chép hợp nhất, cả người đăng ký và nhà xuất bản đều độc lập và dữ liệu có thể được sửa đổi trên bất kỳ nút nào.

Khi dữ liệu được sửa đổi trên cả nhà xuất bản và người đăng ký trong chu kỳ sao chép và khi người đăng ký đồng bộ hóa với nhà xuất bản, xung đột sẽ xảy ra. Tác nhân hợp nhất xác định người chiến thắng ở cả hai bên tùy thuộc vào người giải quyết xung đột. Theo mặc định, người chiến thắng được xác định bởi các thông số khác nhau, chẳng hạn như đăng ký máy khách hoặc máy chủ, đăng ký kéo hoặc đẩy, v.v.

Phát hiện xung đột:

Việc phát hiện xung đột phụ thuộc vào loại theo dõi mà chúng tôi định cấu hình cho bài viết.

  • Theo dõi cấp hàng: Nếu thay đổi dữ liệu được thực hiện đối với bất kỳ cột nào trên cùng một hàng ở cả hai đầu thì đó được coi là xung đột.
  • Theo dõi cấp độ cột: Nếu thay đổi dữ liệu được thực hiện trên cùng một cột ở cả hai đầu, thì thay đổi này có thể coi là xung đột.

Trình giải quyết:

Người phân giải áp dụng dữ liệu người chiến thắng ở cả hai đầu khi xảy ra xung đột.

Theo mặc định, nếu có xung đột giữa nhà xuất bản và người đăng ký, nhà xuất bản luôn thắng.

Nếu xung đột xảy ra giữa hai người đăng ký, người chiến thắng được xác định bởi người đăng ký máy khách / máy chủ và đăng ký kéo / đẩy.

Ngoài trình phân giải mặc định, cũng có một số trình giải quyết tùy chỉnh. Chúng ta sẽ thảo luận về trình phân giải tùy chỉnh trong các bài viết sắp tới.

Định cấu hình sao chép hợp nhất với theo dõi cấp hàng:

Cơ sở dữ liệu nhà xuất bản:pub_db

Cơ sở dữ liệu người đăng ký:sub_db

Hãy để chúng tôi tạo bảng “TBL_EMP” và thêm nó vào để hợp nhất sao chép.

CREATE TABLE TBL_EMP
(EmpID INT, Emp_FName varchar(100),Emp_Lname varchar(100))

INSERT INTO TBL_EMP VALUES (1,'Jhon','P')

INSERT INTO TBL_EMP VALUES (2,'Alison','P')

INSERT INTO TBL_EMP VALUES (3,'Angela','P')

Để định cấu hình bản sao hợp nhất, nhà xuất bản phải được định cấu hình để sử dụng phân phối cục bộ hoặc phân phối từ xa.

Khi bản phân phối được định cấu hình, hãy điều hướng đến thư mục sao chép trong SSMS và nhấp chuột phải vào các ấn phẩm cục bộ.

Nhấp vào Tiếp theo và chọn cơ sở dữ liệu xuất bản, nhấp vào Tiếp theo và chọn bản sao hợp nhất, chọn năm 2008 trở lên và thêm bảng vào bản sao.

Bây giờ hãy nhấp vào thuộc tính bài viết và chọn thuộc tính của bài viết được đánh dấu.

Chọn cấp độ theo dõi để trở thành theo dõi cấp độ hàng.

Theo mặc định, nó sẽ là theo dõi cấp độ hàng. Nhấp vào OK, Tiếp theo, Tiếp theo . Thêm bộ lọc nếu bạn muốn gửi dữ liệu cụ thể đến người đăng ký, nếu không, hãy bỏ qua, bật Tạo ảnh chụp nhanh ngay lập tức , định cấu hình bảo mật tác nhân theo nhu cầu của bạn, bật Tạo ấn phẩm , chỉ định tên của ấn phẩm và nhấp vào Kết thúc .

Sau khi tạo ảnh chụp nhanh ban đầu, hãy thêm người đăng ký.

Điều hướng đến ấn phẩm bạn tạo trong thư mục nhân bản trên nhà xuất bản, nhấp chuột phải và chọn Đăng ký mới.

Nhấp vào Tiếp theo , chọn ấn phẩm, bấm Tiếp theo và chọn đăng ký kéo hoặc đẩy theo nhu cầu của bạn. Trong trường hợp này, tôi đã sử dụng đăng ký đẩy.

Chọn cơ sở dữ liệu đăng ký và nhấp vào Tiếp theo , định cấu hình thông tin xác thực đăng nhập cho tác nhân hợp nhất và nhấp vào Tiếp theo .

Chọn lịch đại lý theo nhu cầu của bạn. Trong trường hợp này, tôi đã sử dụng Chỉ chạy theo yêu cầu . Nhấp vào Tiếp theo , chọn Khởi tạo ngay lập tức và chọn khách hàng làm loại đăng ký, nhấp vào Tiếp theo , bật Tạo đăng ký , nhấp vào Tiếp theo Kết thúc .

Khi ảnh chụp nhanh ban đầu được áp dụng, hãy chạy câu lệnh bên dưới về nhà xuất bản để cập nhật bản ghi.

update TBL_EMP set Emp_Fname = 'Amanda' where empid = 1

Bây giờ, trên db của người đăng ký, hãy chạy câu lệnh bên dưới để cập nhật họ.

update TBL_EMP set Emp_Lname = 'A' where empid = 1

Bây giờ, cùng một hàng đã được sửa đổi cả trong cơ sở dữ liệu nhà xuất bản và cơ sở dữ liệu người đăng ký trong cùng một chu kỳ sao chép.

Theo tùy chọn theo dõi mà chúng tôi đặt, tức là theo dõi cấp hàng, thay đổi được coi là xung đột và sẽ được ghi vào bảng xung đột khi tác nhân hợp nhất chạy.

Điều hướng đến ấn phẩm bạn đã tạo và mở rộng ấn phẩm để xem các đăng ký. Nhấp chuột phải vào đăng ký, chọn Xem trạng thái đồng bộ hóa và nhấp vào Bắt đầu.

Khi tác nhân hợp nhất đã chạy thành công, hãy chuyển đến người đăng ký và kiểm tra dữ liệu bằng cách sử dụng câu lệnh bên dưới.

use sub_db
select * from TBL_EMP  where empid = 1 

Chúng ta có thể thấy rằng thay đổi từ nhà xuất bản đã giành được và thay đổi từ người đăng ký đã mất.

Thông tin xung đột được lưu trữ trong bảng xung đột và có thể được xem trong trình xem xung đột.

Điều hướng đến nhà xuất bản, nhấp chuột phải vào nhà xuất bản và chọn Xem xung đột.

Chọn bảng xung đột và nhấp vào OK để xem chi tiết.

Thay đổi cấp độ theo dõi

Bây giờ chúng ta hãy thay đổi cấp độ theo dõi thành theo dõi cấp độ cột. Điều hướng đến ấn phẩm, nhấp chuột phải vào ấn phẩm và chọn Thuộc tính nhà xuất bản. Nhấp vào Bài viết, chọn bảng, nhấp vào Thuộc tính bài viết, đặt thuộc tính của bài viết trong bảng được đánh dấu, chọn Theo dõi cấp cột, nhấp vào OK, nhấp vào OK rồi nhấp vào Đánh dấu để khởi động lại.

Điều này sẽ đánh dấu tất cả những người đăng ký để bắt đầu lại vì chúng tôi đang thay đổi cấp độ theo dõi hiện tại thành cấp độ mới.

Điều hướng đến xuất bản, nhấp chuột phải vào xuất bản và nhấp vào Xem trạng thái tác nhân ảnh chụp nhanh , nhấp vào Bắt đầu để tạo một ảnh chụp nhanh mới. Có nhiều cách khác để tạo ảnh chụp nhanh.

Bây giờ, hãy chạy câu lệnh bên dưới đối với nhà xuất bản để cập nhật bản ghi.

update TBL_EMP set Emp_Fname = 'Amanda' where empid = 2

Bây giờ, hãy chạy câu lệnh bên dưới đối với db của người đăng ký để cập nhật Họ.

update TBL_EMP set Emp_Lname = 'A' where empid = 2

Chạy tác nhân hợp nhất theo cách thủ công. Tôi vẫn thấy xung đột trên hồ sơ mặc dù chúng tôi đã cập nhật hai cột khác nhau và đặt mức theo dõi ở mức cột.

Chúng ta có thể xem chi tiết trong trình xem xung đột. Thay đổi cấp độ theo dõi hiện tại không hoạt động. Vì vậy, tôi đã định cấu hình lại ấn phẩm, đặt mức theo dõi thành theo dõi mức cột trước khi tạo ảnh chụp nhanh ban đầu. Một ảnh chụp nhanh đã được tạo và một người đăng ký đã được thêm vào ấn bản.

Khi ảnh chụp nhanh ban đầu được áp dụng cho người đăng ký, hãy chạy các câu lệnh sau trong cơ sở dữ liệu của nhà xuất bản.

update TBL_EMP set Emp_Fname = 'Amanda' where empid = 3

Chạy câu lệnh sau trong cơ sở dữ liệu người đăng ký.

update TBL_EMP set Emp_Lname = 'A' where empid = 3

Chạy tác nhân hợp nhất theo cách thủ công. Bây giờ, trong cơ sở dữ liệu người đăng ký, hãy truy vấn bảng TBL_EMP.

Cập nhật từ nhà xuất bản và người đăng ký không đủ điều kiện là xung đột vì cả hai đều nằm trên các cột khác nhau và cấp độ theo dõi được đặt thành theo dõi cấp độ cột. Không có xung đột nào được ghi lại trong các bảng xung đột, các cập nhật về cả nhà xuất bản và người đăng ký trên các cột khác nhau sẽ không bị mất.

Hãy để chúng tôi cập nhật cùng một cột về nhà xuất bản và người đăng ký.

Thực thi câu lệnh sau đối với cơ sở dữ liệu của nhà xuất bản.

use pub_db
update TBL_EMP set Emp_Lname = 'B' where empid = 1

Thực thi câu lệnh sau đối với cơ sở dữ liệu người đăng ký.

use sub_db
update TBL_EMP set Emp_Lname = 'C' where empid = 1

Chạy tác nhân hợp nhất và truy vấn bảng TBL_EMP trên người đăng ký. Cập nhật về người đăng ký bị mất và xung đột được ghi lại.

Hiệu suất:

Có thể có chi phí hiệu suất với theo dõi cấp cột so với theo dõi cấp hàng khi có các cập nhật lớn. Nhưng trong trường hợp của tôi, tôi không nhận thấy bất kỳ sự khác biệt nào về thời gian đồng bộ hóa cho cả theo dõi cấp hàng và cấp cột trong trường hợp cập nhật lớn vì bảng có thể có cấu trúc đơn giản (tức là rất ít cột) và cả người đăng ký và nhà xuất bản trên cùng một phiên bản máy chủ SQL.

Ghi chú:

  • Theo mặc định, nó luôn là theo dõi cấp hàng khi tính năng sao chép hợp nhất được định cấu hình.
  • Tùy chọn mức độ theo dõi phụ thuộc vào một bảng. Vì vậy, bạn có thể có cấp hàng trên một bảng và cấp cột trên bảng khác.
  • Các tùy chọn này chỉ hữu ích khi phát hiện xung đột dựa trên bản cập nhật, không giải quyết được xung đột đó.
  • Định cấu hình lại ấn bản nếu việc thay đổi cấp độ theo dõi hiện tại không hoạt động.
  • Đặt cấp độ theo dõi theo nhu cầu kinh doanh của bạn.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Python, Ruby và Golang:So sánh ứng dụng dịch vụ web

  2. 11 Câu lệnh SQL phổ biến với các ví dụ cơ bản

  3. Sai lầm sơ đồ ER thường gặp

  4. Cách đặt lại mật khẩu người dùng chính Amazon RDS

  5. Cách tạo mô hình cơ sở dữ liệu từ Scratch