MySQL分库分表有哪些成熟的中间件?不要破坏到原有程序设计的?

杰作良品

说说MyCat吧!!!!

首先Mycat是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎的,而Mycat并没有存储引擎,所以并不是完全意义的分布式数据库系统的。

Mycat: 数据库中间件技术的:

这个前端使用中间件后端使用数据库(mysql oracle)支持的,可以对数据库集群有效的管理方便扩容,对大型数据表横纵分片,这个分片后的表连接的查询,是对前端开发处于透明状态的。

还有这个myCat 的话需要在JDK7版本以上运行。MyCat推荐使用mySql做集群的。

这个MyCAT 有提供编译好的安装包,支持 windows、Linux、Mac、Solaris的 等系统上安装运行了。

建议的数据切分原则的:

第一原则:能不切分尽量不要切分的。

第二原则:如果要切分一定要选择合适的切分规则,提前规划好的。

第三原则:数据切分尽量通过数据冗余或表分组来降低跨库 的Join 的可能吧。

这个第四原则:由于数据库中间件对数据 Join 实现的优劣难以把握,而且实现高性能难度极大,业务读取尽量少使用多表join的,可能分布式事务问题的。

讲讲Mycat的原理的 :

这个Mycat的原理中最重要的是拦截的,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析::如分片分析的、路由分析、读写分离分析、缓存分析等的,然后将此SQL发往后端的真实数据库中,然后在并将返回的结果做适当的处理,最终再返回给用户了的了。

我最后数一下这个:

Mycat在1.6版本以后已经完全支持 XA 分布式强事务类型了的的,可以很好地解决分布式事物的基本问题了的。

这个完整的流程图如图所示结果了:


我的内容我做主

假如你想了解的话,那么建议从mycat入手。但具体想落地那不同的系统架构方案也不一样。

推荐一些目前实用的:

Java

用hibernate 可以试试hibernate shards

或者

HiveDB也可以是一个选择。


分享到:


相關文章: