Tôi hiện đang làm việc trên một ứng dụng wiki-esque bằng CouchDB và đang cố gắng thực hiện một sơ đồ phiên bản tài liệu. Cách tôi nhìn thấy có hai cách để làm điều này:
- Lưu trữ mỗi phiên bản dưới dạng một tài liệu riêng biệt
- Lưu trữ các phiên bản cũ hơn dưới dạng tệp đính kèm vào một tài liệu.
Ngay bây giờ, tôi đã có một hình thức số 1 làm việc. Khi người dùng chỉnh sửa tài liệu và lưu tài liệu, phần đầu tiên sẽ sao chép bản sửa đổi trước đó sang tài liệu mới và sau đó lưu phiên bản mới. Mỗi tài liệu có một mảng 'history' chứa dữ liệu trên mỗi phiên bản (tài liệu _id của phiên bản cũ, dấu thời gian, trình chỉnh sửa, v.v.).
Vì mảng lịch sử này có thể trở nên khá dài đối với một tài liệu được cập nhật thường xuyên, tôi có một chế độ tìm nạp lịch sử trong quá trình đọc bình thường (và một chế độ xem khác để tìm nạp lịch sử).
Câu hỏi của tôi là thế này: Tôi cảm thấy không yên tâm về cách tiếp cận hiện tại của mình và đã suy nghĩ về việc thay đổi phương pháp 'đính kèm'. Nhưng tôi không chắc lắm. Tôi hy vọng ai đó hiểu rõ về CouchDB hơn tôi (tôi mới chỉ ở đây được vài tuần - và đây là dự án đầu tiên của tôi sử dụng CouchDB ... và NoQuery) có thể cho tôi biết những ưu và nhược điểm của mỗi tiếp cận. Hoặc có lẽ có một số sơ đồ phiên bản khác mà tôi đang xem?