首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

有基于纯文本文件的数据查询引擎吗?

  •  
  •   mytry · 29 天前 · 1358 次点击
    有一个巨大的文本文件(内容是日志),每条记录按换行分隔(每行的长度不固定),并且第一列是时间(当然是递增的)。

    有没有这样的查询引擎,能根据给定的时间范围,通过对文件二分搜索,快速定位到时间范围内的数据记录?而无需扫描整个文件内容。
    15 回复  |  直到 2019-03-25 14:13:10 +08:00
        1
    cyspy   29 天前
    timecat?
        2
    ebingtel   29 天前
    awk 写一下 shell 应该可以的
        3
    des   29 天前
    每行的长度不固定,你怎么二分?
    除非预先建索引
        4
    des   29 天前
    倒是偶尔手动二分过,用 split -l
        5
    geelaw   29 天前 via iPhone
    @des #3 一个简单的思路是假设各行的长度是平均长度的 Theta(1) 倍,然后二分 seek 文件位置之后先“吸附”到附近的折行处再继续处理。

    不过巨大是多大才值得实现这个算法又是另一回事儿。
        6
    des   29 天前
    @geelaw
    这个倒是不错的方法,可以写个脚本来做,应该不算太费事
        7
    idcspy   29 天前
    本站有朋友开发了,归海数据引擎。
        8
    xlmo   29 天前
        9
    rekulas   29 天前
    感觉比较简单 自己写个脚本就可以实现了
        10
    xenme   28 天前 via iPhone
    直接丢进 splunk

    只是分割的话,之前我都是 seek,按照 @geelaw 差不多的思路,预判前后移动分割

    之前日志数量级大概都在几个 G 左右的 csv 文件吧,速度还不错。
        11
    mmdsun   28 天前 via Android
    文档查询推荐 solr 二次开发
        12
    jorneyr   28 天前   ♥ 1
    手动的话第一步建立索引,第二步就是使用索引定位小范围搜索了。
    或者导入 MySQL 对时间建立索引,也可以使用全文搜索引擎如 Solr,ElasticSearch 等。
        13
    mytry   28 天前
    @xlmo 这个能根据事先已排序的某个列(比如时间)进行高速查询吗?增删改都可以不用。
        14
    defaultuser   28 天前
    一般先建索引,ElasticSearch 或者 Splunk 都可以
        15
    bypythoncom   28 天前
    大佬,你这是。。。这个不就写个脚本几行代码的事吗?莫非其中有什么蹊跷
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1004 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 18:45 · PVG 02:45 · LAX 11:45 · JFK 14:45
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1