citus调研(二)- 架构和功能

2022-05-07 00:00:00 数据 分布式 节点 分片 副本

架构
架构图


master: 主节点,一般称作协调器,存储数据分布相关的元数据信息

worker: 存储分片表的分片数据。可以为分片表的每一个分片创建多个副本

客户端访问数据时只和master节点交互。master收到请求后,会生成分布式执行计划,并将各个子任务下发到相应的worker节点执行,之后由master收集各worker的结果并处理后返回终结果给客户端。

功能
PostgreSQL兼容性
citus是基于PostgreSQL扩展实现的分布式数据库,基本兼容其SQL处理能力、管理工具等。

分布式事务
citus从7.1版本开始支持分布式事务,使用2pc保证数据的终一致性。

使用copy命令导入数据时,可以通过配置修改其提交协议(2pc或1pc),默认2pc。

表类型
分片表
主要解决的是大表的水平扩容问题,分片表的分片元数据信息存储在master节点,其数据被打散存储到多个worker节点。

参考表
数据量不是特别大又经常需要和分片表Join的维表可以采用一种特殊的分片策略,只分1个片且每个Worker上部署1个副本,这样的表叫做“参考表”。

本地表
没有经过分片的PostgreSQL原生的表

数据分片方式
append: 追加分片,将分片列值连续的数据写到同一个分片,比如时序数据,将每个连续的时间段的数据写到同一个分片。

hash: hash分片,对分片列的值进行hash, 写入对应的分片。

限制
主键:分片表的主键必须是hash分片的分片列

insert into ...select from...:分片表必须亲和(分片数,副本数,分片字段,分片位置完全相同)且是hash分片

join: 只支持 亲和分片表之间的join 、分片表与参考报之间的join

不支持:

相关子查询
递归CTE
表样本
SELECT ... FOR UPDATE
分组集
PARTITION BY中不包括分发列的窗口函数
更多限制可参考:https://groups.google.com/forum/#!topic/citus-users/eQAeFAOxaW0

性能
官方测试数据
插入性能:


更新性能:




第三方测试数据:
citus性能:https://yq.aliyun.com/articles/641516?spm=a2c4e.11153940.blogcont647370.15.33576b30USEXUt

citus/PG性能测试对比:https://blog.csdn.net/fm0517/article/details/79398959


————————————————
版权声明:本文为CSDN博主「Siven_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/suzy1030/article/details/83616548

相关文章