SQLiteをNixに密輸する3つの方法

Three ways to smuggle SQLite into Nix

SQLiteをNixに密輸する3つの方法

nixpkgs-multiverseプロジェクトは、Nixpkgsの全バージョンのインデックスをJSONファイルとして保持しているが、データが大きくなるにつれて、`builtins.fromJSON`のeagerな読み込みがボトルネックになっている。この記事では、SQLiteをNixに統合する3つの方法を紹介する。`builtins.exec`を使う方法、`builtins.importNative`で共有オブジェクトをロードする方法、そしてNixの遅延評価を利用して巨大なNixファイルを直接インポートする方法だ。それぞれにトレードオフがあり、著者は実際のコード例とパフォーマンスの考察を交えて解説する。

Nixの属性セットはソート済み配列なので、アクセスはバイナリサーチであり、スキャンではない。コストは完全にJSONのパースと値の割り当て、そして大きなファイルのダウンロードにある。
  1. Naru41

    バイナリデータ構造に変換して、昔ながらのbsearchを使えばいいだけだよ。SQLiteすら必要ないくらいシンプルだ。

  2. kevincox

    WASMのブロブにデータをコンパイルしてしまえばいいんじゃないかな。それでSQLiteよりも最適化されたクエリエンジンを使うんだ。コンパイルはかなり速いはず(WASMのほとんどはバイトバッファで、コードは数回のバイナリサーチと結果のエンコードだけだから)。欠点はリポジトリを更新するたびに再コンパイルが必要なことだけど、そんなにコストがかかるとは思わない。

  3. setheron

    質問があれば、できる範囲で答えますね。

この日のほかの記事

2026-08-21