乙巳🐍年

acc8226 的博客

节点-Nodes

Citus 是一个 PostgreSQL 扩展,它允许普通数据库服务器(称为节点)以“无共享”架构彼此协调。这些节点形成一个集群,使 PostgreSQL 能够比在单台计算机上容纳更多的数据并使用更多的 CPU 核。这种体系结构还允许数据库通过简单地向集群添加更多节点来扩展。

协调器 Coordinator 和工作器 Workers

每个集群都有一个称为协调器(coordinator)的特殊节点(其他节点称为工作器 workers)。应用程序将查询发送到协调节点,协调节点将查询转发给相关的 workers 并累积结果。

对于每个查询,协调器要么将其路由到单个工作节点,要么根据所需数据是存在于单个节点还是多个节点,将其并行化到多个工作节点。协调器知道如何通过查询其元数据表来实现这一点。这些特定于 Citus 的表跟踪工作节点的 DNS 名称和健康状况,以及跨节点的数据分布。有关更多信息,请参见我们的 Citus 表和视图。

阅读全文 »

在 Citus 集群上运行高效查询需要将数据正确地分布在计算机之间。这随应用程序类型及其查询模式的不同而不同。

在 Citus 上运行良好的应用程序大致有两种。数据建模的第一步是确定其中哪一个更类似于您的应用程序。

一览

Multi-Tenant Applications Real-Time Applications
模式中有时有几十或几百个表 Small number of tables
一次查询一个租户(公司/商店) 使用聚合的相对简单的分析查询
用于服务 Web 客户端的 OLTP 工作负载 摄取大部分不可变数据的高容量
为每个租户提供分析查询的 OLAP 工作负载 经常围绕着一个大的事件表

例子及特色

Multi-Tenant Application

这些通常是服务于其他公司、帐户或组织的 SaaS 应用程序。大多数 SaaS 应用程序本质上是关系型的。它们有一个自然的维度,可以在这个维度上将数据分布到节点上: 只需通过 tenant_id 分片即可。

Citus 使您能够向数百万租户扩展数据库,而无需重新构建应用程序。您可以保持所需的关系语义,比如连接、外键约束、事务、 ACID 和一致性。

  • 例如: 为其他企业提供门面服务的网站,如数字营销解决方案或销售自动化工具。
  • 特性: 与单个租户相关的查询,而不是跨租户连接信息。这包括用于服务 Web 客户端的 OLTP 工作负载,以及用于服务每租户分析查询的 OLAP 工作负载。在数据库模式中有几十或几百个表也是多租户数据模型的一个指示器。

使用 Citus 扩展多租户应用程序也需要对应用程序代码进行最小限度的更改。我们支持 Ruby on Rails 和 Django 这样的流行框架。

阅读全文 »

单节点 citus

通过 docker 进行安装

1
2
3
4
5
6
7
8
# start the image
docker run -d --name citus -p 5432:5432 -e POSTGRES_PASSWORD=pppppp citusdata/citus:11.2

# connect using psql within the Docker container
docker exec -it citus psql -U postgres

# # or, connect using local psql, verify it's running, and that Citus is installed:
psql -U postgres -h localhost -d postgres -c "SELECT * FROM citus_version();"
阅读全文 »
0%