我是 crate 数据库的新手,并试图了解分片、分区和节点之间的关系。
- 一个分片对应多少个分区?
- 我可以配置发送特定分区的数据成为特定分片的一部分吗?
- 我可以配置将特定分片发送到特定节点吗?
- 我可以在 crate 集群中将分片从一个节点移动到另一个节点,因为它可以在弹性搜索中完成吗?
- 每个分片可以有不同数量的副本吗?
用例是将最新数据保留在我性能最好的几个节点上,并保留更多副本,并将旧数据保留在具有 0 或只有 1 个副本的不太好的硬件上。
我是 crate 数据库的新手,并试图了解分片、分区和节点之间的关系。
用例是将最新数据保留在我性能最好的几个节点上,并保留更多副本,并将旧数据保留在具有 0 或只有 1 个副本的不太好的硬件上。
分片是 Crate 拥有的最小的“数据单元”,一个表应该有适当的数量(我知道,这不是一门精确的科学)以在集群中均匀分布数据(以及工作量),因为这是在那些碎片。目前无法直接控制特定分片的放置(在哪个节点上)和复制。
一个分片对应多少个分区?
实际上是相反的:一个分区有几个分片,因为一个分区被视为一个“子表”,其中包含一个数据子集。分区是从原始 CREATE TABLE 语句(用作模板)创建的,因此甚至可以具有与其他分区不同的分片数。
我可以配置发送特定分区的数据成为特定分片的一部分吗?
好吧,不 - 不是明确的。分片管理由魔术算法在后台处理 :) 控制行所在的分区就像更新分区列的值一样简单。
我可以配置将特定分片发送到特定节点吗?
不。配置中有一些旋钮可以控制节点上的分片数:https ://crate.io/docs/reference/configuration.html#allocation但除非您确切知道是什么,否则不建议更改这些设置你在做;)
我可以在 crate 集群中将分片从一个节点移动到另一个节点,因为它可以在弹性搜索中完成吗?
不,不明确。
每个分片可以有不同数量的副本吗?
不,副本是按表设置的,整个表都会受到影响。
用例是将最新数据保留在我性能最好的几个节点上,并保留更多副本,并将旧数据保留在具有 0 或只有 1 个副本的不太好的硬件上。
对于这个用例,我建议使用第二个表(尽管您无法控制数据存储在哪台机器上),或者 - 如果您不需要查询数据 - 使用旧机器来存储快照:https: //crate.io/a/backing-up-and-restoreing-crate/并在需要时恢复它。
干杯,克劳斯