2014-09-01 102 views
1

这个应用程序,我正在工作就像flikr,但与团体的概念。每个组由多个用户组成,用户只能在他们的组内进行上传,分享,评论等活动。在postgres中使用数据库模式有什么优点和缺点?

我正在考虑为每个组创建一个模式来组织名称空间下的数据,以便轻松管理它&高效。

Will it have any adverse effect on database backup plans ? 

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

http://www.postgresqlforbeginners.com/2010/12/schema.html – 2014-09-01 08:43:01

+1

模式适合逻辑组织,允许基于模式的用户访问,用于备份,您可以选择备份特定模式,还有很多其他的东西。我正在努力思考任何真正的缺点。 – 2014-09-01 10:35:01

+0

@JohnBarça,我想,它在查询性能方面也会有优势,因为表不会太多。 – Ashish 2014-09-01 13:50:05

回答

1

当将相同结构的数据拆分为模式时,您需要预测到您不需要再次将它们查询为全局实体。因为它们在同一个模式的不同表中有麻烦和反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 
) 

这种类型的查询或视图中也需要重建一个组添加或删除的任何时间。

这既不容易也不高效,这是程序员的噩梦。

+0

是的,我承认查询跨架构将是痛苦和无效的,但除统计数据没有用例外。 – Ashish 2014-09-01 15:55:13

+1

@Daniel。如果每个组在逻辑上在应用程序设计中是分离的,那么为什么要运行这样的查询呢?如果你需要这样的事情,你可以随时保留所有照片的元表。 – 2014-09-01 20:25:50

+0

@JohnBarça,它会对数据库备份有什么影响吗? – Ashish 2014-09-02 10:38:51

相关问题