各位新朋友~记得先点蓝字关注我哦~
如果想要处理高并发以及大数据量的任务,那么单台服务器已远不能解决这个问题,随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩大,以分布式为主要特征的数据库系统的研究与开发受到人们的注意。分布式数据库是数据库技术与网络技术相结合的产物,在数据库领域已形成一个分支。
PostgreSQL虽然作为关系型数据库的代表,但它也能够支持分布式功能,除了GreenPLum这一类基于PostgreSQL二次开发的分布式数据库,PostgreSQL本身也可以通过扩展来实现分布式的特性。
关于CitusData公司
有一家 PostgreSQL 数据库商业软件提供商,名为CitusData,其成立于2011年,这家公司并没有从源头开始设计一个能够处理更大规模和负载的数据库,而是选择了相对于比较成熟的关系型数据库进行扩展,以实现在原有的基础上提高数据的水平扩展。最终是选择了开放度高和可扩展性强的PostgreSQL上作文章,Citus便应运而生。
2019年,微软对外宣布收购了CitusData,无疑是对开源数据库的一种认同和肯定,也是提前对分布式数据的未来做好布局。
Citus介绍
Citus 是一种 PostgreSQL 扩展,它允许数据库服务器(称为节点)在“无共享”架构中相互协调。 这些节点形成一个集群,允许 PostgreSQL 保存更多数据并使用比单台计算机更多的 CPU 内核。这种架构还允许通过简单地向集群添加更多节点来扩展数据库。
Citus 数据库集群包含一个 Citus 协调器节点和多个工作节点。每个节点都包含称为分片的小型 Postgres 表。

对于每个查询,协调器要么将其路由到单个工作节点,要么将其并行化到多个节点,具体取决于所需数据是位于单个节点上还是多个节点上。协调器通过查阅其元数据表知道如何做到这一点。这些特定于 Citus 的表跟踪 DNS 名称和工作节点的健康状况,以及跨节点的数据分布。可以这么说,Coordinator是个包工头,Workers才是使力气的搬砖人。
分布式数据
Citus 集群中有三种类型的表,包括Distributed Tables(分布式表)、Reference Tables(参考表)以及Local Tables(本地表),每种类型用于不同的目的,我们主要来描述一下分布式表的相关内容。
分布式表是最常见的类型,一般建议把大于10G的业务表创建为分布式表,它们在Workers工作节点之间水平分区。

从图中我们可以看到,分布式表的按照设置好的分布式列,将数据打散到各个Worker上,在Coordinator上负责维护元数据,Workers上承担数据的实际存储。以实现了分布式最主要的功能特性。
综合而言,Citus非常适合做单表查询,并且单表的数据量越大,其优势就越明显,当然地,对于实时场景分析也有不俗的表现。但对于Work节点之间需要大量的数据进行交互的场景,并不能发挥Citus的功能特性,它只适合节点之间IO比较小的场景。
本期介绍就到此为止,下一期我们来讲讲Citus的具体使用方法,敬请关注后续动态!
美创运维中心数据库服务团队拥有Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师 ,著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。目前运维各类数据库合计2000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、达梦等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。







