分库分表最佳实践大小结
一、随着企业业务的增长,访问量和用户等数据的增加,传统的关系数据库已经不能满足需求,分表分库就成了节省成本、和良好扩展性的必然选择,网上也有很多开源的分表分库的软件,也公司自己开发实现
而终其原理和步骤都无外乎三步:
即首先sql解析路由,再根据路由确定分片,然后结果集合并
所遇到的分表分库的难点大都是对分布式事务的支持,分片后的分页和排序等
二、实现方式大都在两个层面:
即在应用层 代表有hibernate shards,ibatis shards,guzz 等和在jdbc之下对应用层完全透明的 如amoeba
三、那么企业在分表分库的实践中该如何选择呢?
假如您是一开始就想全新的分表分库 公司没打算做自己的分表分库框架,那么推荐用guzz,
这个类似于hibernate 和 ibatis的框架,很多网站都在用,缺点是技术团队需要重新学习一套框架
跟旧的系统很难兼容;
假如您的系统很乱,分表分库规则很简单,并且数据库是mysql推荐用amoeba ,虽然有oracle版本,但目前不是很成熟;
假如您的技术团队一直用hibernate ,或企业现在的很多项目现在都用hibernate做的,那么推荐用hibernate shards,这个类似hibernate,学习成本低,能跟hibernate兼容,目前国内有在hibernate shards上封装的成功案例, 缺点是list查询时遍历所有数据片,而不是根据sql规则确定的数据片。这个bug及在hibernate shards上如何扩展问题我已解决,附件是解决的架构图,需要源代码的或详细可以联系我;
ibatis shards跟hibernate shards类似,也可借鉴本人所设计的架构
思想 欢迎有志之士详聊
附:
一、hibernate shards
优点:
1、实现跟其他成熟框架的集成如spring等
2、能利用公司现有的hibernate的技术优势
3、目前国内有成功案例在hibernate shards上封装的商业软件
4、能够快速开发
缺点:
1、暂不支持垂直分区
2、list查询遍历所有表分片
而终其原理和步骤都无外乎三步:
即首先sql解析路由,再根据路由确定分片,然后结果集合并
所遇到的分表分库的难点大都是对分布式事务的支持,分片后的分页和排序等
二、实现方式大都在两个层面:
即在应用层 代表有hibernate shards,ibatis shards,guzz 等和在jdbc之下对应用层完全透明的 如amoeba
三、那么企业在分表分库的实践中该如何选择呢?
假如您是一开始就想全新的分表分库 公司没打算做自己的分表分库框架,那么推荐用guzz,
这个类似于hibernate 和 ibatis的框架,很多网站都在用,缺点是技术团队需要重新学习一套框架
跟旧的系统很难兼容;
假如您的系统很乱,分表分库规则很简单,并且数据库是mysql推荐用amoeba ,虽然有oracle版本,但目前不是很成熟;
假如您的技术团队一直用hibernate ,或企业现在的很多项目现在都用hibernate做的,那么推荐用hibernate shards,这个类似hibernate,学习成本低,能跟hibernate兼容,目前国内有在hibernate shards上封装的成功案例, 缺点是list查询时遍历所有数据片,而不是根据sql规则确定的数据片。这个bug及在hibernate shards上如何扩展问题我已解决,附件是解决的架构图,需要源代码的或详细可以联系我;
ibatis shards跟hibernate shards类似,也可借鉴本人所设计的架构
思想 欢迎有志之士详聊
附:
一、hibernate shards
优点:
1、实现跟其他成熟框架的集成如spring等
2、能利用公司现有的hibernate的技术优势
3、目前国内有成功案例在hibernate shards上封装的商业软件
4、能够快速开发
缺点:
1、暂不支持垂直分区
2、list查询遍历所有表分片
相关推荐
数据分库分表最佳实践.docx
数据库分库分表中间件实践,降低单机负载 降低单点故障带来的影响 提高读写的性能
数据库分库分表的技术演进与最佳实践.docx
Java+Springboot+mybatis+sharding jdbc 实现分库分表
[分库分表]面试题 pdf[分库分表]面试题 pdf[分库分表]面试题 pdf[分库分表]面试题 pdf[分库分表]面试题 pdf[分库分表]面试题 pdf[分库分表]面试题 pdf[分库分表]面试题 pdf[分库分表]面试题 pdf[分库分表]面试题 pdf...
php分库分表
MySQL分库分表课件.zipMySQL分库分表课件.zipMySQL分库分表课件.zipMySQL分库分表课件.zipMySQL分库分表课件.zipMySQL分库分表课件.zipMySQL分库分表课件.zipMySQL分库分表课件.zipMySQL分库分表课件.zipMySQL分库...
sharding-jdbc 分库分表 CRUD
分库分表组件,支持自动主备切换,动态切分,读写分离,支付宝分库分表架构
springmvc分库分表实际例子 maven项目 欢迎下载试用
开源个人参考淘宝的TDDL分库分表思路写的一个分库分表中间件Kamike.divide. 分库分表这个是8月份左右跟淘宝的数据分析部门的架构师离哲交流的时候产生的想法,离哲推荐采用TDDL进行分库分表。 回去一看,却...
数据库分库分表架构实践.docx
阿里巴巴数据库分库分表的实践.docx
spring动态数据源整合mybatis实现的分库分表操作。 分库分表对业务代码是透明的,只需要在配置文件分配分库模版即可动态的实现分库分表的增删改查操作。
水平拆分数据分库和分表的核心问题是表的ID唯一,然后根据唯一的ID映射到一个物理存储位置,这个映射方案要考虑到满足数据量暴增线性扩展和业务上容易保持一致,本文主要讨论分库分表如何映射的问题。
分库分表_基于当当jdbc-sharding,分库分表_基于当当jdbc-sharding
这个PPT由浅入深,从很少的用户到千万级别的用户,告诉你为什么要使用分库分表,包括垂直和水平切分,偏入门的理论,代码基本无
一个MySQL分库分表php类。当一个表数据记录过大时...一般而言,分库分表属于水平分割,按照一定的规则将数据插入到不同的表中去。而分库则可以很方便的转移数据库的压力,比如将一个很大库的分 别放在不同的服务器上。
功能: 通过配置文件以及sql模板文件自动生成 分库分表,单库分表的sql脚本 最新更新: 1、支持分库不分表的脚本生成 2、修正重复索引报错问题
基于mycat1.6.5改进 同时支持分库分表