前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CitusDB调研分享

CitusDB调研分享

作者头像
后场技术
发布2020-09-03 15:22:50
6560
发布2020-09-03 15:22:50
举报
文章被收录于专栏:后场技术后场技术
CitusDB是什么

CitusDB 是基于 PostgreSQL 扩展(类似 PHP 扩展)实现的 PostgreSQL 集群。

CitusDB特点:

  • 易维护
  • 高可用
  • 有限的纵向扩展
  • 并行分布式查询
CitusDB的架构

CitusDB 与 HDFS 的分布式非常相似,在 Master 上存储元数据,Work 节点存储分片,同时 1 个分片至少要存储在 2 个 Work 节点(可配置更多)上保障其可用性。

Master:

  • 协调集群(分片、复制)
  • 分发查询
  • 只存储元数据

Work:

  • 存储分片

用户对 Master 发起查询,Master 根据元数据下发查询至 Work 节点,最后查询汇总到 Master 节点,合并结果返回给用户。

CitusDB简单实用
  • 编译 citus.so 模块至 PostgreSQL 的 lib 目录
  • 在 PostgreSQL 的配置文件中添加 shared_preload_libraries = 'citus'
  • 在所有节点上执行 psql -c "CREATE EXTENSION citus;"
  • 在 Master 节点执行 psql -c "SELECT * from master_add_node(work-1', 9700);" 添加 Work 节点

至此集群搭建完成, 你可以执行 psql -c "select * from master_get_active_worker_nodes();" 来查看现有的 Work 节点。

CitusDB的高可用

Master: 可通过 PostgreSQL 自身的主从机制实现高可用,元数据并不大,效率上没有太大问题。

Work: 在查询时 Work 节点如有失败, Master 节点会把失败的查询重新下发至其它存在该分片的节点。如 Work 节点永久损坏可以人工均衡,让其保持设置的复制数。

CitusDB的限制
  1. 虽然官方一直宣称 Master 需要的资源很少,但集群达到一定数量级后 Master 是最终性能瓶颈。
  2. 有些疑惑官方文档的分布式表,不清楚是不是需要研发特别适配
  3. 不支持
  • Window Functions
  • CTEs
  • Set operations
  • Transactional semantics for queries that span across multiple shards (跨分片事务?)

最后一些参考:

集群部署: https://docs.citusdata.com/en/v6.1/installation/production_rhel.html

集群管理: https://docs.citusdata.com/en/v6.1/admin_guide/cluster_management.html

分布式表: https://docs.citusdata.com/en/v6.1/dist_tables/ddl.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后场技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CitusDB是什么
  • CitusDB的架构
  • CitusDB简单实用
  • CitusDB的高可用
  • CitusDB的限制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档