数据分表小结

来源:互联网 发布:狙击手 特别行动 知乎 编辑:程序博客网 时间:2024/05/16 02:46

先描述下现有系统:现有系统的设计要求是每日订单量为30W,所以对数据表必须要拆分来提高读写效率,当更加得益于Ali牛逼的TDDL数据库中间件和面目全非的MySQL。

分布式数据库介绍
http://www.iteye.com/news/32077

拆分的原则

  • 分表的规则,需要使用贯穿整个业务主线的ID,如订单号等。
  • 分表ID需要贯穿整个业务的主线,如何订单相关的表,如果订单在第0张表,则相关表也都在第0张表
    *100保证
 public long generateSellOrderId(long orderId){        long temp = sequence.nextValue();        return temp*100+TddlRouteUtil.getTableIndexByOrderId(orderId);    }

基础知识
表的拆分需要根据一定的规则,如拆分为64张表,业务ID为100,则ID为100的数据存入100%64=36 第36张表中。

表连接查询?

这个想都不要想了,想象一下查询所有的表来实现条件查询会有多么的恐怖!
1)代码逻辑中的操作所有的都是单表操作,业务逻辑在数据查询出来后处理。
2)如果我想使用其它的非分表规则属性(意味着我不知道到哪张表中查询数据),则需要依靠建立外部索引,如aliyun 的OpenSearch服务等。

1 0