杰作良品
说说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也可以是一个选择。