盘区(数据分片)

表分区为盘区或数据分片。 每个盘区都是表的一个水平段,其中包含数据和元数据(例如其创建时间和可选标记)。 所有这些盘区的并集包含表的整个数据集。 盘区均匀分布在群集中的节点之间,它们缓存在本地 SSD 和内存中以优化性能。

盘区是不可变的,这意味着可以查询它们,可将它们重新分配到其他节点,或者可从表中删除它们但永不修改它们。 创建新盘区,并将旧盘区与新盘区进行事务交换时,会发生数据修改。 盘区的不可变性提供了一些好处,例如提高稳定性以及可轻松恢复到以前的快照。

盘区保存物理上按列排列的记录集合,支持对数据进行有效的编码和压缩。 为了保持查询效率,会根据配置的合并策略分片策略将较小的盘区合并成更大的盘区。 合并盘区可降低管理开销,并优化索引和改进压缩。

常见的盘区生命周期如下所示:

  1. 盘区由“引入”操作创建。
  2. 盘区与其他盘区合并。
  3. 由于保留策略的原因,合并的盘区(该盘区的世系可能追溯到其他盘区)最终会被删除。

盘区创建时间

每个盘区跟踪两个日期/时间值:MinCreatedOnMaxCreatedOn。 这些值最初相同,但在盘区与其他盘区合并时可能会更改。 如果该盘区与其他盘区合并,则新值将与合并盘区的原始最小值和最大值保持一致。

盘区创建时间用于以下目的:

  • 保留:越早创建的盘区越早被删除。
  • 缓存:最近创建的盘区保存在热缓存中。
  • 采样:使用查询操作(例如 take)时,首选最近的盘区。

要覆盖盘区的创建时间,请在数据引入属性中提供备用的 creationTime。 这对于保留目的非常有用,例如,如果你想要重新引入数据,但不希望数据显示为好像延迟抵达。

注意

基于时间移除盘区的计算使用已合并的盘区内最新盘区的创建时间。