序列化“隔离级别”在 MongoDB 中,或者更新丢失问题
我意识到 MongoDB 是一个 NoSQL 解决方案,但我想知道它是否具有某种相当于序列化级别的事务隔离级别。
如果没有,您将如何解决 MongoDB 中的更新丢失问题?
我想在 Mongo 中保留一些数据的修订历史记录,并且每个修订都必须指向之前的修订。如何确保我的数据不存在超过一个最新版本,并且另一方面不会因并发更新而丢失任何版本?
** 编辑 **
哎呀,RTFM,确实有可能: http://www.mongodb .org/display/DOCS/Atomic+Operations
不确定我是否应该关闭这个问题,因为这些知识可能与其他人相关。
I realize MongoDB is a NoSQL solution, but I was wondering if it had some sort of equivalent to serialization-level transaction isolation level.
If not, how would you solve the lost-update problem in MongoDB?
I want to keep the revision history of some data in Mongo and each revision has to point to the one before it. How can I make sure no more than one latest revision exists for my data, and on the other hand that no revision is lost due to concurrent updates?
** Edit **
Oops, RTFM, it is indeed possible: http://www.mongodb.org/display/DOCS/Atomic+Operations
Not sure if I should close the question since the knowledge might be relevant to other people..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,这是可能的,只要您将历史记录保存在单个文档中即可。 MongoDB 支持文档范围内的原子更新,但不支持跨集合中的多个文档。
因此,您可以使用如下模式将历史记录嵌入到数组中:
例如,您可以插入一个新文档:
然后在一个原子操作中更新它:
Yes, this is possible, so long as you keep the history in a single document. MongoDB supports atomic updates within the scope of a document, but not across multiple documents in a collection.
So, you could embed the history in an array, using a schema something like this:
For example, you could insert a new document:
Then update it in one atomic operation: