三种方法将 SQLite 偷偷塞进 Nix

Three ways to smuggle SQLite into Nix

三种方法将 SQLite 偷偷塞进 Nix

在 nixpkgs-multiverse 项目中,巨大的 JSON 索引文件导致 Nix 每次查询都要解析全部数据,效率低下。为了突破 Nix 原生能力的限制,我探索了三种将 SQLite 数据库引入 Nix 的巧妙方案。第一种是利用 builtins.exec 调用外部进程,虽然简单但开销较大;第二种是通过 builtins.importNative 加载自定义 C++ 共享库,实现高性能的内存级交互;第三种则是将数据直接转换为 Nix 表达式文件,利用惰性求值特性。此外,文章还探讨了新兴的 builtins.wasm 如何通过 WebAssembly 沙箱安全地运行 SQLite,为 Nix 生态的数据查询提供了新的可能性。

如果查询一个包的成本和查询所有包的成本一样,那问题就来了。

同日更多故事

2026-08-21