什么是处理两个或更多noSQL数据库上的事务的方法?

时间:2017-11-07 07:26:11

标签: java spring elasticsearch cassandra nosql

我们有以下要求:

  1. 我们在Cassandra中存储数据,然后我们将在弹性搜索中索引相同的数据(或部分数据)。
  2. 问题是如果在插入弹性搜索时出现问题,插入Cassandra的数据应该回滚。
  3. 基本上,我们希望在多个NoSQL数据库上进行事务处理。有没有办法在Java(Spring)中做到这一点?

1 个答案:

答案 0 :(得分:1)

没有标准的方法在多个NoSQL数据库之间进行事务,也没有Spring支持它。

我想到了两种方法:

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

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