page contents

说说分库与分表的设计

轩辕小不懂 发布于 2021-06-19 11:47
阅读 637
收藏 0
分类:资源下载
  • SQL
  • 1072
    Pack
    Pack

    分库分表方案,分库分表中间件,分库分表可能遇到的问题

    分库分表方案:

    • 水平分库:以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。

    • 水平分表:以字段为依据,按照一定策略(hash、range等),将一个表中的数据拆分到多个表中。

    • 垂直分库:以表为依据,按照业务归属不同,将不同的表拆分到不同的库中。

    • 垂直分表:以字段为依据,按照字段的活跃性,将表中字段拆到不同的表(主表和扩展表)中。

    常用的分库分表中间件:

    • sharding-jdbc(当当)

    • Mycat

    • TDDL(淘宝)

    • Oceanus(58同城数据库中间件)

    • vitess(谷歌开发的数据库中间件)

    • Atlas(Qihoo 360)

    分库分表可能遇到的问题

    • 事务问题:需要用分布式事务啦

    • 跨节点Join的问题:解决这一问题可以分两次查询实现

    • 跨节点的count,order by,group by以及聚合函数问题:分别在各个节点上得到结果后在应用程序端进行合并。

    • 数据迁移,容量规划,扩容等问题

    • ID问题:数据库被切分后,不能再依赖数据库自身的主键生成机制啦,最简单可以考虑UUID

    • 跨分片的排序分页问题(后台加大pagesize处理?)

    请先 登录 后评论