分片和订阅
在 Eon 模式下,Vertica 会将数据以公共方式存储在共享数据存储位置(例如,在 AWS 上运行时存储在 S3 中)。所有节点都能够访问公共存储位置中的所有数据。为了让节点划分处理查询的工作,Vertica 必须以某种方式在它们之间划分数据。它会将公共存储中的数据分成称为分片的段。数据库中的每个节点都订阅公共存储位置中的分片子集。公共存储位置中的分片类似于企业模式数据库中的分段投影集合。
当 K-Safety 为 1 或更高(高可用性)时,每个子群集中都有多个节点订阅每个分片。其中一个订户负责执行涉及分片的查询。其他订户充当备份。如果主订户关闭或停止,则另一个订户将取而代之。有关详细信息,请参阅Eon 模式数据库中的数据完整性和高可用性。
数据库中的每个分片都有一个主订户。此订户是 主节点,它通过计划分片上的 Tuple Mover 操作来维护分片中的数据。此节点可以将执行这些操作委派给数据库群集中的另一个节点。有关这些操作的详细信息,请参阅 Tuple mover。如果主订户节点停止或关闭,Vertica 会选择另一个订阅该分片的主节点作为该分片的主订户。如果订阅分片的所有主节点都关闭或停止,则数据库将进入只读模式以保持数据完整性。作为分片唯一订户的任何主节点都是 关键节点。
一种称为副本分片的特殊类型的分片存储未分段投影的元数据。副本分片存在于所有节点上。
您可以在创建数据库时定义分片的数量。为了获得最佳性能,您选择的分片数量不应大于 2× 节点数。您最多应该将分片与节点的比率限制为不大于 3:1。MC 警告您要考虑分片计数的各个方面。分片数应始终是数据库中节点数的倍数(或偶数除数)。有关详细信息,请参阅选择分片数和初始节点计数。
创建数据库后,可以使用 RESHARD_DATABASE 更改数据库中的分片数。有关详细信息,请参阅更改数据库中的分片数。
为了提高效率,Vertica 直接在数据库节点之间传输有关分片的元数据。这种点对点传输仅适用于元数据;存储在每个节点上的实际数据会根据需要从公共存储复制到节点的存储库。