Bạn có thể chia sẻ suy nghĩ của mình về cách bạn sẽ triển khai phiên bản dữ liệu trong MongoDB không. (Tôi đã hỏi câu hỏi tương tự liên quan đến Cassandra . Nếu bạn có bất kỳ suy nghĩ nào db tốt hơn cho điều đó xin vui lòng chia sẻ)
Giả sử rằng tôi cần phiên bản hồ sơ trong một sổ địa chỉ đơn giản. (Hồ sơ sổ địa chỉ được lưu trữ dưới dạng đối tượng json phẳng). Tôi hy vọng rằng lịch sử:
- sẽ được sử dụng không thường xuyên
- sẽ được sử dụng tất cả cùng một lúc để trình bày nó theo kiểu "cỗ máy thời gian"
- sẽ không có nhiều phiên bản hơn vài trăm đến một bản ghi. lịch sử sẽ không hết hạn
Tôi đang xem xét các phương pháp sau:
Tạo một bộ sưu tập đối tượng mới để lưu trữ lịch sử của các bản ghi hoặc thay đổi các bản ghi. Nó sẽ lưu trữ một đối tượng trên mỗi phiên bản có tham chiếu đến mục nhập sổ địa chỉ. Những hồ sơ như vậy sẽ như sau:
{ '_id': 'id mới', 'người dùng': user_id, 'dấu thời gian': dấu thời gian, 'address_book_id': 'id của bản ghi sổ địa chỉ' 'old_record': {'first_name': 'Jon', 'last_name': 'Doe' ...} }
Cách tiếp cận này có thể được sửa đổi để lưu trữ một loạt các phiên bản cho mỗi tài liệu. Nhưng điều này dường như là cách tiếp cận chậm hơn mà không có bất kỳ lợi thế.
Lưu trữ các phiên bản dưới dạng đối tượng được tuần tự hóa (JSON) được đính kèm với các mục trong sổ địa chỉ. Tôi không chắc cách gắn các đối tượng đó vào tài liệu MongoDB. Có lẽ như một mảng của chuỗi. ( Được mô hình hóa sau khi Phiên bản tài liệu đơn giản với CouchDB )