PostgreSQL 增强
查看详细信息
1 | select version(); |
查看服务器端版本
1 | show server_version; |
Parsing YAML with SnakeYAML | Baeldung
https://www.baeldung.com/java-snake-yaml
Citus 是一个 PostgreSQL 扩展,它允许普通数据库服务器(称为节点)以“无共享”架构彼此协调。这些节点形成一个集群,使 PostgreSQL 能够比在单台计算机上容纳更多的数据并使用更多的 CPU 核。这种体系结构还允许数据库通过简单地向集群添加更多节点来扩展。
每个集群都有一个称为协调器(coordinator)的特殊节点(其他节点称为工作器 workers)。应用程序将查询发送到协调节点,协调节点将查询转发给相关的 workers 并累积结果。
对于每个查询,协调器要么将其路由到单个工作节点,要么根据所需数据是存在于单个节点还是多个节点,将其并行化到多个工作节点。协调器知道如何通过查询其元数据表来实现这一点。这些特定于 Citus 的表跟踪工作节点的 DNS 名称和健康状况,以及跨节点的数据分布。有关更多信息,请参见我们的 Citus 表和视图。
在 Citus 集群上运行高效查询需要将数据正确地分布在计算机之间。这随应用程序类型及其查询模式的不同而不同。
在 Citus 上运行良好的应用程序大致有两种。数据建模的第一步是确定其中哪一个更类似于您的应用程序。
Multi-Tenant Applications | Real-Time Applications |
---|---|
模式中有时有几十或几百个表 | Small number of tables |
一次查询一个租户(公司/商店) | 使用聚合的相对简单的分析查询 |
用于服务 Web 客户端的 OLTP 工作负载 | 摄取大部分不可变数据的高容量 |
为每个租户提供分析查询的 OLAP 工作负载 | 经常围绕着一个大的事件表 |
这些通常是服务于其他公司、帐户或组织的 SaaS 应用程序。大多数 SaaS 应用程序本质上是关系型的。它们有一个自然的维度,可以在这个维度上将数据分布到节点上: 只需通过 tenant_id 分片即可。
Citus 使您能够向数百万租户扩展数据库,而无需重新构建应用程序。您可以保持所需的关系语义,比如连接、外键约束、事务、 ACID 和一致性。
使用 Citus 扩展多租户应用程序也需要对应用程序代码进行最小限度的更改。我们支持 Ruby on Rails 和 Django 这样的流行框架。
1 | # start the image |