標籤:style 使用 sp 資料 on 問題 bs 時間 as
多年開發和維護某些業務系統的經驗,讓人真正理解了什麼叫“資料庫設計良好,系統就成功了一半”,尤其是那些面向多商戶的基礎服務平台、公用服務平台、開放服務平台、或者由它們組合而成的綜合服務平台。資料庫設計之初,必須對業務系統DB的隔離和共用模式的優缺有充分的調研,平衡好業務系統的邊界,合理設計使用必要的冗餘,以適應系統後續的不斷變化,否則後期開發人員將陷入無盡的煩惱和痛苦之中,這絕不是危言聳聽,只有開發和維護過平台類產品的人才能深刻體會。下面就介紹三種業務系統中最常見的資料庫設計的隔離和共用模式:
一、共用Database,共用Schema
很多開發人員最熟悉的一種模式,沒錯,很可能你在大學的時候寫的第一個MIS就是用的這種模式。
某些傢伙認為這種模式沒啥技術含量,但是,如果你的業務系統要相容很多業務端的需求,當你選擇這種模式的時候,用好了並不容易,尤其是當業務資料量非常大而且需求還在不斷變化的時候,會有各種各樣的問題暴露出來。
下面分析這種共用模式的主要優缺點:
1、優點
a.前期開發相對容易,單庫單表的增刪改查,喜聞樂見,注意,我這裡說的是前期開發較容易
b.較容易做讀寫分離、備份與還原
c.能最大化利用DB伺服器資源
c.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.業務資料集中,但表設計分散,後台系統如組態管理系統、統計分析系統很難做到共用模式的便利
總結:上面是最常見的業務系統資料庫模式,共用和獨立並不矛盾,各有自己特定的優缺點,它們依然屬於集中式資料設計和管理的範疇,要按照業務系統的現狀來選擇模式。當然,後期業務系統的不斷髮展,資料量日益龐大,集中式的資料模式就會爆發很多問題,橫向擴充只是一個時間問題,從資料庫設計的角度,橫向擴充才是永恒的難題。
業務系統資料庫設計常見的隔離和共用模式