【发布时间】:2022-06-14 15:11:33
【问题描述】:
我有一个包含数千个模式(每个用户一个)的网络应用程序。
我看过这篇文章
Hibernate and Multi-Tenant Database using Schemas in PostgreSQL
这里提到了在模式中查询特定表的 search_path 方法。
我想知道如何在 postgres 中同时查询所有架构?
我是否需要实现一个 python 脚本(例如)来逐个进行查询然后收集结果,或者我可以直接在 SQL 中实现它来收集所有查询吗?
例如,如果我想要一个带有 userid 和 number_of_posts 的表,并且我想使用单独的模式查询每个用户的这些字段,我将如何在 SQL 中编写它?我看不到如何自动更改唯一查询中的搜索路径。
postgres 中是否有列出所有现有模式的命令?
非常感谢
【问题讨论】:
-
SELECT * FROM information_schema.schemata;但是,我无法想象为什么每个用户都需要一个模式。像这样的数据模型会产生大量问题,而这只是其中之一。
-
谢谢。当您需要将数据与我在网络上阅读的内容隔离时,这是一种用于管理用户数据的通用数据库架构......
-
不同的来源,不同的意见......我们处理数百万用户,根据法律,他们不允许看到彼此的数据。但是不同的模式将是最糟糕的解决方案。一个简单的“WHERE用户=?”解决问题。
-
从我在您的个人资料中看到的内容看来您很有经验...您有什么建议?你在哪里用户=?只处理查询对吗?
-
是的,数据访问问题在您用于所有 CRUD 操作的 SQL 中得到了解决。当有新客户进来时,您不再需要 DDL,您不必为该用户创建架构、表、索引和其他东西。
标签: postgresql schema