200G巨型文本搜索(无限不循环数文本文件遍历搜索)
小忙儿 2015-04-04 04:47:40 看标题可能比较别扭,容我细细道来:
1、原始数据是文本文件,内容是出数字,不分行,无空格,大小在100m到1G之间;
2、这样的文本文件有很多个,目前总大小超过200G,这些文件不做修改,但会随时间增加新文件;
3、需要从这些文本文件中使用关键字搜索出所有的匹配结果,并摘录前后N个数字,关键字的长度在K以内,N和K要每次搜索前才能确定,但都不至于太大,暂定不会超过30。
场景一、
π 是一个无线不循环小数,把它分割作为文本存做文件存储起来,每个文件100M,分割部分的连续性暂不考虑,能得到大量的这种文件,好,凑200G。
如果,我要在这200G文本中搜索 0123456789这样数字连续出现的情况,需要知道是从第几位开始,前后和后面各20个数字又是什么?或者说9876543210这样的顺序?又或者31415926这样的序列?
场景二、
人类基因组计划大家应该听说过的。人类有23对染色体,每对染色体都包含海量的信息。而染色体中基本的碱基有四种(据传碱基种类已经达到8种,但其他几种并不在DNA中稳定存在,要么是这四种的衍生物,要么只存在于RAN),假设分别用C、G、T、A来表示,加上未知的情况用N来表示,只需要5个字符的序列就能把一条染色体上的碱基序列存储起来,然后,这个文件作为文本,内容可以认为是随机的。
每个染色体一个文件,一个人有23个文件。如果我们找100个人,把这些人的DAN全部测序并记录为文本文件,凑200G。
问题,如果需要判断某段序列是否存在于这100个人的DNA,如果存在那这段序列的前后20个碱基又是什么·?
问题:
1、这种需求,用文本文件存储搜索时遍历好吗?
2、用全文搜索,建立索引,好使吗?
3、速度要快,有没有什么好思路?
问题描述完毕,欢迎各路高人讨论,谢谢。