0

我是 riak 的新手,并试图发现它的潜力。目前我正在玩N,R,W设置以查看影响。我在这里想念的是检查哪些数据存储在哪个节点/分区上。

有没有办法问

  • 只有一个节点,它存储哪些数据?
  • 每个节点,谁存储我想要的特定数据?

因此,如果我可以获得像节点 2 和 3 这样的信息来存储我需要的数据,那么如果我在stop节点 2 和 3 中请求该数据将会失败。

4

1 回答 1

2

我不知道有任何标准方法可以准确找出特定记录存储在哪些节点上(但不排除存在一个)。然而,这通常不是人们需要关心的事情。

如果以有序的方式添加或删除节点,Riak 基于一致的散列以对用户透明的方式在物理节点上分布记录,并在集群中重新分配数据(以维护 n_val 副本)。

如果一个节点意外宕机,该节点上保存的数据的更改将在宕机期间被其他节点跟踪,并在它恢复时传递给该节点。

这意味着只要您根据对数据的一致性要求定义 N、R 和 W,即使添加或删除节点,Riak 也会努力保留这些。

通过这种方式,我相信 Riak 在某种程度上不同于依赖分片的数据库,因为那里的数据更多地与特定节点相关联,不一定会自动重新分配到其他节点/分片。

于 2012-11-14T13:13:04.237 回答