所以我几个星期以来一直在试图解决这个问题,但我似乎无法弄清楚。因此,MongoDB无法像我们通常理解的那样处理回滚(即当客户端向数据库添加信息时,例如用户名,但在注册过程中退出。现在,数据库只剩下一些与任何东西无关的"挂起"信息。MongoDb 如何处理这个问题? 或者,如果没有人能回答这个问题,也许他们可以指出我可以回答的来源/例子?谢谢。
MongoDB
不支持事务,则无法执行原子多语句事务以确保一致性。一次只能对单个集合执行原子操作。在处理NoSQL
数据库时,您需要尽可能多地验证数据,他们很少抱怨某些事情。有一些解决方法或模式可以实现SQL
,例如事务。例如,在您的情况下,您可以将用户的信息存储在临时集合中,检查数据有效性,然后将其存储到用户的集合中。
这应该是直截了当的,但是当我们处理多个文档时,事情会变得更加复杂。在这种情况下,您需要为交易创建指定的collection
。例如
transaction collection
{
id: ..,
state : "new_transaction",
value1 : values From document_1 before updating document_1,
value2 : values From document_2 before updating document_2
}
// update document 1
// update document 2
噢!! 更新document 1 or 2
时出错了?不用担心,我们仍然可以从transaction collection
中恢复旧值。这种模式称为补偿,以模仿SQL
的事务行为。