前缀和在实践中的尝试

目前在做一些数据处理的任务,需求是对给出的日期范围处理对应日期的数据文件后显示在dashboard上,如果该日的数据文件已经处理过,则存储成另外的数据文件,下次有该日期的时候则直接读取另外的数据文件。对于有当日日期的数据做特殊处理,即只处理不存储成另外的数据文件,因为本日的数据有可能继续增加,存储没有意义。


�其中对于每日的未处理数据,是多条json数据组成,大小较大,处理完后是单一json数据,数据结构比较复杂,值为列表和字符串,列表里有字典类型数据。对于给定的日期范围,最后需要统计json值的"和"。

以下是我对计算给定日期范围的数据值和的思路:

1.遍历时间读取对应时间文件进行数据处理,得到每天一个json值

2.考虑到如果频繁请求一个区间的和,那么按照以往做acm的经验,必然是前缀和无疑了,即预处理前缀和,那么区间[a,b]的值即为sum[b] - sum[a-1]

3.这方式起初看可行,实际中考虑到的问题有几点:前缀和有个起始点,这个起始点当然可以是任意,但是不容易记忆(即使不记忆也没有太大问题);当请求的天数越过了中间未处理的日期,前缀和会失败(当然存在解决办法是跑定时任务去处理每天的数据);对于json数据,'减'的定义不是很明确,当然不存在会减去不存在的值

4.在通过实践后发现读取文件处理数据数据速度非常快,每次求和也不会造成很长时间消耗(都在1s内出结果,数据还没有大到不可接受)

5.最后的解决方案是每日数据处理后生成数据文件,请求时做求和并缓存,对于当前数据量而言,效率还可以

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容