我需要在一个事务中更新 2 个表。
在当前版本中,RethinkDB 不支持开箱即用的事务。那么,我该如何实现呢?
我可以通过两种方式进行更新:
- 更新第一个表格。如果成功 -> 更新第二个表。
- 异步更新第二张表。
但是当 2 次更新中的 1 次顺利完成,而另一次没有完成时,我该如何解决这种情况?是的,我可以检查更新结果并在发生错误时还原更新。但无论如何,可能会有这样的情况,当应用程序发生某些事情(失去与 Rethink 的连接,或者只是脚本崩溃),但两个更新之一已经完成。 因此,我的数据库将处于不一致状态。没有办法解决这个问题。
那么,是否可以在nodejs中为RethinkDB模拟事务行为?
最佳答案
您能做的最好的事情就是两阶段提交。 (MongoDB 有一份关于如何执行此操作的好文档,完全相同的技术应该适用于 RethinkDB:http://docs.mongodb.org/master/tutorial/perform-two-phase-commits/。)
关于node.js - RethinkDB 对多个文档/表的事务处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32456243/