我有兩個Web應用程序,一個是管理員,一個是公用的。雖然兩者都有相當數量的單獨數據,但某個部分,我們稱之爲物品,都用於兩者。更確切地說,項目是在管理應用程序中創建和編輯的,然後顯示在公共應用程序中。Postgres - 在應用程序之間共享數據集
因爲兩者都使用PostgreSQL作爲數據庫後端,我想他們可以在數據庫級別加入 - 我會在公共數據庫中創建視圖,通過dblink將數據傳輸到管理數據庫。
這是一個很好的解決方案,給出以下約束?
- 有相當多的項目,
- 公共應用程序會做大量的搜索對數據集,
- 這是確定的數據是公共側有點陳舊,
- 目前的應用程序使用相同的物理數據庫服務器,但未來可能會拆分;
如果不是,您會有什麼建議?
相同的數據庫和不同的模式可能是一個解決辦法 - 我會考慮它。然而,就拆分應用程序而言,這是我的一個有意識的決定,允許稍微不同的「業務規則」以及它們的獨立開發和擴展。代碼重用可以通過共享庫:) – 2013-04-10 12:53:13
@TomsMikoss啊,我知道,共享庫是有道理的。分離數據庫的主要考慮因素是寫入:使用複製(將管理站點連接到單個主副本)可以輕鬆地(相當)輕鬆地縮放只讀操作,但公共站點需要寫入的內容(例如日誌)可能是值得分離出來。 – IMSoP 2013-04-10 13:46:16
@TomsMikoss另一件需要考慮的問題是使用單獨的數據庫,您不能跨多個數據庫提交原子事務,而無需通過兩階段提交(準備事務)跳過大量的環節。這意味着您可能需要更多的應用程序邏輯來同步某些更改,並確保事物不會比使用具有多個模式的單個數據庫時所用的應用程序的一半少。 – 2013-04-10 23:51:25