一、大数据场景
1、分库分表设计
(1)每天新增500w数据
有一个订单表,每天新增500w数据。在实际的业务场景中存在两个比较多的查询:
- 根据订单id
- 根据用户id
首先,肯定是要分库分表了。但是要分多少个表多少个库,需要做好提前规划,避免后期出现容量满了,或者单表数据量过大的问题。否则数据迁移和扩容的成本非常大。
我们按照保留两年的热数据量来说大概是40亿的数据。在做一些空间预留,大概就是 32 个库,每个库32张表。
采用 订单id 作为分片键,采用一致性 hash 算法进行路由,另外再生成订单id 的时候把用户id作为基因片段拼接到订单id中,保证不管是通过订单id还是用户id查询,都能路由到同一张表中。
最后需要做冷热数据分离,这种订单类的数据一般频繁访问在一年内,超过一年的数据不需要多关心,可以迁移到冷库中做备份保留。