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

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

  •  
  •   mytry · 309 天前 · 2015 次点击
    这是一个创建于 309 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一个巨大的文本文件(内容是日志),每条记录按换行分隔(每行的长度不固定),并且第一列是时间(当然是递增的)。

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

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

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

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