1,垂直拆分
1-1,多表关联,1-2,分布式事务,tcc,xa,fescar(阿里)
2,水平拆分
大表拆成小表
拆分规则:时间、取模、地区、hash、一致性hash
平均分布的,扩容很难
按时间来分,扩容简单
3,名词
逻辑库:mycat服务器中的理论存在的库
分片表:
全局表:数据量小、不经常修改、一般和分片表有一些关联,例如数据字典表
ER表:例如用户地址表(和用户表有关联,和用户表放到一个db里)
非分片表:非上面三种表,类似于短信模板表等
mycat是java语言编写
scheme.xml(配置全局,分片表等),rule.xml(取模,hash等规则),server.xml(默认8066端口,mycat端口号,设置用户名密码之类的)
通过scheme定义逻辑库,global定义全局表
连接mycat
mysql -uroot -p12345 -p8066 -h192.168.1.1
mycat原理:
解析sql->管理数据源(选择哪个node)->数据源分配->请求响应->结果整合
经验性,要考虑的东西:
1,全局序列ID
2,业务逻辑验证
3,分片规则
4,硬件规划
5,数据的切换方案