0

我们正在使用 PostgreSQL 启动一个项目,并且在不久的将来需要将 Citus 用于多租户应用程序,因此我们的目标是适当地准备我们的 PostgreSQL 数据库模式,以便轻松升级到 Citus。我正在阅读以下页面https://docs.microsoft.com/en-us/azure/postgresql/hyperscale/concepts-choose-distribution-column#best-practices并指出以下内容:

"通过一个常见的tenant_id 列对分布式表进行分区。例如,在租户为公司的 SaaS 应用程序中,tenant_id 很可能是 company_id。 "

问题是上述语句中的“分区”一词是指 PostgreSQL 表分区(https://www.postgresql.org/docs/14/ddl-partitioning.html)还是指 Citus 按键分片? tenant_id当在 Citus 中使用与 PostgreSQL 中用于分区表的分片键相同的分片键 ( ) 对表进行分片时, PostgreSQL 表分区是否有意义或提供任何好处tenant_id

4

1 回答 1

1

免责声明:此处为前 Citus 团队成员(但不再隶属于 Citus 或 Microsoft)

我相当确定该文档引用了 Citus 集群中的分片中的分区。我见过的大多数 Citus 设置主要使用 Citus 分片,而不是 Postgres 表分区。

您可以将 Postgres 表分区与 Citus 结合使用,例如,如果您希望在保留时间到期后删除基于时间的分区。每个基于时间的分区都可以是 Citus 系统中的一个单独的分布式表,这样您就可以获得两全其美的好处(Citus 跨节点分布,Postgres 分区用于有效删除并避免 autovacuum 问题)。请注意,您不会在同一列上进行分区-根据我的经验,这实际上没有意义。

于 2022-02-01T22:58:34.483 回答