asopi tech
asopi techIndie Developer
Alopex DB v0.8.16:他社製品との性能比較

【2026年10月版】

Alopex DB v0.8.16:他社製品との性能比較

公開日: 2026/10/27
読了時間: 約 9分

はじめに

私たちは Alopex DB を Rust で開発し、DataFrame、SQL、KV、ベクトル検索を一つのエンジンで扱えるようにしています。Python からも利用できる API を用意し、後発の DB 開発者として既存の製品やライブラリとの性能比較を重要な開発指標にしています。

概要と結論

Alopex DB v0.8.16 を、単一ホストの Python API を使った固定ケースで Polars、SQLite、PostgreSQL、DataFusion、LMDB、hnswlib、Faiss HNSW と比較しました。DataFrame の構築と embedded KV の永続書き込みは比較対象より速い一方、DataFrame の計算、SQL、KV の読み取り、HNSW 検索は比較対象より遅い結果でした。

比較の前提条件

項目条件
対象バージョンPython wheel alopex==0.8.16、alopex-server 0.8.16
実行環境AMD Ryzen 5 3500U、Linux x86_64 / WSL2、Python 3.11.11
測定方法固定データを使い、各 trial の p50 を求め、3 trials の中央値で比較
SQL の比較Alopex DB と PostgreSQL を同一ホストの server/client 構成で実行し、既存接続を再利用
KV の比較Alopex DB と LMDB の embedded Python API を同一 CPU 上で実行
cachewarm cache

結果の適用範囲は単一の共有ホスト、固定データ、Python API です。Rust API、分散処理、並行負荷、cold disk I/O、メモリを超えるデータ規模は測定していません。

何を測ったか

比較対象API の種別比較した操作
PolarsDataFrame APIPython データからの構築、構築後の列計算、Python dict への変換、これらを含む複合操作
PolarsLazy・streaming APICSV・Parquet の読み取り、列計算、collect、全 batch の取得
SQLiteSQL APISELECT、transaction、savepoint、prepared query、制約付き INSERT
PostgreSQLSQL API集計、並べ替え、全結果取得、永続書き込み、point read、更新、削除
DataFusionSQL streaming API条件に一致する行の取得と全結果の消費
LMDBembedded KV API永続書き込み、point read、上書き、削除、範囲走査
hnswlib・Faiss HNSWHNSW 検索 API同じ検索精度を満たす条件での top-10 検索

DataFrame のランダムアクセスとファイルへの書き込み・出力は、今回も測定していません。

性能比較の結果

表の時間比は「Alopex DB の時間 ÷ 比較対象の時間」です。1 未満なら Alopex DB が速く、1 を超える場合は比較対象が速いことを示します。実測時間は各 trial の p50 を求め、3 trials の中央値を取った値です。処理結果が一致した測定のみを掲載しています。

DataFrame とファイル読み取り

比較対象評価ケースAlopex DB の時間比較対象の時間時間比
PolarsPython データから DataFrame を構築18.270 ms557.278 ms0.033
Polars構築済み DataFrame の 12 列計算・collect5.405 ms3.286 ms1.645
Polars計算済み 12 列を Python dict へ変換9.975 ms10.111 ms0.987
Polars構築+中間結果・最終結果の具体化214.644 ms775.785 ms0.277
Polars旧複合操作(構築・計算・Python 変換を含む)171.293 ms1,264.226 ms0.135
PolarsLazy CSV・12 列計算→collect13.843 ms7.226 ms1.916
PolarsLazy CSV・12 列計算→全 batch 取得15.149 ms7.790 ms1.945
PolarsLazy Parquet・数値等 11 列→collect2.916 ms3.559 ms0.819
PolarsLazy Parquet・数値等 11 列→全 batch 取得3.648 ms4.257 ms0.857
PolarsCSV streaming 全消費16.798 ms7.299 ms2.301
PolarsParquet streaming 全消費4.984 ms4.795 ms1.039

DataFrame の構築は Alopex DB が速く、構築後の計算は Polars が速い結果でした。複合操作には構築、計算、explode、concat、Python 変換が含まれるため、計算性能だけの比較ではありません。処理別の結果は表の各行で確認できます。

