postgresql - 在 postgres 中使用数据库模式的优点和缺点是什么?

标签 postgresql

我正在开发的应用程序类似于 flikr,但具有群组概念。每个组由多个用户组成,用户只能在他们的组内进行上传、分享、评论等事件。

我正在考虑为每个组创建一个架构以在组名命名空间下组织数据,以便轻松高效地管理它。

Will it have any adverse effect on database backup plans ?

Is there any practical limits on number of schemas per database ?

最佳答案

将结构相同的数据拆分为模式时,您需要预料到这样一个事实,即您不需要再次将它们作为全局实体进行查询。因为它与将它们放在同一模式的不同表中一样麻烦和反 SQL。

例如,假设您有 100 个用户组,在 100 个名为 group1..group100 的模式中,每个模式都有一个 photo 表。

要获取系统中的照片总数,您需要执行以下操作:

select sum(n) FROM
(
select count(*) as n from group1.photos
UNION
select count(*) as n from group2.photos
UNION
select count(*) as n from group3.photos
...
UNION
select count(*) as n from group100.photos
)

每当添加或删除组时,也需要重建这种查询或 View 。

这既不简单也不高效,这是程序员的噩梦。

关于postgresql - 在 postgres 中使用数据库模式的优点和缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25601571/

相关文章:

sql - 如何在postgresql中的where条件的较低值之间进行选择?

database - 有没有比pg_trgm更快的postgres模糊匹配?

sql - 检查 postgresql jsonb 列中是否存在 key

python - 只选择 Postgresql 的两列并将其存储在 numpy 数组中

java - "ERROR: Column does not exist"使用现有列

SQL 优化 - 字符串中的字数统计 - Postgresql

python - Django bulk_create 引发 "Database is in recovery mode"

postgresql - LIMIT 与 ORDER BY 使查询变慢

postgresql - 从postgis中的一个点周围的点创建一个多边形

node.js - Expressjs随机挂起,如何输出错误?