目前想实现两个100G文件合并,日志文件,都有日期,日期会有所交集,如一份1日到10日,另一份5日到15日,所以合并后也需要对日期进行排序。
目标是,查询某一时间区段的信息,目前的打算是:
我可以知道每个文件大小和日起始时间,所以若文件过大,就分割它,然后获取分割小文件的的起始时间,时间区段只要稍加限制,同时由于log的连续性和记录频率不太高,就能确保就只有几个小文件包含了用户需要的信息,然后只返回那几小份的文件的信息,然后全部直接扔进内存排序都不怕,效率也可以。
但我想想,是不是也有办法,直接真的可以把2个100G合成一个200G的?
或有什么更好的办法,目前在写模板的基本方法,想封装好一点以后不管了。但不知道这个要怎么玩。求教,谢谢!
阿神2017-04-18 09:48:21
アイデアをください: あなたのセグメント化のアイデアは実際には非常に良いと思いますが、実際にセグメント化する必要はありません。インデックス ファイルを維持するだけです。つまり、(たとえば) 1000 エントリごとにファイルを 1 回読み取ることによって、1000 エントリの開始ファイル オフセットと終了オフセットが、これら 1000 エントリの開始時刻と終了時刻に関連付けられます。このようにして、インデックスファイルを取得します。
リーリー今後クエリを実行する場合は、まずインデックス ファイルをチェックして、必要なデータがどのファイルのどの範囲に含まれているかを確認できます。各ファイルは時間順に並べ替えられるため、インデックス作成時に並べ替える必要はありません。