業務系統數據庫設計常見的隔離和共享模式


多年開發和維護某些業務系統的經驗,讓人真正理解了什么叫“數據庫設計良好,系統就成功了一半”,尤其是那些面向多商戶或多租戶的基礎服務平台、公共服務平台、開放服務平台、或者由它們組合而成的綜合服務平台。數據庫設計之初,必須對業務系統DB的隔離和共享模式的優缺有充分的調研,平衡好業務系統的邊界,合理設計使用必要的冗余,以適應系統后續的不斷變化,否則后期開發人員將陷入無盡的煩惱和痛苦之中,這絕不是危言聳聽,只有開發和維護過平台類產品的人才能深刻體會。下面就介紹三種業務系統中最常見的數據庫設計的隔離和共享模式:

一、共享Database,共享Schema

很多開發人員最熟悉的一種模式,沒錯,很可能你在大學的時候寫的第一個MIS就是用的這種模式。

某些家伙認為這種模式沒啥技術含量,但是,如果你的業務系統要兼容很多業務端的需求,當你選擇這種模式的時候,用好了並不容易,尤其是當業務數據量非常大而且需求還在不斷變化的時候,會有各種各樣的問題暴露出來。

下面分析這種共享模式的主要優缺點:

1、優點

a.前期開發相對容易,單庫單表的增刪改查,喜聞樂見,注意,我這里說的是前期開發較容易

b.較容易做讀寫分離、備份和還原

c.能最大化利用DB服務器資源

d.DBA監控和運維管理也非常簡單

2、缺點

a.后期開發和維護會非常痛苦,各種復雜業務共享數據庫,不同商戶業務邏輯的差異很容易引發開發上的BUG,尤其是牽一發而動全身的公共服務系統

b.單庫的容量終究有限,不能適應業務數據量的快速增長

c.多商戶業務邏輯不一致,表設計時字段冗余不可避免

d.不利於自定義數據模型,可伸縮性受限制

e.無法對業務層進行橫向擴展,某些場景下想通過一個庫單張表搞定所有業務邏輯,開發人員只能呵呵了

 

二、獨立Database

這個也很常見,直接理解就是為每個業務端獨立使用各自的數據庫,互不干擾。它的優缺點非常明顯。

下面分析這種獨立模式的主要優缺點:

1、優點

a.和特定商戶業務系統聯系更緊密

b.前后期開發和維護都很容易

c.利於業務系統拆分和整合

d.各商戶業務數據相對獨立,各子系統對其他商戶業務系統無影響

e.分流業務系統數據,間接實現了集中數據的分片和縱向擴展

f.性能可能更好,只是可能

2、缺點

a.軟硬件成本增加

b.不可避免的重復,主要有重復的數據庫設計和業務邏輯,還有獨立的后台業務支持系統,總結起來就是一句話,重復的勞動需要更多的人力資源投入

c.DBA管理壓力增大,更多的庫更多的表需要監控和運維

 

三、共享Database獨立Schema

這種模式是一種設計上的平衡,兼有共享和獨立模式的各自主要優點。

下面分析這種兼有共享和獨立特性的模式的主要優缺點:

1、優點

a.雖然是單庫,但根據不同商戶進行了特殊業務的拆分,減少了冗余的數據庫和數據表的設計和開發,性價比更高

b.縱向擴展非常容易,業務拆分更簡單,只要將多商戶共享和單個商戶特定使用的表獨立出去就行

 

2、缺點

a.表設計要求更高,要設計和平衡好有限擴展和無限擴展的可能,否則后續維護會發現還不如完全共享或者完全獨立模式來的容易

b.業務數據集中,但表設計分散,后台系統如配置管理系統、統計分析系統很難做到共享模式的便利

 

總結:上面是最常見的業務系統數據庫模式,共享和獨立並不矛盾,各有自己特定的優缺點,它們依然屬於集中式數據設計和管理的范疇,要按照業務系統的現狀來選擇模式。當然,后期業務系統的不斷發展,數據量日益龐大,集中式的數據模式就會爆發很多問題(天花板效應),橫向擴展只是一個時間問題,從數據庫設計的角度,將DB由集中式改造為分布式(橫向擴展)才是永恆的難題。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM