• 请不要在回答技术问题时复制粘贴 AI 生成的内容
mytry
V2EX  ›  程序员

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

  •  
  •   mytry · Mar 24, 2019 · 4268 views
    This topic created in 2787 days ago, the information mentioned may be changed or developed.
    有一个巨大的文本文件(内容是日志),每条记录按换行分隔(每行的长度不固定),并且第一列是时间(当然是递增的)。

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

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

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

    之前日志数量级大概都在几个 G 左右的 csv 文件吧,速度还不错。
    mmdsun
    mmdsun
    Mar 25, 2019 via Android
    11
    文档查询推荐 solr 二次开发
    jorneyr
    jorneyr
    Mar 25, 2019❤️1
    12
    手动的话第一步建立索引,第二步就是使用索引定位小范围搜索了。
    或者导入 MySQL 对时间建立索引,也可以使用全文搜索引擎如 Solr,ElasticSearch 等。
    mytry
    mytry
    OP
    Mar 25, 2019
    13
    @xlmo 这个能根据事先已排序的某个列(比如时间)进行高速查询吗?增删改都可以不用。
    defaultuser
    defaultuser
    Mar 25, 2019
    14
    一般先建索引,ElasticSearch 或者 Splunk 都可以
    bypythoncom
    bypythoncom
    Mar 25, 2019
    15
    大佬,你这是。。。这个不就写个脚本几行代码的事吗?莫非其中有什么蹊跷
    ddup
    ddup
    Jun 27, 2019
    16
    @idcspy #7 +1 推荐归海数据
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1135 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 23:16 · PVG 07:16 · LAX 15:16 · JFK 18:16
    ♥ Do have faith in what you're doing.