想知道mycat是怎么样实现分表分库的,是用了hash还是其他原理?还有mycat适用于哪些场景?相对于海量存储的Nosql的适用场景又如何?
1.mycat是怎样实现分库分表的?mycat里面通过定义路由规则来实现分片表(路由规则里面会定义分片字段,以及分片算法)。分片算法有多种,你所说的hash是其中一种,还有取模、按范围分片等等。在mycat里面,会对所有传递的sql语句做路由处理(路由处理的依据就是表是否分片,如果分片,那么需要依据分片字段和对应的分片算法来判断sql应该传递到哪一个、或者哪几个、又或者全部节点去执行)
2.mycat适用于哪些场景?相对于海量存储的Nosql的适用场景又如何?数据量大到单机hold不住,而又不希望调整架构切换为NoSQL数据库,这个场景下可以考虑适用mycat。当然,使用前也应该做规划,哪些表需要分片等等。另外mycat对跨库join的支持不是很好,在使用mycat的时候要注意规避这种场景。PS: 你可以到mycat官网上面获取《Mycat权威指南》,也可以到mycat github上面获取代码以及相关文档。
mycat官网地址: http://www.mycat.org.cn/
mycat github地址:https://github.com/MyCATApache/Mycat-Server
本文介绍Mycat数据库中间件如何通过定义路由规则实现分库分表,包括hash在内的多种分片算法。同时探讨了Mycat适用场景及与NoSQL数据库对比的应用优势。
1245





