我正在開發一個Web應用程序,其中,對於每個客戶端(小型大型組織),他們沒有(也不應該)能夠查詢到其他客戶端的記錄。將數據保存在單個數據庫中會很容易,並且使更新和維護變得簡單(直到遇到可伸縮性問題)。但我現在想要面向未來的應用程序。如果每個客戶的數據都包含在孤立的數據庫中,則每個客戶都會獲得更好的性能,並且應該更好地擴展。我不確定它是否相當於數據庫「分片」,因爲我沒有在多個數據庫之間劃分單個模式。我基本上會在每個數據庫中都有一個複製的模式(就像當天在CD上發佈軟件時一樣 - 每個數據庫都有自己的數據庫)。設置數據庫分片 - 沒有跨數據庫查詢
我已經讀了一點,所以我有一個概念的想法。但是,我的頭腦裏有很多問題。我不確定這個過程的透明度如何。或者,如果我想要推出更改,就會遇到更新數百個架構的維護噩夢。
真的,我只是在尋找一個簡單的「完整」例子(希望使用spring/java)。
我會想象我能有一個單一的應用程序服務器開始單一的數據源,比方說,一個MySQL實例與單個表映射用戶ID到數據庫。
- 用戶ID
- 數據庫/碎片-ID
對於每一個請求(查詢),忽略數據庫高速緩存,那就要查找的碎片ID的用戶?或者,這是否可以在每個會話中最初執行一次並直接與目標數據庫進行交談? (正如你可能能夠告訴我對服務器端的東西不夠強大)。
有人可以提供一個關於在Spring中如何連接的高層概述嗎?目前,我的架構非常簡單。我有簡單的Spring組件DAO使用jdbctemplate。 DAO的數據源被注入(數據源在applicationContext.xml上配置)。 DAO自動裝入我的服務類。相當標準的東西。
比方說,我得到了上一步工作,現在我必須改變架構。是否有管理工具可以用於一次應用模式更改並將其傳播到100個其他數據庫?
我正在使用MySQL。我相信「MySQL代理」可能能夠解決問題1和2.有沒有人有這方面的經驗?我想它無法處理管理模式更新,所以我可能不得不推出我自己的解決方案。
謝謝!