hadoop - 如何在 CouchDB 中实现分布式事务?

标签 hadoop couchdb distributed-transactions

我们正在将我们的数据库从 oracle 迁移到 couchDB,因为其中一个用例是实现分布式事务管理。
例如:从 JMS 队列中读取数据并将其更新到多个文档中,如果任何事情失败,则恢复并向 JMS 队列抛出异常。
正如我们所知,couchDB 不支持分布式事务管理。
您能否建议任何替代策略来实现此或任何其他出路?

最佳答案

除了技术方面,我觉得你可能对它的底线感兴趣。

如前所述,分布式事务是不可能的——这个概念甚至不存在,因为它没有必要。事实上,与关系世界不同的是,95% 的时间当你觉得你需要他们时,这意味着你做错了什么。

我对你直截了当:将你的关系数据转储到 couchdb 最终将成为写入和读取的噩梦。首先你会说:我怎样才能进行交易?对于后来者:我该如何加入?两者都是不可能的,并且是甚至不存在的概念。

很多人得出的方便结论是“CouchDb 还没有为企业做好准备或 ACID 不够”。但事实是你需要花时间重新考虑你的数据结构。

您需要重新考虑您的数据结构并使它们面向文档,因为如果您不这样做,您就偏离了 couchdb 的预期用途——而且您知道这是一个有风险的领域。

阅读 DDD 和聚合设计,并将您的记录转换为 DDD 实体和聚合。所以CouchDb 会有一个ETL 层。如果您没有时间这样做,我建议您不要使用 CouchDb——尽管我很喜欢它。

关于hadoop - 如何在 CouchDB 中实现分布式事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37387890/

相关文章:

couchdb - 将数据从 RDBMS 传输到 Couchbase 文档时.. 我应该如何设计我的文档?

transactions - 为什么两阶段提交被认为是原子的?

hadoop - Apache Apex 是否依赖 HDFS 还是有自己的文件系统?

CouchDB 中的树

couchdb - CouchDB入门

java - 为非基本类型(类)定义包装器

.net检测分布式事务

language-agnostic - Map Reduce 框架/基础设施

java - Hadoop:对文件进行分组以进行映射

hadoop - 增加映射器的大小