经理让我做一个离线统计,建立日表、周表、月表
当时就有些心虚加崩溃,因为乍一听很牛的样子,但是我之前没有接触过,他偏偏还说,你以前应该做过吧……
经过我不懈的心惊胆战和求助和豁然开朗和再次讨论和自我修改迭代的基础上,我把这个需求搞懂了并且表也建好了
1、为什么有这个需求?
因为这次的需求是对大屏进行的修改,如果说接口速度达到一秒、甚至是两秒好几秒的时候,那我们就寄了,因为这会导致大屏卡顿 + 白屏的出现,用户体验十分糟糕。所以我们要改进性能,于是采用了离线统计的方法。
2、什么是离线统计
所谓离线统计,就是把今天之前的,你需求页面上需要的数据,全部提前准备好,在页面进行请求端口的时候,不要再进行多个表的访问,或者复杂的计算等等操作,这样就大大提高了效率。采用的手段就是:建立日表、周表、月表。然后在每天凌晨(随便什么时间),对新的数据进行同步。
3、如何建表
建表要根据自己具体的业务需求来,我这里拿自己的需求来进行说明。
我这次的需求是对大屏进行修改,说是修改,其实就和重新做个页面没什么区别。
● 从数据来分,分为两种:实时数据 和 时间段内统计数据
● 从响应数据类型来分,分为两种:折线图、柱状图这种封装为对象的 和 基本数据类型的
1、我如果直接在对接大屏页面的接口中进行各种统计、计算,大屏就蹦了,因为这些数据来自很多个表。
2、所以这里我只建立一个日表,业务字段为原表需要的相应字段,需要用一张表综合起来。
3、每天通过定时任务,追加前一天数据。在定时任务里,对每一天的数据进行预先计算好。这里可以对日期字段加个索引。
所以以上方法只能对时间段数据进行处理,如果实时数据的话,还得访问原表