2个版本
0.1.1 | 2019年3月26日 |
---|---|
0.1.0 | 2019年3月3日 |
#228 在 数据库实现
每月 22 次下载
45KB
1K SLoC
text_index
闪电般的csv文件索引、持久化和查询
是什么?
这个实用工具在你处理20GB+的csv文件时开始变得有意义,这些文件在进入数据库之前需要一些手动预处理,或者你只是想玩玩。
你可以为任何csv列构建索引,作为文本、整数或浮点类型。索引将存储在磁盘上,通常为文本列原始大小的3%左右。解析使用优秀的csv
crate执行,在我的2014年macbook上索引64列文件时,处理速度约为800K条记录/秒(所有线程合并)。
查询通常在~100毫秒的等值查找(范围较慢)。索引是分片存储的,因此查找时间不应随着输入大小的增加而显著增加。
使用方法
构建索引
你可以选择将列索引为文本(str)、整数(int)或浮点数(float)。
USAGE:
text_index <INPUT> index <COLUMN> [TYPE]
OPTIONS:
-t <THREADS> Max number of THREADS
-v Verbose output (-v, -vv supported)
ARGS:
<COLUMN> Column number (starts at 1)
<TYPE> Type (str(default), int, float)
例如:text_index input.csv -t 4 index 1 str
查询索引
USAGE:
text_index <INPUT> filter <COLUMN> <OP> <VALUE> [VALUE2]
ARGS:
<COLUMN> Column number (starts at 1)
<OP> Operator (eq, lt, le, gt, ge, in, pre (starts with))
<VALUE> Value
<VALUE2> Value2 (when operator is `in`)
例如:text_index input.csv filter 1 eq "search_string"
未来
- 支持更多文本文件格式,如换行分隔的json或日志文件
- 多线程查询
- 支持gzip压缩的输入文件
- 交换友好的索引(限制内存使用)
依赖
~5–7MB
~114K SLoC