3 个版本
0.1.2 | 2021 年 9 月 21 日 |
---|---|
0.1.1 | 2020 年 7 月 19 日 |
0.1.0 | 2020 年 7 月 19 日 |
#2375 in 数据库接口
用于 extremedb
68KB
1.5K SLoC
extremedb_sys
为 Rust 编写的 McObject eXtremeDB 的低级 FFI 绑定。
此包包含 eXtremeDB C API 函数的低级、不安全的 Rust 声明,以及与其 C 对应的结构和枚举。大多数应用程序永远不会直接调用此包中声明的函数。
在构建此包之前,必须设置一些环境变量。有关详细信息,请参阅文档。
请注意,构建此包需要现有的 eXtremeDB 8.2 安装。可以在 McObject 网站 请求评估版 eXtremeDB 包。
lib.rs
:
extremedb_sys
是 McObject 的 eXtremeDB 数据库管理系统库的低级 FFI 包装器。
此 crate 包含 eXtremeDB API 函数的 Rust 声明以及一个 Cargo 构建脚本,该脚本定位并链接适当的 eXtremeDB 库。
链接的 eXtremeDB 库的集合取决于配置。有关详细信息,请参阅下面的讨论。
配置
本机 eXtremeDB 应用程序必须链接到多个 eXtremeDB 库。既可以进行静态链接,也可以进行动态链接。其中一些库可以互换,应用程序根据其需求选择适当的库。例如,应用程序可以选择支持的其中一个事务管理器:Exclusive、MURSIW 或 MVCC。还有一些其他功能需要链接特定的库。有关更多详细信息,请参阅 eXtremeDB 参考手册。
这种方法对应用程序的性能有益,因为它们可以避免链接不需要的库。此外,无需动态分派:如果应用程序链接了 MURSIW 事务管理器库,则其函数将被直接调用。
然而,这种方法与Rust的典型构建过程并不完全兼容。大多数包选择使用Cargo 功能 来启用可选功能。这些功能被设计成可添加的,不能相互排斥。因此,extremedb_sys
使用环境变量进行配置。
环境变量
extremedb_sys
需要设置以下所有变量。由于适当功能的选取对应用的正确运行至关重要,这些变量没有默认值。如果其中任何一个缺失,构建过程将被终止。
MCO_ROOT
:eXtremeDB根目录的路径。MCORS_CFG_DYLIB
:定义如何链接eXtremeDB库0
:静态;1
:动态。
MCORS_CFG_DPTR
:选择eXtremeDB实现库0
:偏移库;1
:直接指针库。
MCORS_CFG_DISK
:配置数据库持久化0
:内存数据库;1
:磁盘或混合模式数据库。
MCORS_CFG_SHMEM
:配置共享内存支持0
:常规内存;1
:共享内存。
MCORS_CFG_TMGR
:选择事务管理库excl
(独占);mursiw
;mvcc
.
功能
可以使用Cargo功能启用非互斥选项。
以下功能得到支持。应用不需要显式设置它们;它们由extremedb
crate配置。
sequences
— 序列(垂直存储)。sql
— SQL引擎(本地和远程)。
无运行时依赖
~140KB