对于分库分表来说,具体有两种方式:垂直拆分和水平拆分
。
垂直拆分主要是业务的细化和独立,和业务联系比较密切。所以本文只讨论更通用的水平拆分。
范围区分(range)
:按月\按区\按其他的等特殊的属性维度进行分片预定义范围
:预估有多少数据的容量,对数据进行范围的分配,0-100->A 101-200->B取模 Hash
:对指定的字段进行取模运算,匹配对应的库和表。对于分库分表的中间件有很多,Shardingsphere,Tddl,MyCat,cobar。从架构上分,主要分为两种:JDBC应用方式
和Proxy模式
。
JDBC应用模式
是基于客户端的分片,有客户端根据Sql
和规则,决定具体执行的 sql 的服务器。代表有Shardingsphere,Tddl
JDBC应用模式 优点:
缺点:
Proxy模式
代理模式是基于 MySQL
做一层转发代理,有代理根据规则来分发具体的SQL 到服务器上。
优点:
缺点: