2014-09-01 104 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

相關問題