#存储 #查询 #索引 #数据库 #列索引

快捷方式

一个基于列的索引和可查询的存储系统

16 个稳定版本 (3 个主要版本)

使用旧的 Rust 2015

4.1.4 2021年3月21日
4.1.3 2018年12月4日
4.1.2 2017年1月30日
4.1.0 2016年12月1日
1.1.0 2016年6月14日

数据库实现 中排名第 76

每月下载量 50

MIT/Apache

34KB
643 行代码(不包括注释)

快捷方式

Crates.io Documentation Build Status

此包提供了一种基于列的索引和可查询的存储系统。

该存储系统在本质上是一种基于行的存储,其中所有行都具有相同数量的列。所有列都是相同的 "类型",但由于它们可以是枚举类型,因此您可以有效地使用不同类型的值。数据存储在 BTreeMap 中,其中最外层的 BTreeMap 是动态大小的(并且随着更多行的到来可能会重新分配),而最内层的 Vec 则预期不会更改。映射索引是一个自增的行标识符,类似于 SQLite 中使用的:[SQLite 行ID](https://www.sqlite.org/lang_createtable.html#rowid)。

此包有趣之处在于,它还允许您对列进行索引以进行快速查找。这些索引会在数据集更改时自动更新,以确保查询继续返回正确的结果。索引应遵循 EqualityIndex 特性或 RangeIndex 特性。正如您所期望的,前者允许加快精确查找的速度,而后者还可以执行高效的范围查询。

查询通过调用 find 并传递一组将进行 AND 操作的 Condition 来在数据集上执行。目前不支持 OR 操作 --- 相反,请发出多个查询。每个 Condition 代表对单个列中值的比较。系统会自动选择使用哪个索引来满足查询,这基于每个索引返回该列预期行数的启发式算法。

已知限制

  • 当前匹配操作的集合相当有限。
  • 当前系统只提供添加/删除抽象(即,不支持编辑)。

无运行时依赖