大数据查询
解决方案:分库分表、预统计、预查询 + 缓存、数据仓库+大数据计算
1. 分库分表
方案描述:查询较少和查询频率较多的数据按一定规则进行拆分存储。
挑战:
- 冷热数据分组统计排序查询,可通过中间件sharding-jdbc/mycat解决
- 合适的冷热数据拆分规则,可按时间、客户等进行拆分
- 大数据量查询时会大量消耗CPU和内存
2. 预统计
方案描述:按日和月预先分组统计领料数据、补货数据。
预统计维度:年月日/年月、供应链、工厂、机器编号、商品编号、成本中心、销售类型、仓库编号
挑战:
- 数据漂移问题,根据漂移数据更新已分组的统计数据
- 修改价格和四位小数需要同步修改价格,如果按月统计不能修改价格,但可进行数量统计
- 随着时间推移,数据量也会不断增加,最后需要再次聚合
预统计适用于记录不会被变更的场景
3. 预查询 + 缓存
方案描述:针对非实时统计接口使用预查询结合缓存,提前将交易数据进行统计查询并将结果放入缓存,同时采用定时任务定时去刷新缓存数据。
挑战:
- 大数据量查询时会大量消耗CPU和内存
- 若缓存数据量比较大,会影响redis读写并发能力(数据量越大,读写时间越长,redis单线程)
4. 数据仓库 + 大数据计算
方案描述:
- 将数据存入数据仓库,利用数据仓库的大数据查询能力实现快速分组统计查询。
- 使用大数据计算引擎,对数据进行加工(聚合、清洗)处理
特点:
- 大数据查询快(毫秒级),适用于大数据数据分析、BI等数据、业务元数据存储
- 适合查询频次少的业务