2014-08-30 168 views
2

我是Postgres的新手,幾乎完全在過去使用MySQL,我正在尋求將Postgres移植到其功能和SQL合規性等更多企業。然而,Postgres的結構與MySQL的結構大不相同,因爲你有一個數據庫,然後是一個或多個模式,而MySQL數據庫和模式是相同的。就我的應用程序Postgres而言,最佳實踐應該是一個數據庫還是一個模式?或者可以將表格分解爲邏輯組作爲模式。示例user_management架構將包括用戶,角色,role_map表等。Postgres架構最佳實踐

我意識到這個問題是非常主觀的,但我只是在尋找最佳實踐。我目前的數據庫只有40個表,所以我對使用多個模式來邏輯分組表格有點謹慎,因爲有些表格只有幾張。我只是不確定人們在現實世界中與Postgres做了什麼。

+0

這更適合於dba.stackexchange.com 。我已經將其標記爲遷移,請不要複製它。 – 2014-08-30 21:20:40

回答

4

將它們保留在單個模式中並將其作爲用戶/數據庫的第一個模式search_path幾乎總是會更好。很多人只是使用public,這很好。在你的應用程序之後命名一個模式並保留你的表格也是非常合理的。

有些工具不支持模式,或者使模式更難處理。所以,如果你不需要命名空間模式,你可以合理選擇不使用它。

對於可重用的組件,你可能會希望將它們打包到微不足道SQL-只擴展(見writing extensions,在這種情況下沒有必要隔離他們的模式。

我主要看模式一樣有用當你需要命名空間隔離時 - 例如,允許不同的應用程序可能有衝突的表名來共享一個數據庫,或者作爲多租戶應用程序實例化的幾種方法之一。

+0

感謝您的深入解釋。現在更有意義。 – greyfox 2014-08-31 00:14:13