对于多租户,在 Postgres 集群中的哪里存储有关每个租户单独数据库的元数据?

问题描述 投票:0回答:1

我有一个多租户应用程序,它将使用 SILO 模型来保存数据(每个租户将获得一个自己的数据库)。

因为租户名称可能是多余的,所以我的数据库带有 GUID:

MyApp_[GUID]

现在我想为每个数据库保存简单但必要的信息,例如租户名称和 3 到 5 位信息。

有没有一种简单的方法来写入和获取这些数据?

我能想到的唯一方法是为此创建一个只有 1 行的特殊表 - 但这似乎是一个浪费的机器人。

postgresql
1个回答
2
投票

如果您正在寻找比每个数据库一个表更简单的解决方案(并且必须处理必须只有一行的尴尬约束),您可以

  • 使用自定义配置参数。您可以使用
    ALTER DATABASE
    更改它们。缺点是您只能存储字符串,并且每个会话的设置可能会被覆盖。
  • 在数据库上使用
    COMMENT
    。缺点是每个数据库只能存储一个字符串;优点是它会自动显示在许多数据库列表中,例如
    psql
    \l+
    命令
  • 将您自己的列添加到
    pg_database
    系统表
    。你不应该搞乱它,所以即使你知道自己在做什么,这也是一个非常糟糕的主意,但在关系模型中它最接近你所要求的,所以为了完整性我会提到它。

我并不真正提倡任何这些解决方案,尽管它们满足您的要求,但可能有更好的解决方案来解决您的实际问题。它可能是一个简单的数据库表,可能带有

pg_database
的外键,位于所有租户共享的额外数据库中。

© www.soinside.com 2019 - 2024. All rights reserved.