专栏首页后场技术CitusDB调研分享

CitusDB调研分享

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

本文分享自微信公众号 - 后场技术(opstalk),作者:诺克大叔

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Zookeeper节点工作流介绍

    在文章Zookeeper体系介绍中,我们讨论了ZooKeeper中的术语。在这篇Zookeeper文章中,我们将详细了解Zookeeper Workflow的完...

    后场技术
  • Zookeeper体系介绍

    今天,我们将开始迈向Apache ZooKeeper的新旅程。在这个ZooKeeper教程中,我们将看到Apache ZooKeeper的含义以及ZooKeep...

    后场技术
  • Elasticsearch UNASSIGNED索引分片问题分析

    线上突然有一台服务器宕机重启了,从而导致Elastisearch集群有些索引的分片出现UNASSIGNED的状态,情况如下:

    后场技术
  • Elasticsearch5.4.1 升级 7.3.2 之路(6) -- 集群配置的改变

    5.x的节点类型中有一个协调节点叫做client类型的,但是7.x都已经 变为默认的了

    MickyInvQ
  • 一天一大 leet(路径总和)难度:简单-Day20200707

    给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径, 这条路径上所有节点值相加等于目标和。

    前端小书童
  • 数据结构于JS也可以成为CP(九)Tree

    ,兔妞今天要继续为大家带来树啦,(小飘一下用个英文标题,哈哈)。树呢,是一种非线性的数据结构,由一组以边连接的节点组成,以分层的方式存储数据。树会被用在哪里呢?...

    萌兔IT
  • 372. 在O(1)时间复杂度删除链表节点复制节点的值

    给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。

    和蔼的zhxing
  • 数据结构基础温故-4.树与二叉树(下)

    上面两篇我们了解了树的基本概念以及二叉树的遍历算法,还对二叉查找树进行了模拟实现。数学表达式求值是程序设计语言编译中的一个基本问题,表达式求值是栈应用的一个典型...

    Edison Zhou
  • 从七桥问题开始:全面介绍图论及其应用

    选自Medium 作者:Vardan Grigoryan 机器之心编译 图论是计算机科学中最重要、最有趣的领域之一,同时也是最容易被误解的。本长文从图论最基础的...

    机器之心
  • 一致性算法 - Raft协议总述

    Raft协议起源于 2013 年 斯坦福 Diego Ongaro和John Ousterhout的论文《In Search of an Understanda...

    林淮川

扫码关注云+社区

领取腾讯云代金券