Citus 简介,将 Postgres 转换为分布式数据库

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: Citus 简介,将 Postgres 转换为分布式数据库

什么是 Citus?



CitusPostgres 的开源扩展,它在集群中的多个节点上分布数据和查询。因为 CitusPostgres 的扩展(不是 fork),所以当您使用 Citus 时,您也在使用 Postgres。您可以利用最新的 Postgres 功能、工具和生态系统。

CitusPostgres 转换为具有分片、分布式 SQL 引擎、引用表和分布式表等功能的分布式数据库。 Citus 将并行性、在内存中保留更多数据和更高的 I/O 带宽相结合,可以显着提高多租户 SaaS 应用程序、面向客户的实时分析仪表板和时间序列工作负载的性能。


获得 Citus 的三种方法:


  1. 开源:您可以下载 Citus 开源代码,或访问 GitHub 上的 Citus 存储库。
  1. 企业软件:Citus Enterprise 可作为软件订阅以及 24x7 支持,供那些想要手动管理 Citus 的人使用。
  2. 托管数据库服务:CitusAzure 上以 Hyperscale (Citus) 的形式提供,这是 Azure Database for PostgreSQL 托管服务中的内置部署选项。


Citus 可以扩展多远?


Citus 通过添加工作节点进行水平扩展,并通过升级 workers/coordinator 进行垂直扩展。在实践中,我们的客户已经达到了以下规模,还有更大的增长空间:


  • Algolia
  • 每天摄取 5-10B
  • Heap
  • 700+ 亿次事件
  • 70 节点 Citus 数据库集群上的 1.4PB 数据
  • Chartbeat
  • 每月添加 >2.6B 行数据
  • Pex
  • 每天更新 80B
  • 20 节点 Citus 数据库集群是 Google Cloud
  • 2.4TB 内存、1280 核、80TB 数据
  • …计划增长到 45 个节点
  • Mixrank
  • 1.6PB 的时间序列数据


何时使用 Citus



多租户数据库


大多数 B2B 应用程序已经在其数据模型中内置了租户、客户或帐户的概念。在此模型中,数据库为许多租户提供服务,每个租户的数据都与其他租户分开。

Citus 为该工作负载提供了完整的 SQL 覆盖,并支持将您的关系数据库扩展到 100K+ 租户。 Citus 还为多租户添加了新功能。例如,Citus 支持租户隔离,为大租户提供性能保证,并具有引用表的概念,以减少跨租户的数据重复。

这些功能允许您在多台机器上扩展租户数据,并轻松添加更多 CPU、内存和磁盘资源。此外,在多个租户之间共享相同的数据库模式可以有效地利用硬件资源并简化数据库管理。


Citus 对于多租户应用程序的一些优势:


  • 快速查询所有租户
  • 数据库中的分片逻辑,而不是应用程序
  • 在单节点 PostgreSQL 中保存的数据比可能的多
  • 保持高并发下的性能
  • 跨客户群的快速指标分析
  • 轻松扩展以处理新客户注册
  • 隔离大小客户的资源使用情况


实时分析


Citus 支持对大型数据集的实时查询。通常,这些查询发生在快速增长的事件系统或具有时间序列数据的系统中。示例用例包括:


  • 具有亚秒级响应时间的分析仪表板
  • 关于正在展开的事件的探索性查询
  • 大型数据集归档和报告
  • 使用漏斗、细分和同类群组查询分析会话

Citus 的优势在于它能够并行化查询执行并随集群中工作数据库的数量线性扩

展。 Citus 在实时应用方面的一些优势:


  • 随着数据集的增长保持亚秒级响应
  • 实时分析发生的新事件和新数据
  • 并行化 SQL 查询
  • 横向扩展而不放弃 SQL
  • 保持高并发下的性能
  • 快速响应仪表板查询
  • 使用一个数据库,而不是拼凑
  • 丰富的 PostgreSQL 数据类型和扩展


使用注意事项


Citus 扩展了 PostgreSQL 的分布式功能,但它不是扩展所有工作负载的直接替代品。高性能 Citus 集群需要考虑数据模型、工具和所使用的 SQL 功能的选择。


以下是考虑工具和 SQL 功能的一个好方法:如果您的工作负载与此处描述的用例一致,并且您碰巧遇到了不受支持的工具或查询,那么通常有一个很好的解决方法。


当 Citus 不合适时


一些工作负载不需要强大的分布式数据库,而另一些工作负载则需要工作节点之间的大量信息流。在第一种情况下,Citus 是不必要的,而在第二种情况下,通常性能不佳。这里有些例子:


  • 当单节点 Postgres 可以支持您的应用程序并且您不希望增长时
  • 离线分析,无需实时摄取或实时查询
  • 不需要支持大量并发用户的分析应用程序
  • 返回大量数据的 ETL 结果而不是摘要的查
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
28天前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
3月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
309 0
|
9天前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
39 15
|
9天前
|
存储 关系型数据库 数据库
Postgres数据库BRIN索引介绍
BRIN索引是PostgreSQL提供的一种高效、轻量级的索引类型,特别适用于大规模、顺序数据的范围查询。通过存储数据块的摘要信息,BRIN索引在降低存储和维护成本的同时,提供了良好的查询性能。然而,其适用场景有限,不适合随机数据分布或频繁更新的场景。在选择索引类型时,需根据数据特性和查询需求进行权衡。希望本文对你理解和使用PostgreSQL的BRIN索引有所帮助。
16 0
|
1月前
|
SQL 关系型数据库 分布式数据库
Citus 简介,将 Postgres 转换为分布式数据库
【10月更文挑战第4天】Citus 简介,将 Postgres 转换为分布式数据库
83 4
|
1月前
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
60 4
|
1月前
|
存储 关系型数据库 数据库
轻量级数据库的利器:Python 及其内置 SQLite 简介
轻量级数据库的利器:Python 及其内置 SQLite 简介
|
1月前
|
存储 关系型数据库 数据库
数据库启用慢速查询日志如何增强 Postgres 可观测性
数据库启用慢速查询日志如何增强 Postgres 可观测性
32 1
|
30天前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
41 0