分库分表方案,分库分表中间件,分库分表可能遇到的问题
分库分表方案:
1、 水平分库:以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。
2、 水平分表:以字段为依据,按照一定策略(hash、range等),将一个表中的数据拆分到多个表中。
3、 垂直分库:以表为依据,按照业务归属不同,将不同的表拆分到不同的库中。
4、 垂直分表:以字段为依据,按照字段的活跃性,将表中字段拆到不同的表(主表和扩展表)中。
常用的分库分表中间件:
1、 sharding-jdbc (当当)
2、 Mycat
3、 TDDL (淘宝)
4、 Oceanus (58同城数据库中间件)
5、 vitess (谷歌开发的数据库中间件)
6、 Atlas(Qihoo 360)
分库分表可能遇到的问題
1、 事务问题:需要用分布式事务啦
2、 跨节点Join的问题:解决这一问题可以分两次查询实现
3、 跨节点的count, order by, group by以及聚合函数问题:分别在各个节点上得到结果后在应用程序端进行合并。
4、 数据迁移,容量规划,扩容等问题
5、 ID问题:数据库被切分后,不能再依赖数据库自身的主键生成机制啦,最简单可以考虑
UUID
6、 跨分片的排序分页问题(后台加大pagesize处理?)
Was this helpful?
0 / 0