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./weishuangshuang/archive/2011/03/26/347080.html分库分表的解决方案:http://fengbin2005./blog/1165038 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器:http://zhengdl126./blog/419850Spring + iBatis 的多库横向切分简易解决思路:http://www./topic/781317
SQL SERVER分区表方案 :http://terryli.blog.51cto.com/704315/163315 |
|