Mycat的概念
问题
分库分表,分好分,分了怎么管理?
解决方案
分库分表以后,一定需要有一个管理软件来整合分下的库,分下去的表。否则,程序员将面临巨大的问题
解决方案:例如mycat (我的猫)这种中间件,就可以帮我们解决
Mycat的架构图
mycat实际上,就是一个位于应用程序与数据库集群之间的中间件,它可以帮我们管理数据库集群,以及提供负载均衡能力
Mycat的特点
1、它给数据库集群提供了一个透明代理
2、它是Java语言开发的,调试和配置对于Java程序员来讲都是非常容易的
Mycat的术语
逻辑库(schema)
逻辑库:用来替代分库后的不同的数据库的名称
逻辑表(table)
逻辑表:显示在逻辑库的表的名称(从集群中,需要暴露给程序的表的名称)
分片表
分片表:就是通过某种分片规则,位于不同的数据库的中数据库表(当然,分片表是逻辑表的一个)
不分片表
不分片表:就是没有经过任何分片规则的表(当然,分片表是逻辑表的一个)
节点主机
所谓的节点主机,就是指安装了mysql数据库的服务器
数据切分后,每个分片节点(dataNode)不一定都会独占一台机器,同一机器上面可以有多个分片数据库,这样一个或多个分片节点 (dataNode)所在的机器就是节点主机(dataHost),为了规避单节点主机并发数限制,尽量将读写压力高的分片节点(dataNode)均衡的放在不同的节点主机(dataHost)。 节点主机代表每一个单独的数据库!!
分片规则
前面讲了数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到某个分片的规则就是分片规则,数据切分选择合适的分片规则非常重要,将极大的避免后续数据处理的难度
分片规则
Hash一致算法分片sharding-by-murmur
假如:
1、根据id进行分配,先取得id的hash值
2、假设现在有4台数据节点,将4台数据节点映射到Hash环上
3、将id的hash值,同样映射到Hash环上,然后顺时针查找距离该Hash值,最近的节点在哪儿
4、数据将直接放置在距离最近的数据node上
范围约定auto-sharding-long
0-500W 在一个分片中
500W-1000W 在一个分片中
1000W-1500W 在一个分片中
……
枚举分片sharding-by-intfile
固定分片Hash算法rule1
按日期分片sharding-by-date
10天一个片
取模范围约束sharding-by-pattern
……
分片Hash算法rule1
按日期分片sharding-by-date
10天一个片
取模范围约束sharding-by-pattern
……
到此,Mycat的概念,就结束了!!!