2012-01-23 44 views
5

Sao chép được lọc của CouchDB có thể được thiết lập để nhân rộng không chỉ phiên bản mới nhất của mọi tài liệu, mà còn là 100 bản sửa đổi cuối cùng của mỗi tài liệu?Bản sao được lọc của CouchDB có thể sao chép 100 bản sửa đổi cuối cùng của tài liệu không?

Tôi muốn tính năng này, vì tôi dự định cho phép mỗi phiên bản ứng dụng chọn bản sửa đổi gần đây (các bản sửa đổi sẽ đến từ nhiều nguồn, mỗi bản có mức độ chính xác/tin cậy khác nhau) là chính xác nhất, vì vậy tôi cần thêm hơn một bản sửa đổi có sẵn trong mỗi cá thể cơ sở dữ liệu.

Việc sử dụng hợp cụ thể như sau:

CouchApp 1 chứa một cơ sở dữ liệu của dữ liệu trên tất cả các dòng tu của một giáo phái cải cách.

CouchApp 2 chứa cơ sở dữ liệu về tất cả các hội thánh trong tất cả các mệnh giá Cải cách trên toàn thế giới.

CouchApps 1 & 2 được thiết lập để nhân rộng hai chiều để giữ đồng bộ với nhau, nhưng CouchApp 1 chỉ yêu cầu dữ liệu của một giáo phái từ bộ lọc nhân bản mệnh giá của CouchApp 2.

Người dùng 1 là ẩn danh, vì vậy tương đối không đáng tin cậy và người dùng 2 là quản trị viên của CouchApp2, do đó có cấp độ thẩm quyền/đáng tin cậy cao. Cả hai CouchApps được thiết lập để tin tưởng dữ liệu gần đây hơn 2/3 so với dữ liệu có thẩm quyền.

Đầu tiên (theo thứ tự thời gian), người dùng có thẩm quyền 2 nhập 10 bản sửa đổi dữ liệu của hội thánh về giáo đoàn 1 vào CouchApp 2 (tất cả các mệnh giá). Thứ hai (theo thứ tự thời gian), người dùng ẩn danh 1 nhập 10 bản sửa đổi dữ liệu của giáo đoàn về giáo đoàn 1 vào CouchApp 1 (một mệnh giá).

Sao chép hai chiều xảy ra.

CouchApp 2 (tất cả các mệnh giá) hiển thị dữ liệu của người dùng 1 theo mặc định, vì dữ liệu đó gần đây hơn. Nhưng, bởi vì người dùng 1 chỉ nhập một số trường (nhưng không phải tất cả) của dữ liệu của hội thánh 1, CouchApp 2 hiển thị dữ liệu của người dùng 2 cho tất cả các trường khác.

Tôi đang cởi mở khi được cho biết ứng dụng sẽ sao chép nhiều bản sửa đổi hoặc đánh giá tính chính xác của đầu vào của người dùng sau khi sao chép (có thể thực hiện trước khi nhân rộng) hoặc để đánh giá độ chính xác đó ở tất cả.

Trả lời

2

Rất tiếc, bạn không thể sao chép trực tiếp các bản sửa đổi cũ. Mục đích duy nhất của số _rev là dành cho MVCC và không được thiết kế để theo dõi lịch sử sửa đổi. Điều đó đang được nói, không phải là không thể để thực hiện việc này.

Cân nhắc lưu trữ các bản sửa đổi cũ dưới dạng tệp đính kèm JSON trên chính tài liệu. Điều này sẽ giúp họ sao chép ngay cùng với phần còn lại của tài liệu. Ngoài ra, có other strategies mà mọi người đã nghĩ ra để chinh phục vấn đề này. (Google xung quanh và bạn có thể tìm thấy nhiều hơn)

+0

Cảm ơn bạn đã đề xuất này; vì nó được mô tả chi tiết hơn ở đây http://blog.couchbase.com/simple-document-versioning-couchdb (được liên kết đến trên trang bạn đã tham chiếu) có vẻ như nó có thể cung cấp những gì tôi cần. – timblack1

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