商城设计要点(八)-历史订单,归档
...大约 2 分钟
商城设计要点(八)-历史订单,归档
1. 简介
1.1 冷热数据
根据二八定律,系统绝大部分的性能开销花在20%的业务。数据也不例外,从数据的使用频率来看,经常被业务访问的数据称为热点数据;反之,称之为冷数据。
1.2 订单数据划分
在了解的数据的冷、热特性后,便可以指导我们做一些有针对性的性能优化。这里面有业务层面的优化,也有技术层面的优化。比如:电商网站,一般只能查询3个月内的订单,如果你想看看3个月前的订单,需要访问历史订单页面。
2. 实现思路
2.1 冷热数据区分的标准是什么?
冷热数据区分的标准是什么?要结合业务思考,可能要找产品同学一块讨论才能做决策,切记不要拍脑袋。以电商订单为例:
- 方案一:以“下单时间”为标准,将3 个月前的订单数据当作冷数据,3 个月内的当作热数据。
- 方案二:根据“订单状态”字段来区分,已完结的订单当作冷数据,未完结的订单当作热数据。
- 方案三:组合方式,把下单时间 > 3 个月且状态为“已完结”的订单标识为冷数据,其他的当作热数据。
2.2 如何触发冷热数据的分离
- 方案一:直接修改业务代码,每次业务请求触发冷热数据判断,根据结果路由到对应的冷数据表或热数据表。缺点:如果判断标准是
时间维度
,数据过期了无法主动感知。 - 方案二:如果觉得修改业务代码,耦合性高,不易于后期维护。可以通过监听数据库变更日志 binlog 方式来触发
- 方案三:常用的手段是跑定时任务,一般是选择凌晨系统压力小的时候,通过跑批任务,将满足条件的冷数据迁移到其他存储介质。在途业务表中只留下来少量的热点数据。
3. 如何实现冷热数据分离
过程大概分为三步:
- 判断数据是冷、还是热
- 将冷数据插入冷数据表中
- 然后,从原来的热库中删除迁移的数据
4. 如何使用冷热数据
- 方案一:界面设计时会有选项区分,如上面举例的电商订单
- 方案二:直接在业务代码里区分。
参考文章
赞助