Thực hành tốt nhất / Mẫu để đồng bộ hóa dữ liệu hai chiều


52

Tôi thường xuyên làm việc với ý tưởng đồng bộ hóa dữ liệu 2 chiều giữa các hệ thống cơ sở dữ liệu. Ví dụ kinh điển là hai hệ thống CRM hơi khác nhau (giả sử, Raiser Edge và Salesforce) và cần phải đồng bộ hóa hai chiều dữ liệu Liên hệ giữa chúng.

Bỏ qua các cân nhắc API, giả sử bạn có khóa chung để đồng bộ hóa và hoàn toàn nghĩ về thuật toán / mẫu sẽ được sử dụng, đây là một nhiệm vụ thường bị đánh giá thấp bởi những người không chuyên về công nghệ.

Ví dụ: bạn phải coi chừng:

  • Bạn có thể dễ dàng phát hiện bản ghi nào đã thay đổi trong cả hai hệ thống (hoặc bạn sẽ phải so sánh tất cả các bản ghi giữa các hệ thống để phát hiện các thay đổi)
  • Nếu bạn đang đồng bộ hóa một lần mỗi N giờ, làm thế nào để giải quyết các xung đột khi cùng một bản ghi thay đổi ít nhiều cùng một lúc trong cả hai hệ thống
  • Nếu bạn đang đồng bộ hóa thời gian thực (tức là bản cập nhật trong một hệ thống sẽ ngay lập tức kích hoạt bản cập nhật cho hệ thống khác), cách xử lý phân kỳ theo thời gian do lỗi hoặc sự cố hệ thống

Cá nhân tôi có thể nghĩ ra cách để giải quyết tất cả những điều này nhưng tôi tự hỏi liệu có bất kỳ mô hình, tài liệu hay thực tiễn tốt nhất nào mà tôi có thể tham khảo.


những gì bạn mô tả nghe có vẻ khá gần với hệ thống cơ sở dữ liệu của Liên bang - điều đó có đúng không?
gnat

@gnat: Cảm ơn liên kết, một số mối quan tâm tương tự (ví dụ: xử lý sự không đồng nhất), nhưng tôi đang nói về việc đồng bộ một tập hợp dữ liệu từ hai cơ sở dữ liệu tự trị trong khi đó dường như là về cách tạo ra một cái nhìn tích hợp hoàn toàn về mọi thứ trên nhiều dbs.
codeulike

1
7 năm sau, 50 câu trả lời nhưng chỉ có 1 câu trả lời đàng hoàng. Phải có một số mô hình đồng bộ hóa hoặc thực hành tốt nhất hiện có?
codeulike

Câu trả lời:


8

Vâng, một vấn đề khó khăn, dễ dàng bị đánh giá thấp. Và có thể là rất nhiều công việc. Nếu bạn đang sử dụng các công nghệ của Microsoft, bạn có thể muốn xem Microsoft Sync Framework tại đâyđây .


1
Cảm ơn, đó là thú vị. Tôi đã nghe nói về Ms Sync Framework nhưng không nhận ra nó quá khái quát. Về cơ bản nó là một mẫu để xử lý các vấn đề đồng bộ nói chung.
codeulike

2
Microsoft Sync Framework đã được thay thế bằng Bộ công cụ Microsoft Sync Framework.
Tomas Kubes

Tôi thất vọng với các tài liệu không rõ ràng, đặc biệt đối với các nhà cung cấp dữ liệu ADO.NET không SQL, đó là trường hợp của tôi. Ngoài ra, nơi làm việc của tôi đang tìm kiếm thứ gì đó không yêu cầu thêm bảng cơ sở hạ tầng / thực hiện thay đổi trong môi trường Sản xuất. Vì vậy, tôi sắp loại bỏ cái này.
Veverke

0

Có nhiều lý thuyết về đồng bộ hóa DB trang web từ xa. Đầu tiên bắt đầu với INSERT. xử lý cái này thật dễ dàng - vì bạn có thể tạo một ID duy nhất cho mọi trang web (ví dụ: tên ban đầu của tên trang web + ID (số): site_a_177 so với site_b_53)

Vì vậy, chèn không nên tạo ra bất kỳ xung đột. vấn đề là cập nhật. Tôi không tin rằng có một phương pháp chứng minh thất bại 100%, nhưng bạn có thể bắt đầu cập nhật bằng cách "khóa" bản ghi trong DB từ xa và chỉ sau khi bạn xử lý - tiếp tục với bản cập nhật và kết thúc bằng cách đồng bộ hóa bản cập nhật và chỉ sau đó phát hành khóa.


1
Cảm ơn, tôi nghĩ rằng bạn đang nói về các dbs phân tán có cùng lược đồ và xử lý các giao dịch phân tán. Tôi đang suy nghĩ nhiều hơn về các kịch bản trong đó hai DB hoàn toàn tự động (ví dụ: chúng gán các id duy nhất theo các cách hoàn toàn khác nhau và các lược đồ khác nhau) nhưng bạn muốn đồng bộ một tập hợp con dữ liệu trong chúng.
codeulike

Có vẻ như không nên có bất kỳ xung đột. Trong trường hợp đó, nó sẽ rất đơn giản - chỉ cần lưu "id bản ghi cuối cùng" đã được đồng bộ hóa cho mỗi bảng và tiếp tục từ đó.
alfasin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.