citus调研(二)- 架构和功能
架构
架构图
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
相关文章