3 个版本

0.1.2 2021 年 9 月 21 日
0.1.1 2020 年 7 月 19 日
0.1.0 2020 年 7 月 19 日

#2375 in 数据库接口


用于 extremedb

MIT 许可证

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