RethinkDB 事务到多个文档/表

Suv*_*ica 3 transactions node.js rethinkdb rethinkdb-javascript

我需要在一个事务中更新 2 个表。

在当前版本中,RethinkDB 不支持开箱即用的事务。那么,我怎样才能做到这一点?

我可以通过两种方式进行更新:

  1. 更新第一个表。如果成功 -> 更新第二个表。
  2. 异步更新第二个表。

但是,当 2 个更新中的 1 个完成得很好,但另一个没有时,我该如何解决?是的,我可以检查更新结果并在发生错误时恢复更新。但无论如何,可能会出现这样的情况,即应用程序发生某些事情(与 Rethink 的连接丢失,或者只是脚本崩溃),但两个更新中的一个已经完成。因此,我的数据库将处于不一致状态。并且没有办法解决这个问题。

那么,是否可以在 nodejs 中为 RethinkDB 模拟事务行为?

mlu*_*ucy 5

你能做的最好的是两阶段提交。(MongoDB 有一个关于如何做到这一点的很好的文档,完全相同的技术应该在 RethinkDB 中工作:http ://docs.mongodb.org/master/tutorial/perform-two-phase-commits/ 。)