主要作用:
1作为分布式数据库中间层使用
。
MyCAT由Java开发,理论上说所有可以使用JDBC连接的关系型数据库和非关系型数据库都能使用MyCAT。
2.对主从数据库的读写分离、读的负载均衡
。
如果不用MyCAT,在每一个访问这套数据库的
应用
中都要实现读写分离的逻辑。
如果MySQL是一主多从,主卦了,MyCAT会选一个从来读写,但是其他从不会同步新主的数据。
所以MySQL是一主多从要做高可用建议使用MHA之类的主从复制管理工具。
3.对业务数据进行垂直切分、写的负载均衡
把原来保存到同一个DB中的表,按照业务模块拆分到多个DB中
。
比如,订单/仓配、用户、商品的表都在a数据库中,现在把订单/仓配放到a数据库中,把用户放到b数据库中,把商品放到c数据库中。
MyCAT的
逻辑库
功能,会把3组不同的数据库虚拟成一个数据库,还保持原来的a名字不变。这可以最大限度的减少对已经存在的应用的修改。
4.对业务数据库进行水平切分、写的负载均衡
在垂直切分的基础上,再把a数据库中订单/仓配进行水平切分。F(c)=1放在order01库,F(c)=2放在order02库,F(c)=3库放在order03。
F函数代表切分规则,c代表指定切分的列,c是要进行水平切分的表中的某一列,通常是主键。
这一整套的切分逻辑在引入MyCAT后就由MyCAT来实现了,不用在每一个
应用
中单独实现。
5.控制数据库接连的数量
MyCAT中可以建立公共连接池,供不同应用使用,从而有效控制数据库连接的数量。