@Gareth , bạn có nhiều cách hợp pháp để thực hiện việc này. Vì vậy, mối quan tâm chính của họ là cách bạn định truy vấn dữ liệu, (tức là: truy vấn nào cần nhanh )
Dưới đây là một số phương pháp.
Phương pháp số 1:tập hợp "liên kết"
Bạn có thể tạo một bộ sưu tập chỉ chứa các ánh xạ giữa các bộ sưu tập.
Ưu điểm:
- Hỗ trợ cập nhật nguyên tử để dữ liệu không bị mất
Nhược điểm:
- Truy vấn bổ sung khi cố gắng di chuyển giữa các bộ sưu tập
Phương pháp số 2:lưu trữ bản sao của các ánh xạ nhỏ hơn trong bộ sưu tập lớn hơn
Ví dụ:bạn có hàng triệu Products
, nhưng chỉ một trăm Categories
. Sau đó, bạn sẽ lưu trữ Categories
dưới dạng một mảng bên trong mỗi Products
.
Ưu điểm:
- Dấu chân nhỏ nhất
- Chỉ cần một bản cập nhật
Nhược điểm:
- Truy vấn bổ sung nếu bạn đi "sai đường"
Phương pháp # 3:lưu trữ bản sao của tất cả các ánh xạ trong cả hai bộ sưu tập
(những gì bạn đang đề xuất)
Ưu điểm:
- Quyền truy cập truy vấn duy nhất để di chuyển giữa một trong hai bộ sưu tập
Nhược điểm:
- Các chỉ số tiềm năng lớn
- Cần giao dịch (?)
Hãy nói về "nhu cầu giao dịch". Có một số cách để thực hiện giao dịch và nó thực sự phụ thuộc vào loại an toàn mà bạn yêu cầu.
Bạn chắc chắn có thể làm được điều này. Bạn sẽ phải tự hỏi mình, điều gì tồi tệ nhất sẽ xảy ra nếu chỉ một trong các lần lưu không thành công?
Phương pháp số 4:xếp hàng thay đổi
Tôi không biết bạn đã từng làm việc với hàng đợi chưa, nhưng nếu bạn có chút thời gian, bạn có thể tạo một hàng đợi đơn giản và có các công việc khác nhau cập nhật các bộ sưu tập tương ứng của chúng.
Đây là một giải pháp tiên tiến hơn nhiều. Tôi có xu hướng chọn # 2 hoặc # 3.