100G超大文件合并排序
高洛峰
高洛峰 2016-10-22 16:33:16
0
1
854

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

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

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

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


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous (1)
三叔

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

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

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


    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!