node.js - RethinkDB 对多个文档/表的事务处理

标签 node.js transactions rethinkdb rethinkdb-javascript

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

在当前版本中,RethinkDB 不支持开箱即用的事务。那么,我该如何实现呢?

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

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

但是当 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/

相关文章:

node.js - 从 Promise Sequelize 返回值

node.js - 尝试使用 REST API 创建问题时,Bitbucket API 始终返回 400

javascript - 带有 couchbase db 的 ELF header Node js 无效

javascript - 是否可以在 Mocha 测试中使用 ES6 模块?

docker - Rethinkdb SIGTERM,关闭

docker - Rethinkdb容器:rethinkdb进程占用的RAM比整个容器少

java - apache ignite 1.6.0 xa 资源在现有 jta 事务中登记

mysql - 使用 MySQL 和 InnoDB 管理 Rails3 中的事务

mysql - Rails + MySQL + Transactions + Locking,如何防止打开事务解锁表?

json - 如何使用 JavaScript 在 ReThinkDB 中的 ReQL 中对数组应用过滤器