我負責開發和維護一組圍繞類似數據的Web應用程序。我當時決定的架構是每個應用程序都有自己的數據庫和web-root應用程序。每個應用程序維護一個連接池到它自己的數據庫和一個共享數據的中央數據庫(登錄等)連接池戰略:好,壞還是醜?
一位同事一直認爲這個策略不會擴展,因爲有這麼多不同的連接池將不會可擴展性,並且我們應該重構數據庫,以便所有不同的應用程序使用單箇中央數據庫,並且任何可能對系統唯一的修改都需要從該數據庫反映出來,然後使用由Tomcat提供支持的單個池。他假定有很多「元數據」在網絡中來回傳遞以維持連接池。
我的理解是,通過適當的調整隻用盡可能多的連接需要跨越不同的存儲池(低容量應用越來越少的連接,大容量的應用程序越來越等等)的池數量不與連接的數量相比,或者更正式地說,與1個30個連接池相比,保持3個10個連接池所需的開銷差異可以忽略不計。
最初將系統分解爲單應用程序一個數據庫設計的原因是應用程序之間可能存在差異,並且每個系統都可能根據需要對模式進行修改。同樣,它消除了通過其他應用程序泄露系統數據的可能性。
不幸的是,公司沒有強有力的領導來做出艱難的決定。儘管我的同事只是模糊地備份了他的疑慮,但我想確保我理解多個小型數據庫/連接與一個大型數據庫/連接池的分歧。
我不同意你的同事。如果您有n個webapps,即使它們使用相同的數據庫服務器,也可以使用n個池。這樣可以更好地分離問題,更好的調整選項,更好的隔離(如果一個Web應用程序吃掉所有連接,爲什麼另一個應該受到影響)等等。最重要的是,我真的不明白爲什麼獨特的遊戲池會更好地擴展。這是IMO不正確。 – 2009-09-21 21:20:24