我正在開發一個基於Web的業務應用程序,其中每個客戶都需要擁有自己的數據(請考慮basecamphq.com類型的模型)爲了實現可擴展性和易用性,我更願意擁有一個數據庫,每個客戶都可以獲得過濾版本的數據。問題是如何保證他們保持沙盒到他們自己的數據。試圖在代碼中執行它看起來像是一場等待發生的災難。我知道Oracle有一種方法可以將基於登錄ID的每個查詢添加一個where子句,但是Postgresql有沒有類似的東西?Postgresql - 每個用戶一個數據庫或每個用戶一個數據庫
如果沒有,是否有我可以使用的不同設計模式(例如爲每個過濾客戶創建每個表的視圖)?
更糟糕的情況是,擁有1000個100M數據庫與擁有單個1TB數據庫的性能/內存開銷是多少?我需要提供基於每個客戶的備份/恢復功能,這對單個數據庫來說是非常簡單的,但如果他們與其他客戶共享數據庫則會更加棘手。
看起來它可以工作。它確實需要爲每個用戶單獨登錄,這會使連接池變得更加困難。你有沒有在生產現場運行它的經驗? – 2010-05-11 05:35:54
@John:不,不是在生產 - 幾個月前我正在爲一家公司做諮詢演出,他們考慮過這種可能性,但決定採取不同的路線。 – 2010-05-11 06:09:51
我想你必須忍受每個客戶的登錄,否則任何沙箱都是徒勞的,因爲它會是客戶端或應用程序端,直接訪問會破壞你的沙箱。 – MkV 2010-05-11 08:52:56