"最近一个前同事问我分库分表怎么做的,我才想起来这个公司好像没关注过这方面。看了运维,其实是显式的有 3 个库,基于 binlog 订阅,分别给我们业务方、BI 统计、以及模型离线计算。我们为主库。 但是只有一个库吗?然后又看了中间件,发现使用的除了 druid,还有 Cobar。咨询同事,同事说之前用的是 TDDL,不 .."

关于分库分表

本贴最后更新于 584 天前,其中的信息可能已经时移世异

最近一个前同事问我分库分表怎么做的,我才想起来这个公司好像没关注过这方面。看了运维,其实是显式的有 3 个库,基于 binlog 订阅,分别给我们业务方、BI 统计、以及模型离线计算。我们为主库。
但是只有一个库吗?然后又看了中间件,发现使用的除了 druid,还有 Cobar。咨询同事,同事说之前用的是 TDDL,不需要关心分库分表,答曰:“需要你 hold 全栈的,数据量一定不需要分库分表。需要分库分表的量级,一定有团队专门负责这部分。” 突然觉得好对。。。
但是了解一些这几个框架的设计思想还是很有必要的。先挖个坑

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2147 引用 • 7240 回帖 • 1059 关注
  • Cobar
    2 引用 • 10 回帖
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    226 引用 • 487 回帖 • 2 关注
  • 分库分表
    2 引用 • 5 回帖
感谢    关注    收藏    赞同    反对    举报    分享
优质回帖
  • Vanessa  

    需要你 hold 全栈的,数据量一定不需要分库分表。需要分库分表的量级,一定有团队专门负责这部分

    竟无力反驳

4 回帖    
请输入回帖内容...
  • 88250      

    头都大了

    感谢    赞同    反对    举报    分享       回复
  • Vanessa      

    需要你 hold 全栈的,数据量一定不需要分库分表。需要分库分表的量级,一定有团队专门负责这部分

    竟无力反驳

    感谢    赞同 1    反对    举报    分享       回复
  • jin123456bat 1 感谢        

    1、把订单表和用户表分开存储,不管从读还是写上都可以减少 DB 的压力,这是分库,主要原则是业务逻辑分开的表进行分库,最好不要把 2 个关联强度比较大的表分开存储 2、一般请求订单数据都是通过订单号来解决,假设订单正好是数字,订单号为 20170822123 是单数,存储在 order_A 表中,20170822124 是双数,存储在 order_B 表中,同理可以分多个表,每个数据表的数据量会比以前小很多,比较麻烦的是查询列表的时候,需要从每个表中都查出一些数据,然后在做排序,然后在分页等等,比较麻烦,因为从多个表中拿出来的数据不一定是排序好了的,这个主要看需求和设计,实现方式尽量和设计保持一致,这是分表,

    上面 2 种是从逻辑上进行的分离,需要自己改代码,也可以使用第三方中间件比如 mycat 之类的实现,

    1 回复 
    感谢    赞同    反对    举报    分享       回复
  • crick77            

    如果根据单双数区分,那么如果我需要查询最近几天的订单分页显示,还需要关联查询?

    感谢    赞同    反对    举报    分享       回复