什么是数据拓扑?

什么是数据拓扑?

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

Neki的数据拓扑采用JSON配置,定义PostgreSQL分片方案,包括分片索引(哈希、模、范围策略)、分片组(物理分片及键范围)和数据库绑定。该配置指导路由器将查询映射到正确分片,支持灵活数据放置,并可在重分片时动态更新,使多服务器如同单一数据库。

🔎

延伸解读

数据拓扑的三大核心组件

数据拓扑由分片索引、分片组和数据库绑定三部分构成。分片索引决定如何将行映射到路由键,支持哈希、模和范围三种策略;分片组将路由键范围分配给物理分片,并支持相关表共置以优化连接和事务;数据库绑定则遵循PostgreSQL的数据库、模式、表层级,允许表直接或继承默认分片组。理解这三者的协作是掌握Neki路由机制的关键。

路由键的生成与分片选择

路由键的生成方式直接影响数据分布。哈希策略(如xxhash)将任意值均匀映射到路由空间,适合高基数键;模策略按取模结果分配,简单但可能产生数据倾斜;范围策略直接使用整数值,便于按范围查询。示例中,customer_id 42经不同策略得到不同路由键,落入不同分片,说明选择策略需考虑数据特征和查询模式。

灵活的数据放置与动态更新

数据拓扑是实时配置,可在重分片、表移动或导入时动态更新,且不影响应用服务。这种灵活性允许工程师根据性能需求调整逻辑表到物理分片的映射,而无需应用感知底层变化。但需注意,拓扑本身不管理物理分片,分片需单独配置,并通过稳定ID引用,这要求运维人员协调拓扑与分片生命周期。

Q&A

什么是数据拓扑?

数据拓扑是Neki中用于描述PostgreSQL分片方案的JSON配置,它定义了分片索引、分片组和数据库绑定,从而指导路由器将查询映射到正确的分片。

数据拓扑由哪些部分组成?

数据拓扑由三个构建块组成:分片索引(指定分片键和路由键的生成方式)、分片组(定义物理分片及键范围)和数据库绑定(将表绑定到分片组)。

Neki支持哪些分片索引策略?

Neki支持三种分片索引策略:哈希(使用xxhash)、模(对整数取模)和范围(直接使用整数值)。

数据拓扑如何帮助路由查询?

数据拓扑通过定义分片索引和分片组,将逻辑表映射到物理分片。路由器根据查询中的分片键值,通过分片索引计算路由键,然后根据路由键在分片组中找到对应的物理分片,从而将查询路由到正确的分片。

数据拓扑中的分片组是什么?

分片组定义了一组物理分片,并为每个分片分配一个路由键范围。它还指定了组内表的默认分片索引。相关表如果使用相同的分片键,可以放在同一个分片组中,以便本地执行连接和事务。

数据拓扑中的数据库绑定是如何工作的?

数据库绑定遵循PostgreSQL的数据库、模式、表层次结构,将表绑定到分片组。表可以直接指定分片组,也可以从模式、数据库或集群继承默认分片组。未列出的表会继承默认分片组,从而简化配置。

数据拓扑是否负责管理物理分片?

不,数据拓扑不负责配置或管理物理分片。物理分片是单独配置的,数据拓扑通过稳定的ID引用它们。在Neki中,一个分片由一个PostgreSQL主节点及其副本组成。

数据拓扑在重分片时如何更新?

数据拓扑是一个动态配置,在重分片、表移动和导入过程中会进行更新,同时应用程序可以继续提供服务。这使得Neki能够在不中断服务的情况下调整数据分布。

🏷️

标签

➡️

继续阅读