简单说,有订单表,一天一万单左右(还在不断增加),表里存储了订单的金额,状态,商品,商家,用户等信息。现在有个需求就是按照时间区间和各种纬度来展示订单和统计信息,类似于支付宝的历史消费记录。订单在生成的几天内可能会发生状态变化(退款之类的)。
另外,团队情况是没有 DBA ,后台研发团队比较小,能专职做这个需求的只有一个工程师。
想到的方法有这么几种:
- 直接对订单数据库表做统计。当时间跨度比较大的时候,性能上会有问题。
- 用另外的一一张表存储每日的统计信息,查询的时候直接在统计表里做查询。问题在于订单状态有变化的时候,需要用异步任务更新统计表,容易出现数据不一致的情况。
- 用触发器和统计表,在订单表有更新的时候,往另外一张表里添加一条任务记录,然后用 crontab 去查询未执行的任务,将订单数据的变化同步到统计表里。问题在于触发器的使用,估计会有不少坑。
目前想到这三种方法,都有各自的问题。
有没有做过类似系统的朋友,欢迎来分享一下经验。