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

2019-03-24 18:07:40 +08:00
 mytry
有一个巨大的文本文件(内容是日志),每条记录按换行分隔(每行的长度不固定),并且第一列是时间(当然是递增的)。

有没有这样的查询引擎,能根据给定的时间范围,通过对文件二分搜索,快速定位到时间范围内的数据记录?而无需扫描整个文件内容。
2893 次点击
所在节点    程序员
16 条回复
cyspy
2019-03-24 18:51:08 +08:00
timecat?
ebingtel
2019-03-24 19:08:02 +08:00
awk 写一下 shell 应该可以的
des
2019-03-24 19:20:53 +08:00
每行的长度不固定,你怎么二分?
除非预先建索引
des
2019-03-24 19:22:50 +08:00
倒是偶尔手动二分过,用 split -l
geelaw
2019-03-24 19:24:13 +08:00
@des #3 一个简单的思路是假设各行的长度是平均长度的 Theta(1) 倍,然后二分 seek 文件位置之后先“吸附”到附近的折行处再继续处理。

不过巨大是多大才值得实现这个算法又是另一回事儿。
des
2019-03-24 19:29:13 +08:00
@geelaw
这个倒是不错的方法,可以写个脚本来做,应该不算太费事
idcspy
2019-03-24 23:11:44 +08:00
本站有朋友开发了,归海数据引擎。
xlmo
2019-03-24 23:32:44 +08:00
rekulas
2019-03-24 23:47:49 +08:00
感觉比较简单 自己写个脚本就可以实现了
xenme
2019-03-25 03:49:39 +08:00
直接丢进 splunk

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

之前日志数量级大概都在几个 G 左右的 csv 文件吧,速度还不错。
mmdsun
2019-03-25 07:36:12 +08:00
文档查询推荐 solr 二次开发
jorneyr
2019-03-25 08:00:33 +08:00
手动的话第一步建立索引,第二步就是使用索引定位小范围搜索了。
或者导入 MySQL 对时间建立索引,也可以使用全文搜索引擎如 Solr,ElasticSearch 等。
mytry
2019-03-25 08:30:04 +08:00
@xlmo 这个能根据事先已排序的某个列(比如时间)进行高速查询吗?增删改都可以不用。
defaultuser
2019-03-25 08:39:19 +08:00
一般先建索引,ElasticSearch 或者 Splunk 都可以
bypythoncom
2019-03-25 14:13:10 +08:00
大佬,你这是。。。这个不就写个脚本几行代码的事吗?莫非其中有什么蹊跷
ddup
2019-06-27 23:26:07 +08:00
@idcspy #7 +1 推荐归海数据

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/548026

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX