高性能嵌入式DBMS libmdbx 0.11.3发布

libmdbx 0.11.3 (MDBX) 库发布,实现了高性能紧凑型嵌入式键值数据库。 libmdbx 代码已获得 OpenLDAP 公共许可证的许可。支持所有当前的操作系统和架构,以及俄罗斯 Elbrus 2000。到 2021 年底,libmdbx 将在两个最快的以太坊客户端 - Erigon 和新的“Shark”中用作存储后端,根据可用信息信息,是性能最高的以太坊客户端。

从历史上看,libmdbx 是 LMDB DBMS 的深度改造,在可靠性、功能集和性能方面优于其祖先。 与 LMDB 相比,libmdbx 非常重视代码质量、API 稳定性、测试和自动化检查。 提供了一个实用程序,用于检查数据库结构的完整性,并具有一些恢复功能。

在技​​术方面,libmdbx 提供 ACID、强大的更改序列化和跨 CPU 内核线性扩展的非阻塞读取。支持自动压缩、自动数据库大小管理和范围查询估计。自2016年起,该项目得到Positive Technologies的资助,并自2017年开始在其产品中使用。

libmdbx 提供 C++ API,以及爱好者支持的 Rust、Haskell、Python、NodeJS、Ruby、Go 和 Nim 语言绑定。

自 11 月 XNUMX 日发布消息以来新增的主要创新、改进和修正:

  • C++ API 被认为可以使用。
  • 提交巨大交易时GC数据的更新显着加快,这在以太坊生态系统中使用libmdbx时尤其重要。
  • 数据库格式的内部签名已更改,支持自动更新,这对用户完全透明。当使用过时版本的库读取当前版本记录的事务时,这允许您消除有关数据库损坏的误报消息。
  • 添加了函数 mdbx_env_get_syncbytes()、mdbx_env_get_syncperiod() 和 mdbx_env_get_syncbytes()。添加了对 MDBX_SET_UPPERBOUND 操作的支持。
  • 在 C++ 11/14/17/20 模式下使用所有支持的编译器进行构建时的所有警告均已消除。确保与旧版编译器的兼容性:从 3.9 开始使用 clang,从 4.8 开始使用 gcc,包括针对 CentOS/RHEL 9 使用 cdevtoolset-7 进行汇编。
  • 修复了使用 mdbx_chk 实用程序手动切换到特定元页面后发生元页面冲突的可能性。
  • 修复了覆盖旧元页面时返回的意外 MDBX_PROBLEM 错误。
  • 修复了在处理 MDBX_GET_BOTH 请求时出现不精确匹配时返回 MDBX_NOTFOUND 的问题。
  • 修复了 Linux 上缺少包含内核接口描述的头文件的编译错误。
  • 修复了 MDBX_SHRINK_ALLOWED 内部标志和 MDBX_ACCEDE 选项之间的冲突。
  • 一些不必要的断言检查已被消除。
  • 修复了 mdbx_env_set_option() 函数意外返回 MDBX_RESULT_TRUE 的问题。
  • 总共对 90 个文件进行了 25 多项更改,添加了约 1300 行,删除了约 600 行。

来源: opennet.ru

添加评论