00. citusdb 简介
环境的文档
测试的文档
进行压测,把数据库搞崩
什么是 Citus
Citus 数据库是 Postgres 的一个开源扩展,可以让你在任何规模上都感受到 Postgres 的伟大ーー从一个节点到一个庞大的分布式数据库集群。由于 Citus 是 Postgres 的一个扩展(而非分支) ,因此当您使用 Citus 时,也在使用 Postgres。您可以利用最新的 Postgres 特性、工具和生态系统。
使用 Citus,您可以获得分布式 Postgres 功能,比如分片、分布式表、引用表、分布式查询引擎、柱状存储—到 Citus 11.0 为止,您可以从任何节点进行查询。Citus 将并行性、在内存中保存更多数据以及更高的 I/O 带宽结合在一起,可以显著提高多租户 SaaS 应用程序、面向客户的实时分析仪表板以及时间序列工作负载的性能。
获得 Citus 的两种方法:
- 开源: Citus 是 100% 开源的。您可以下载 Citus 开放源码,或者访问 GitHub 上的 Citus repo 来查看源代码并自己构建它。(分为社区版和商业版)
- 托管服务: Citus 数据库可以作为云中的托管服务使用,Azure Cosmos DB 用于 PostgreSQL,以前在 Azure 数据库中称为 Hyperscale (Citus)用于 PostgreSQL。
Citus 给你任何规模的后座力
您可以在单个节点上开始使用 Citus,从一开始就使用分布式数据模型,这样您就可以“向外扩展了”。当 Postgres 工作负载需要扩展时,可以很容易地向 Citus 数据库集群添加工作节点,并且/或者扩展集群中的协调器和工作节点。
何时使用 Citus
多租户 SaaS 数据库
大多数 B2B 应用程序已经在其数据模型中内置了 tenant(租户)、customer(客户)或 account (帐户)的概念。在这个模型中,数据库为许多租户提供服务,每个租户的数据都与其他租户分离。
Citus 为这个工作负载提供了完整的 SQL 覆盖范围,并支持将关系数据库扩展到 10 万以上的租户。Citus 还为多租户添加了新特性。例如,Citus 支持租户隔离,以便为大型租户提供性能保证,并且引用表(reference tables)的概念可以减少租户之间的数据重复。
这些功能允许您在许多机器上扩展租户的数据,并轻松地添加更多的 CPU、内存和磁盘资源。此外,在多个租户之间共享相同的数据库模式可以有效地利用硬件资源并简化数据库管理。
Citus 对于多租户应用程序的一些优点:
- 所有租户的快速查询
- 在数据库中分割逻辑,而不是应用程序
- 在单节点 PostgreSQL 中保存尽可能多的数据
- 在不放弃 SQL 的情况下向外扩展
- 在高并发性下维护性能
- 跨客户群的快速度量分析
- 易于规模处理新客户注册
- 隔离大、小客户的资源使用
实时分析
Citus 支持对大型数据集的实时查询。这些查询通常发生在快速增长的事件系统或具有时间序列数据的系统中。示例用例包括:
- 亚秒级响应时间的分析仪表板
- 关于展开事件的探索性查询
- 大型数据集归档和报告
- 使用漏斗、分段和队列查询分析会话
Citus 的好处在于它能够并行执行查询,并且能够根据集群中工作者数据库的数量进行线性扩展。Citus 在实时应用方面的一些优势:
- 随着数据集的增长,维护亚秒级响应
- 实时分析发生的新事件和新数据
- 并行化 SQL 查询
- 在不放弃 SQL 的情况下向外扩展
- 在高并发性下维护性能
- 指示板查询的快速响应
- 使用一个数据库,而不是一个补丁
- 富 PostgreSQL 数据类型和扩展
使用注意事项
Citus 通过分布式功能扩展了 PostgreSQL,但它并不是一个可以扩展所有工作负载的插件替代品。一个性能良好的 Citus 集群需要考虑所使用的数据模型、工具和 SQL 特性的选择。
考虑工具和 SQL 特性的一个好方法是: 如果您的工作负载与这里描述的用例一致,并且碰巧遇到不支持的工具或查询,那么通常会有一个很好的解决方案。
Citus 不适合使用的地方
一些工作负载不需要强大的分布式数据库,而另一些工作负载则需要工作节点之间的大量信息流。在第一种情况下,Citus 是不必要的,而在第二种情况下,它通常不会表现出来。下面是一些例子:
- 当您不希望工作负载超过单个 Postgres 节点时
- 脱机分析,不需要实时摄取或实时查询
- 不需要支持大量并发用户的分析应用程序
- 返回数据量大的 ETL 结果的查询,而不是摘要
参考
Citus Data | Distributed Postgres. At any scale.
https://www.citusdata.com/
citusdata/citus: Distributed PostgreSQL as an extension
https://github.com/citusdata/citus