Python dict への変換は試行ごとの幅が重なっており、優劣を判断できません。ファイル読み取りでは、CSV は Polars が速く、今回測定できた Parquet の処理は Alopex DB が速い結果でした。

Polars と同名の select、Series の直接構築と加算、LazyFrame の直接構築、scan_csv、scan_parquet は v0.8.16 で未対応です。Alopex DB 独自の static scan では Lazy 比較を実行できましたが、Parquet の文字列連結を含む 12 列計算は Utf8 と LargeUtf8 の型不一致で失敗しました。私たちは、この 6 つの API・操作と Parquet の文字列計算について、Polars 互換を満たしたとは扱いません。

SQL

比較対象評価ケースAlopex DB の時間比較対象の時間時間比
SQLiteSELECT・transaction・savepoint・prepared query・制約付き INSERT33.740 ms3.533 ms9.551
PostgreSQLCOUNT72.274 ms5.353 ms13.501
PostgreSQLORDER BY id LIMIT 1636.333 ms1.339 ms27.132
PostgreSQL17,125 行の全結果取得242.455 ms42.426 ms5.715
PostgreSQLINSERT RETURNING+rollback5.289 ms2.948 ms1.794
PostgreSQL単件 INSERT+commit9.302 ms4.336 ms2.145
PostgreSQL100 行 INSERT+commit20.754 ms6.200 ms3.347
PostgreSQLrandom get hit・100 回294.737 ms119.212 ms2.472
PostgreSQLrandom get miss・100 回283.025 ms107.088 ms2.643
PostgreSQLrandom UPDATE+commit11.620 ms4.604 ms2.524
PostgreSQLrandom DELETE+commit220.362 ms4.403 ms50.053
DataFusionSQL streaming 全消費59.427 ms1.277 ms46.522

SQL は、今回測定したすべてのケースで比較対象より時間がかかりました。特に DataFusion と比較した連続読み取りと、PostgreSQL と比較した削除に大きな差があります。読み取りから書き込みまで、SQL 全体の改善が必要です。

DataFusion との比較では、Alopex DB は Python 行、DataFusion は Arrow batch を返します。表の値には SQL の実行だけでなく、結果形式への変換と Python 側での全結果消費も含まれます。

embedded KV と HNSW 検索

比較対象評価ケースAlopex DB の時間比較対象の時間時間比
LMDB単件 PUT+commit0.996 ms2.137 ms0.466
LMDB順次 100 件 PUT+commit4.529 ms5.818 ms0.778
LMDB投入順 shuffle・100 件 PUT+commit4.272 ms5.462 ms0.782
LMDBrandom get hit・100 回1.257 ms0.188 ms6.700
LMDBrandom get miss・100 回0.241 ms0.181 ms1.334
LMDBrandom overwrite+commit1.061 ms2.560 ms0.415
LMDBrandom DELETE+commit1.104 ms2.425 ms0.455
LMDB範囲走査 1,000 件・全値取得8.797 ms0.502 ms17.538
hnswlibHNSW 検索・recall 0.99 以上152.374 µs50.534 µs3.015
Faiss HNSWHNSW 検索・recall 0.99 以上152.374 µs56.790 µs2.683

embedded KV は永続書き込み、上書き、削除で LMDB より速い結果でした。今回の固定ケースでは Alopex DB v0.8.16 の強みです。一方、単件の読み取りと範囲走査は LMDB が速く、書き込みと読み取りで対照的な結果になっています。

HNSW はすべての製品が基準とした検索精度を満たしました。その条件では Alopex DB の検索時間が長く、精度を維持したまま高速化する必要があります。

今後の改善

次の開発では SQL streaming と random DELETE を優先して改善します。SQL の読取・書込全般、KV の point read と範囲走査、DataFrame の計算、Lazy CSV、Parquet の文字列計算、未対応の Polars 互換 API も改善対象です。HNSW は recall 0.99 以上を維持しながら検索時間を短縮します。

改善後も同じ入力と API 境界で測定し、数値を公開します。

まとめ

Alopex DB v0.8.16 は、DataFrame の構築と embedded KV の永続書き込みに強みがあります。DataFrame の計算、SQL、KV の読み取り、HNSW 検索には改善が必要です。Polars 互換 API にも未対応の操作があります。

私たちは今回の結果を基準値として改善を進め、変更後の性能も公開します。