一、背景
随着公司业务增长,如果每天1000多万笔订单的话,3个月将有约10亿的订单量,之前数据库采用单库单表的形式已经不满足于业务需求,数据库改造迫在眉睫。
二、订单数据如何划分
我们可以将订单数据划分成两大类型:分别是热数据和冷数据。
- 热数据:3个月内的订单数据,查询实时性较高;
- 冷数据A:3个月 ~ 12个月前的订单数据,查询频率不高;
- 冷数据B:1年前的订单数据,几乎不会查询,只有偶尔的查询需求;
可能这里有个疑惑为什么要将冷数据分成两类,因为根据实际场景需求,用户基本不会去查看1年前的数据,如果将这部分数据还存储在db中,那么成本会非常高,而且也不便于维护。另外如果真遇到有个别用户需要查看1年前的订单信息,可以让用户走离线数据查看。
对于这三类数据的存储,目前规划如下:
- 热数据: 使用mysql进行存储,当然需要分库分表;
- 冷数据A: 对于这类数据可以存储在ES中,利用搜索引擎的特性基本上也可以做到比较快的查询;
- 冷数据B: 对于这类不经常查询的数据,可以存放到Hive中;
三、MySql 如何分库分表
3.1、按业务拆分
在业务初始阶段,为了加快应用上线和快速迭代