暂无图片
Citus总结:简介及适用场景
最近更新:2022-03-11 14:21:05

1. Citus简介

Citus是PostgreSQL数据库的分布式中间件,用以解决PostgreSQL横向扩展问题,以支持更大的数据量、更大的写入和查询性能。

Citus由CitusData公司开发,目前已被微软收购,并在Azure上提供Citus Cloud服务。Citus为开源软件,经过约10年的发展,最近刚发布10.0版本,License为AGPL。

不像pg-xc的原生分布式方案,Citus是以Extension的方式扩展PostgreSQL能力,不侵入修改PostgreSQL内核代码,可以很容易和PostgreSQL的新版本配套适用,享受到内核版本演进带来的好处。

2. 适用场景

2.1 多租户场景

多租户场景下,绝大部分表都带有tenant_id属性,而且查询大都是指定tenant_id过滤条件的,是sharding friendly的Workload,因此绝大部分SQL都可以路由到指定单节点执行,能够很好的继承PostgreSQL的查询能力,并且有很好的性能扩展性。

多租户场景下,适用Citus能带来以下好处:

  • 高性能支持基于租户的查询,高并发下有很好的扩展性;
  • 由数据库处理数据分片,对业务透明;
  • 可以横向扩容支持更大的数据量;
  • 横向扩展并不会损失SQL支持能力;
  • 高性能支持基于租户的数据分析;
  • 很容易通过扩展来支持更多的租户;
  • 支持不同粒度租户的资源隔离;

下面是一个多租户场景的例子,广告分析场景:

表结构定义如下:

CREATE TABLE companies (
    id bigint NOT NULL,
    name text NOT NULL,
......