LumoSQL:SQLite的现代化升级,增强安全与性能
LumoSQL 是一个基于 SQLite 内嵌数据存储库的修改项目,旨在为 SQLite 增加安全、隐私、性能和测量等功能。该项目目前处于第二阶段。与其他项目的硬分支不同,LumoSQL 不会分支 SQLite 代码,而是通过一个创新的“不分支”工具(Not-forking),在不影响原版 SQLite 的情况下,引入改进功能并持续跟踪上游代码的变化。 主要特点与进展 可插拔的后端 LumoSQL 支持动态更换后端键值存储引擎,例如 LMDB 和 Oracle Berkeley DB。这一特性允许 LumoSQL 结合不同的版本进行性能测试和比较。LumoSQL 0.4 版本中已支持三种后端:native SQLite、LMDB 和 Berkeley DB。 安全与防 Corruption 检测 LumoSQL 引入了现代加密技术,包括行级别的属性加密(Attribute-Based Encryption, ABE)。每行数据还会生成校验和,使任何错误都能被迅速发现并定位到具体行。这不仅能提高安全性,还能加快某些查找和比较操作的速度。 性能测试 LumoSQL 提供了详细的性能测试框架,能够跨多种系统和配置测试 SQLite 的性能。通过“不分支”工具,测试结果具有很高的可比性和一致性。例如,使用 make benchmark 命令可以轻松进行基准测试,单个测试通常在 4 分钟内完成,具体时间取决于硬件配置。初步结果显示,SQLite 3.35.5 在处理小数据量时更快,但在处理大数据量时与 3.33.0 相比稍慢。然而,深入的测试表明这个结论可能过于简单化。 开发环境与依赖 开发者需要安装一些基础工具,如 Git 和基本的 Unix 风格开发工具。LumoSQL 还额外需要一个 Perl 脚本的“不分支”工具和 Fossil 源码管理工具。不同操作系统的安装步骤有细微差异,但一般都可以通过标准包管理器轻松安装。 建立与基准测试 克隆仓库:使用 Fossil 克隆 LumoSQL 仓库 fossil clone https://lumosql.org/src/lumosql,这将在当前目录下创建一个名为 lumosql 的子目录和文件 lumosql.fossil。 检查默认设置:进入 lumosql 目录并运行 make what,查看默认的源代码和选项。 基准测试:使用 make benchmark 命令进行基准测试,例如测试官方 SQLite 3.35.5 版本的性能 make benchmark USE_LMDB=no USE_BDB=no SQLITE_VERSIONS='3.35.5'。结果会被存储在 LumoSQL 顶层目录的 benchmarks.sqlite 数据库中。 发展背景 2013 年,Howard Chu 发布了他将 SQLite 与 LMDB 结合的证明概念代码,引发了广泛关注。LumoSQL 团队随后挖掘出这些老代码,并在此基础上进行扩展。自 2020 年初以来,LumoSQL 项目取得了显著进展,探索了许多新的可能性,并与多家公司建立了合作。 社区与支持 LumoSQL 采用了非常宽松的 MIT 许可证,得到了 NLNet 基金会的支持。它可以在 x86、ARM-32 和 RISC-V 架构上运行,并支持多种 Linux 和 BSD 操作系统。社区活跃,提供了论坛和支持,方便开发者参与和贡献代码。 业内人士评价 LumoSQL 项目展示了 SQLite 可能需要多年才能实现的功能改进,如增强的安全性和隐私保护、动态后端切换以及行级别的校验和。这一项目对于需要先进功能而又不想等待 SQLite 核心团队逐步推进的用户来说,是一个有价值的解决方案。此外,LumoSQL 的“不分支”工具也为其他项目提供了便利,使其能够在不影响主项目的情况下集成新功能。 NLNet 基金会对 LumoSQL 的支持也体现了该项目的重要性和潜力。作为 SQLite 的一个重要补充,LumoSQL 有望在未来推动数据库技术的发展。
