【问题标题】:What is a way to handle transactions over two or more noSQL databases?什么是处理两个或多个 noSQL 数据库上的事务的方法?
【发布时间】:2018-04-19 12:20:24
【问题描述】:

我们有以下要求:

  1. 我们将数据存储在 Cassandra 中,然后我们将在弹性搜索中索引相同的数据(或部分数据)。
  2. 问题是,如果在弹性搜索中插入时出现问题,则应回滚在 Cassandra 中插入的数据。

基本上,我们希望在多个 NoSQL 数据库上进行事务。有没有办法在 Java (Spring) 中做到这一点?

【问题讨论】:

  • 不是开箱即用的,没有。根据您的实际要求,您可以采用不同的方式(以及不同的工作量、聘请的顾问和金钱)来处理这个问题,但当然,与所有 2PC 解决方案一样,这将是尽力而为。

标签: java spring elasticsearch cassandra nosql


【解决方案1】:

没有跨多个 NoSQL 数据库执行事务的标准方法,Spring 也不支持。

我想到了两种方法:

  1. 您应该只使用一个数据库来实现它。 例如,在您的情况下,您可以使用 Cassandra 在节点、数据中心或所有数据中心级别进行事务。并在 Cassandra 事务成功后异步向 Elastic Search 发送数据

  2. 但如果必须这样做,我建议使用 Redis 获取全局分布式事务锁。请注意,这是非常昂贵的操作,您需要自己处理失败和回滚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多