


綜述:
金鷹系統通過對監管企業的海量信息數據采用數據分庫分表方式治理,提高了數據查詢、數據處理效率。
為了全面監測區域內企業的金融風險,金鷹系統匯集了工商、輿情、投訴舉報等多維度的大量數據。隨著時間的推移,積攢的數據量越來越大,對系統的數據處理效率提出了更高的要求。目前金鷹系統單表最大數據量已達到億級別,傳統的數據庫性能優化手段已無法滿足系統的性能需求。為了減少數據庫的負擔,提升數據庫響應速度,縮短查詢時間,防控中心技術團隊對數據進行分庫分表。
什么是分庫分表?
分庫指從單個數據庫拆分成多個數據庫的過程,將數據散落在多個數據庫中。而分表指從單張表拆分成多張表的過程,將數據散落在多張表內。
分庫分表能解決什么問題?
如果數據庫的查詢壓力過大,就需要考慮拆庫,通過分庫來分擔單個數據庫的連接壓力。比如,數據庫每秒需處理3500筆請求,假設單庫每秒能處理的請求數最大為1000筆,那么就可以考慮拆分成4個庫,來分散查詢連接壓力。
如果單表數據量過大,當數據量超過一定量級后,無論是對于數據查詢還是數據更新,在經過索引優化等純數據庫層面的傳統優化手段之后,還是可能存在性能問題。這時候就需要去換個思路來解決問題。比如:從數據生產源頭、數據處理源頭來解決問題,既然數據量很大,那我們就來個分而治之,化整為零??梢酝ㄟ^分表把數據按照一定的規則拆分成多張表,來解決單表環境下無法解決的存取性能問題。
???
金鷹系統數據庫分庫分表策略
金鷹系統目前采用ShardingSphere(一款分庫分表框架)作為數據庫中間件。通過對企業名稱、法人等多個關鍵字進行組合散列運算得到企業ID。以企業ID作為分片鍵,ShardingSphere將根據企業ID與配置的路由信息決定該企業的數據落于哪個數據庫分片、哪張表上,合理的算法使數據均勻分布在各數據庫分片上,不同分片保存的數據量大致相同,從而確保數據處理效果能得到最大的優化。
本文內容為原創,轉載請注明出處!