Crate 数据库 - 分片与分区和节点之间的关系

Crate database - relation between shards and partitions and nodes

我是 crate 数据库的新手,正在尝试了解分片、分区和节点之间的关系。

  1. 一个分片对应多少个分区?
  2. 我可以将特定分区的数据配置为发送到特定分片的一部分吗?
  3. 我可以配置为将特定分片发送到特定节点吗?
  4. 我可以像在 elasticsearch 中那样在 crate 集群中将分片从一个节点移动到另一个节点吗?
  5. 每个分片可以有不同数量的副本吗?

Usecase 是将最新数据保存在我的几个具有更多副本的性能最佳的节点上,将较旧的数据保存在具有 0 个或仅 1 个副本的不太好的硬件上。

分片是最小的 "unit of data" Crate,table 应该有适当的数量(我知道这不是一门精确的科学)来均匀分布数据(以及工作量)集群,因为这是在这些分片中完成的。目前无法直接控制特定分片的放置(在哪个节点上)和复制。

How many partitions corresponds to one shard?

实际上恰恰相反:一个分区有几个分片,因为一个分区被视为 "sub-table",其中包含一个数据子集。分区是根据原始 CREATE TABLE 语句创建的(它用作模板),因此甚至可以具有与其他分区不同的分片计数。

Can I configure to send data of a particular partition to be part of particular shard?

嗯,不 - 不明确。分片管理由魔术算法在后台处理 :) 控制一行所在的分区就像更新分区列的值一样简单。

Can I configure to send a particular shard to particular node ?

没有。一般情况下,配置中有旋钮可以控制节点上的分片数量:https://crate.io/docs/reference/configuration.html#allocation 但不建议更改这些设置,除非您确切地知道自己在做什么 ;)

Can I move a shard from one node to another in crate cluster as it can be done in elasticsearch?

不,没有明确说明。

Can I have different number of replicas per shard ?

不,副本是每个 table 的设置,整个 table 都会受到影响。

Usecase is to keep the latest data on few of my best performing nodes with more replicas and older data on not so good hardware with 0 or just 1 replica.

对于这个用例,我建议使用第二个 table(尽管您无法控制数据存储在哪台机器上),或者 - 如果您不需要查询数据 - 使用您的用于存储快照的旧机器:https://crate.io/a/backing-up-and-restoring-crate/ 并在需要时恢复它。

干杯,克劳斯