如何针对以下用例实现部分数据的复制

时间:2019-01-13 06:19:58

标签: mongodb cassandra nosql couchbase

我想构建一个具有以下数据复制要求的系统。 在所附图片中:

  1. 节点1具有2个实体Entity 1和Entity 2。
  2. 每个实体都有多行数据,例如(Row1,Row2,Row3)
  3. 节点2和节点3是节点1的完整副本,并且可能在同一数据中心内。
  4. 节点4完全位于不同的位置,并且只有Entity1和Entity2的第1行。
  5. 节点5位于另一个位置,并且只有实体1和实体2中的第2行。

想法是Node4和Node5将位于使用者系统的地理位置附近,如果网络中断,使用者可以与Node 4和Node5中的本地副本进行通信。

在正常工作日-将所有写入限制在Node1并允许Node 4或Node 5仅在Node 1发生故障时进行写入是可以接受的。

我不确定如果没有通过代码进行大量管理,哪个数据库可以支持此操作。

Data Model Replication

到目前为止,我已经找到了:

  1. Cassandra可以进行基于键空间的复制,但是由于我有2000多个远程位置来存储部分数据,所以这可能很棘手。我可以考虑不得不说200个键空间,其中10个位置共享相同的键空间,这样就可以减少开销,即使复制到本地节点的数据对他们而言并不总是有用的。
  2. Mongodb对此功能(https://jira.mongodb.org/browse/SERVER-1559)提出了公开要求
  3. Couchbase具有基于XDCR的过滤,这看起来是一个潜在的解决方案。

请问我的理解是否正确?

1 个答案:

答案 0 :(得分:1)

是的,Couchbase XDCR是可行的解决方案。你可以 1.将节点1,节点4和节点5设置为三个单独的数据集群 2.使用仅与行1匹配的过滤表达式设置从节点1到节点4的单向XDCR 3.使用仅与第2行匹配的过滤表达式设置从节点1到节点5的单向XDCR。

有关更多信息,请参阅https://docs.couchbase.com/server/6.0/learn/clusters-and-availability/xdcr-overview.html。 XDCR过滤位于:https://docs.couchbase.com/server/6.0/learn/clusters-and-availability/xdcr-filtering.html