分区和分段
在 Vertica 中,分区和分段是不同的概念,可实现不同的数据本地化目标:
-
分段 是指跨群集节点组织和分发数据,以便实现快速数据清除和查询性能。分段的目的是使数据在多个数据库节点上均匀分布,以便所有节点均参与查询执行。可通过
CREATE PROJECTION
语句的哈希分段子句来指定分段。 -
分区 指定如何在各个节点内组织数据以进行分布式计算。通过节点分区,可以轻松地标识要删除的数据和帮助回收磁盘空间。可以通过
CREATE TABLE
语句的PARTITION BY
子句来指定分区。
例如:按年对数据进行分区对于保留和删除年度数据意义重大。然而,按年对相同数据分段则效率低下,因为与其他节点相比,包含本年数据的节点所要响应的查询可能要多得多。
下图显示了四节点数据库群集的分段和分区流:
-
示例表数据
-
按
HASH(order_id)
分段的数据 -
按哈希跨四个节点分段的数据
-
按年在单个节点上分区的数据
尽管分区发生在所有四个节点上,但为了简单起见,示意图仅显示一个节点上的分区数据。