71次发布
0.21.5 | 2024年3月11日 |
---|---|
0.21.4 | 2023年11月29日 |
0.21.1 | 2023年7月18日 |
0.20.1 | 2023年3月15日 |
0.8.0 | 2019年11月27日 |
#23 在 数据库实现
每月70次下载
在 terminusdb-10-to-11 中使用
710KB
16K SLoC
terminusdb-store,一个支持tokio的三元组数据存储库
概述
此库实现了一种存储三元组数据的方式 - 由主题、谓词和对象组成的数据,其中对象可以是某个值,也可以是一个节点(可以在主题和对象位置出现的字符串)。
三元组数据的一个例子是
cow says value(moo).
duck says value(quack).
cow likes node(duck).
duck hates node(cow).
在 cow says value(moo)
中,cow
是主题,says
是谓词,而 value(moo)
是对象。
在 cow likes node(duck)
中,cow
是主题,likes
是谓词,而 node(duck)
是对象。
terminusdb-store 允许您存储大量此类事实,并高效地搜索它们。
此库旨在作为任何希望构建包含三元组数据的数据库的人的通用基础。它对有效数据做出了非常少的假设,仅关注实际的存储方面。
此库支持tokio。所有I/O和锁定都通过futures进行,因此此库中的许多函数都返回futures。这些futures旨在在tokio运行时上运行,许多futures在tokio运行时之外将失败。如果您不想使用tokio,可以在 store::sync
中找到一个小的同步包装器,它包含自己的tokio运行时,公开一个纯同步API。
使用方法
将此添加到您的 Cargo.toml
[dependencies]
terminus-store = "0.19.2"
创建一个存储库所在的目录,然后使用以下命令打开存储库:
let store = terminus_store::open_directory_store("/path/to/store").await.unwrap();
或者使用同步包装器
let store = terminus_store::open_sync_directory_store("/path/to/store").unwrap();
有关更多信息,请访问 docs.rs上的文档。
请参阅 examples/
目录中的基本示例。
从 0.19 或更早版本升级
从版本 0.20.0 开始,terminus-store 使用新的存储格式,将所有文件打包成一个单独的存档,并支持值类型。使用 0.19 或更早版本创建的存储将无法与 0.20 或更高版本兼容。但是,有一个转换工具可以将现有的预 v20 存储转换为:terminusdb-10-to-11。
路线图
我们一直在开发 terminusdb-store,使其成为高质量、简洁的图形表示版的数据存储层。为了帮助您了解我们的项目目标,我们制定了一个路线图。如果您想协助 terminusdb-store 的开发,或者认为路线图上应该添加某些内容,请与我们联系。
许可证
terminus-store 在 Apache 2.0 许可证下授权。
贡献
也请参阅
- 为这个库编写的 Terminus 数据库:网站 - GitHub
- 此库的 prolog 绑定:terminus_store_prolog
- terminusdb-store 层格式所基于的 HDT 格式:网站
依赖项
~34–46MB
~865K SLoC