使用投影的高可用性

为确保由三个或更多节点构成的数据库群集的高可用性和恢复能力,Vertica 会:

  • 复制未分段的小型投影

  • 为已分段的大型投影创建伙伴实例投影。

复制(未分段的投影)

创建投影时,Database Designer 会复制它们,从而在数据库中的所有节点上创建和存储这些投影的副本。

复制可确保:

  • 将查询执行工作分散到多个节点上。

  • 实现高可用性和恢复能力。在 K-safe 数据库中,复制的投影用作伙伴实例投影。这意味着,您可以使用任何节点上复制的投影进行恢复。

下图显示了在三节点群集上复制的两个投影 B 和 C。

伙伴实例投影(分段投影)

Vertica 会创建伙伴实例投影,这些投影是分布在数据库节点上的分段投影的副本(请参阅分段投影)。Vertica 会将包含相同数据的段分布到不同的节点上。这可确保在某个节点下线时,其中的所有数据都能在余下的节点中找到。Vertica 通过使用偏移量将各个段分布到不同的节点上。例如,构成第一个伙伴实例投影 (A_BP1) 的段会与投影 A 偏移一个节点,而第二个伙伴实例投影 (A_BP2) 的段会与投影 A 偏移两个节点。

下图显示了三节点群集中名为 A 的投影及其伙伴实例投影 A_BP1 和 A_BP2 的分段。

下图显示了 Vertica 如何使用偏移量来确保每个节点都有一组完整的投影数据。

结果集的存储方式

Vertica 会在群集中的所有节点上复制表列,以确保高可用性和恢复能力。因此,如果一个节点在 K-Safe 环境中出现故障,数据库会使用其余节点上的重复数据继续运行。一旦故障节点恢复正常,它便会自动查询其他节点,从而恢复缺失的对象和数据。

Vertica 会对数据进行压缩和编码,以大大减少存储空间。它也会尽可能使用编码数据执行操作,以避免解码开销。这种结合了压缩和编码的方法可在优化磁盘空间的同时最大限度地提高查询性能。

Vertica 将表列存储为投影。借此,您可以针对特定的查询和查询集来优化存储的数据。Vertica 提供了两种数据存储方法:

  • 建议对大型表(事实表和大型维度表)进行投影分段

  • 对其余表建议复制。