大數據分庫、分表設計(mysql)

1.應用場景:

                     使用mysql數據庫做查詢,當數據量超過200w時,查詢數度受到限制,此時爲了避開這一瓶頸,我們採取分庫分表的數據庫設計思想,將數據按照一定規律保存至數據庫,常用的方式如下:

                    1.1使用時間作爲依據分庫/分表

                     例如,我們可以將數據按照月份保存在表中,例如:translate_2015_01,translate_2015_02.......以此達到分表、分庫的目的;

                    1.2 使用數字作爲分庫,分表標準(取餘)

                    我們經常會定義某個字段爲自增長或者某個隨機數,或者某個特定編碼,利用這個編碼,我們將其存放到不同的表中,例如,我們想要定義30張表存我們獲得的數據,  第一個值爲1,我們用1%30=1,由此可知該數據放在第一張表,又例如500%30=20,該數據放入第20張表。

                    1.3使用md5區分(上傳文件等)

                    在上傳文件過程中,將文件名的md5值取前3位作爲上傳文件保存的文件夾名稱,這樣便將上傳的文件保存在了3^3=27個文件夾中,方便下次尋找到該文件;

2.使用分表,分庫不利方面:

                   不利於做數據的統計操作,需要跨表跨庫;增加設計的複雜度;


參考文檔鏈接:

Ibatis和Hibernate 數據庫分表(動態表名映射)的實現方法:http://www.blogjava.net/weishuangshuang/archive/2011/03/26/347080.html

分庫分表的解決方案:http://fengbin2005.iteye.com/blog/1165038

數據庫水平切分的實現原理解析---分庫,分表,主從,集羣,負載均衡器:http://zhengdl126.iteye.com/blog/419850

Spring + iBatis 的多庫橫向切分簡易解決思路:http://www.iteye.com/topic/781317

SQL SERVER分區表方案 :http://terryli.blog.51cto.com/704315/163315


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章