我们正在将我们的数据库从 oracle 迁移到 couchDB,因为其中一个用例是实现分布式事务管理。
例如:从 JMS 队列中读取数据并将其更新到多个文档中,如果任何事情失败,则恢复并向 JMS 队列抛出异常。
正如我们所知,couchDB 不支持分布式事务管理。
您能否建议任何替代策略来实现此或任何其他出路?
最佳答案
除了技术方面,我觉得你可能对它的底线感兴趣。
如前所述,分布式事务是不可能的——这个概念甚至不存在,因为它没有必要。事实上,与关系世界不同的是,95% 的时间当你觉得你需要他们时,这意味着你做错了什么。
我对你直截了当:将你的关系数据转储到 couchdb 最终将成为写入和读取的噩梦。首先你会说:我怎样才能进行交易?对于后来者:我该如何加入?两者都是不可能的,并且是甚至不存在的概念。
很多人得出的方便结论是“CouchDb 还没有为企业做好准备或 ACID 不够”。但事实是你需要花时间重新考虑你的数据结构。
您需要重新考虑您的数据结构并使它们面向文档,因为如果您不这样做,您就偏离了 couchdb 的预期用途——而且您知道这是一个有风险的领域。
阅读 DDD 和聚合设计,并将您的记录转换为 DDD 实体和聚合。所以CouchDb 会有一个ETL 层。如果您没有时间这样做,我建议您不要使用 CouchDb——尽管我很喜欢它。
关于hadoop - 如何在 CouchDB 中实现分布式事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37387890/