2008-10-10 33 views
13

Tôi hy vọng sẽ tìm ra những công cụ mà mọi người sử dụng để đồng bộ hóa dữ liệu giữa các cơ sở dữ liệu. Tôi đang tìm một giải pháp JDBC có thể được sử dụng như một công cụ dòng lệnh.Bạn sử dụng công cụ JDBC nào để đồng bộ hóa các nguồn dữ liệu?

Đã từng là một công cụ được gọi là Sync4J sử dụng khung công tác SyncML nhưng điều này dường như đã bị giảm dần.

Trả lời

7

Tôi đã nghe nói rằng Dịch vụ sao chép dữ liệu do Db4O cung cấp thực sự tốt. Nó cho phép bạn sử dụng Hibernate để quay trở lại một RDBMS - Tôi không nghĩ rằng nó hỗ trợ JDBC tho (http://www.db4o.com/about/productinformation/drs/Default.aspx?AspxAutoDetectCookieSupport=1)

Có một dự án mã nguồn mở được gọi là Daffodil, nhưng tôi chưa điều tra. (https://daffodilreplicator.dev.java.net/)

Người Tôi hiện đang xem xét sử dụng được gọi là SymmetricDS (http://symmetricds.sourceforge.net/)

Có những người khác, họ từng làm điều đó hơi khác. Một số trình kích hoạt sử dụng, một số thăm dò ý kiến, một số sử dụng chặn các trình điều khiển JDBC. Bạn cần phải quyết định những giới hạn kỹ thuật nào bạn đang ở để xác định bạn muốn sử dụng giới hạn nào.

Wikipedia cung cấp tổng quan về các kỹ thuật khác nhau (http://en.wikipedia.org/wiki/Multi-master_replication) và cũng cung cấp liên kết đến một DBReplicator thay thế khác (http://dbreplicator.org/).

2

Nếu bạn có một mô hình và lớp DAO đã tồn tại cho codebase của bạn, bạn chỉ có thể tạo khuôn khổ đồng bộ hóa của riêng mình, nó không khó.

Sao chép dữ liệu cũng đơn giản như:

  1. đọc một đối tượng từ cơ sở dữ liệu Cơ sở dữ liệu
  2. loại bỏ siêu dữ liệu (uuid, vv)
  3. chèn vào cơ sở dữ liệu B

Đồng bộ hoá có một số mức độ hiểu biết về những gì đã được đồng bộ hóa. Bạn có thể làm điều đó trong thời gian chạy bằng cách nhận danh sách uuids từ TableInA và TableInB và tìm ra mục nào mới, hoặc bạn có thể có một bảng mục cần được đồng bộ hóa (cư với kích hoạt khi chèn/cập nhật trong TableInA) và chạy từ đó. Công cụ của bạn có thể là một TimerTask để các cơ sở dữ liệu được lưu giữ đồng bộ hóa ở mức chi tiết thời gian mà bạn mong muốn.

Tuy nhiên, có thể có một số công cụ tồn tại mà thực hiện tất cả mà không có bất kỳ triển khai thực hiện nào và mỗi triển khai sẽ khác nhau dựa trên nhu cầu kinh doanh. Ngoài ra ở cấp cơ sở dữ liệu sẽ có các công cụ sao chép.

+0

Cảm ơn câu trả lời chu đáo. Tôi có chiến lược đồng bộ hóa của riêng bạn vào lúc này và tôi đang tìm cách thay thế nó bằng một cái gì đó chung chung hơn. –

2

Đồng bộ hóa thực sự yêu cầu một số dữ liệu mà tôi hy vọng lược đồ cơ sở dữ liệu của bạn có (bạn có thể đọc tài liệu SyncML để xem cách chúng tiến hành). Sync4J sẽ không giúp bạn nhiều, nó thực sự cao cấp và định hướng XML. Nếu bạn không thấy trước bất kỳ xung đột nào (có nghĩa là: thực sự dễ dàng đồng bộ hóa), bạn có thể thử với một ETL nhẹ như Enhydra Octopus.

0

tôi chủ yếu sử dụng Oracle vào lúc này, và con đường đầy đủ tính năng nhất mà tôi đã đi qua là dữ liệu Red Gate Hãy so sánh:

http://www.red-gate.com/products/oracle-development/data-compare-for-oracle/

blog cũ này đưa ra một bản tóm tắt tốt của tuyến giải pháp có sẵn: cúng

http://www.novell.com/coolsolutions/feature/17995.html

Các JDBC cụ thể tôi đã đi qua đã rất cơ bản. Các giải pháp được đề cập bởi Aidos vẻ như tính năng hoàn thiện nhất nếu bạn muốn đi xuống publish-đăng ký tuyến đường:

http://symmetricds.codehaus.org/

Hope this helps.

Các vấn đề liên quan