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

Giao dịch MongoDB 4.0:ACID Đọc + Ghi?

Câu trả lời ngắn gọn là có cho tính nguyên tử.

Trong MongoDB, Giao dịch (còn được gọi là giao dịch nhiều tài liệu) được liên kết với một phiên . Tức là bạn bắt đầu giao dịch cho một phiên. Tại bất kỳ thời điểm nào, bạn có thể có nhiều nhất một mở giao dịch trong một phiên.

Bạn không thể khóa toàn bộ bộ sưu tập để ghi. Bạn có thể muốn tạo nhiều giao dịch để đảm bảo rằng việc ghi không xen kẽ / ghi đè giữa các quy trình của bạn. MongoDB sử dụng Khóa lạc quan thay vì Khóa bi quan .

Tương tự như vậy trong các giao dịch đa tài liệu MongoDB. Ví dụ:sử dụng mongo shell :

s1 = Mongo().startSession() 
sessionTest = s1.getDatabase("databaseName").test;
s1.startTransaction() 
sessionTest.find({a:"foo"})
> {_id: ObjectId(..), a:"foo", b:1}

// Let's update the record outside of the session (i.e. another process)
db.test.update({a:"foo"}, {$set:{b:2}})

sessionTest.update({a:"foo"}, {$set:{b:9}})
// You'll get a WriteConflict error because the the document has been modified outside of the session. 

Cũng lưu ý rằng trong khi giao dịch đang mở, không có thay đổi dữ liệu nào được thực hiện bởi các hoạt động trong giao dịch được hiển thị bên ngoài giao dịch.

  • Khi một giao dịch được cam kết, tất cả các thay đổi dữ liệu sẽ được lưu và hiển thị bên ngoài giao dịch và giao dịch kết thúc.
  • Khi một giao dịch bị hủy bỏ, tất cả các thay đổi dữ liệu được thực hiện bởi các lần ghi trong giao dịch sẽ bị hủy bỏ mà không bao giờ hiển thị và giao dịch kết thúc.

Xem thêm Ví dụ về Atomicity .

Cần lưu ý rằng MongoDB là một cơ sở dữ liệu phân tán , vì vậy bạn cũng cần lưu ý về các tùy chọn khác nhau để có tính nhất quán. Bạn có thể chỉ định các tùy chọn này khi bắt đầu Session.startTransaction () tùy thuộc vào trường hợp sử dụng:

Giao dịch nhiều tài liệu hỗ trợ tùy chọn đọc chính và tất cả các hoạt động trong một giao dịch nhất định phải chuyển đến cùng một thành viên.

Bạn cũng có thể quan tâm đến Kỹ thuật Chalk and Talks:Giao dịch MongoDB video chứa một số giải thích kỹ thuật đằng sau các giao dịch MongoDB.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lấy kết quả có thứ tự về mức độ liên quan từ Truy vấn văn bản trên Bộ sưu tập MongoDB bằng Trình điều khiển C #

  2. MongoDB $ binarySize

  3. mongoose:xóa trước phần mềm trung gian Một tùy chọn không hoạt động

  4. Nhận tài liệu cập nhật trong MongoDB

  5. $ locationProvider html5mode gây ra lỗi không thể GET khi làm mới - Ứng dụng AngularJS Node