MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Nhiều cập nhật trong MongoDB mà không cần giao dịch

@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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách viết truy vấn Mongo để tìm tài liệu con với điều kiện

  2. Trình điều khiển C # MongoDB - Làm thế nào để sử dụng UpdateDefinitionBuilder?

  3. MongoDB sẽ không kết nối với MongoHQ bằng Mongoid

  4. Bản cập nhật Mongodb được lồng sâu vào tài liệu con

  5. Làm cách nào để lưu trữ Ngày và Giờ trong Meteor cho các truy vấn phạm vi?