python - 100G超大文件合并排序
PHP中文网
PHP中文网 2017-04-18 09:46:21
0
2
770

目前想实现两个100G文件合并,日志文件,都有日期,日期会有所交集,如一份1日到10日,另一份5日到15日,所以合并后也需要对日期进行排序。

目标是,查询某一时间区段的信息,目前的打算是:

我可以知道每个文件大小和日起始时间,所以若文件过大,就分割它,然后获取分割小文件的的起始时间,时间区段只要稍加限制,同时由于log的连续性和记录频率不太高,就能确保就只有几个小文件包含了用户需要的信息,然后只返回那几小份的文件的信息,然后全部直接扔进内存排序都不怕,效率也可以。

但我想想,是不是也有办法,直接真的可以把2个100G合成一个200G的?
或有什么更好的办法,目前在写模板的基本方法,想封装好一点以后不管了。但不知道这个要怎么玩。求教,谢谢!

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复 (2)
阿神

提供个思路:我觉得你分割的思想其实挺好的,只是实际上并不需要真的分割,你要做的只是维护一个索引文件。就是说通过读一遍文件,每1000条(比方说),将1000条的起始文件偏移和结束偏移更这1000条的起始时间和结束时间关联起来。这样你可以得到一个索引文件。

时间1~时间2,文件1,offset1~offset2 时间3~时间4,文件2,offset3~offset4 ...

将来你要查询的时候,先查索引文件,就可以知道需要的数据在哪个文件的什么区间里面了。因为你每个文件本身是按时间排序的,所以在建立索引的时候无需排序。

    伊谢尔伦

    这么大,还要查询,为什么定期转存到数据库里。

      最新下载
      更多>
      网站特效
      网站源码
      网站素材
      前端模板
      关于我们 免责声明 Sitemap
      PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!