SQLite: Past, Present, and Future
(vldb.org)- PVLDB Vol 15に掲載された、SQLiteの未来に関する論文
- SQLiteはOLTP向けに設計されたが、近年はエッジコンピューティングやデータサイエンスの影響でOLAPへのニーズが高まっている
- OLAPで高い性能を示すDuckDBは「SQLite for Analytics」と呼ばれている
- SQLiteとDuckDBの性能を比較し、これを通じて分析データ処理を改善してSSBで4.2x高速化した内容を整理
- ベンチマークの内容
- 書き込みトランザクションではSQLiteがDuckDBより10x-500x高速
- 分析ベンチマーク(Star Schema Benchmark, SSB)ではDuckDBがSQLiteより30-50x高速
- 継続的に改善していく予定だが、そもそもの目的自体が異なるため、同等の性能を実現するのは難しい
- 別の方法として、SQLite3/HEではOLTP性能を低下させることなくSSBで100xの性能を実現
- こうした試みを通じてエンジンの性能を改善し、最適化を追加していく
2件のコメント
この論文にはいろいろな内容がありますが、OLAP処理を改善して関連ベンチマークを向上させたという点について、具体的にどう実現したのか気になり、原文を少し読んでみました。
結論から言うと、その改善内容は、データ分析に使われるクエリのjoin処理を改善するためにブルームフィルタを導入した、というものでした。
SQLiteでOLAPベンチマークに使ったクエリをプロファイリングした結果、実際の最終結果にはまったく含まれない部分までB-treeデータ構造を探索していたそうです。そこで、最終結果に含まれない部分を事前に選別して処理するため、特定の要素が存在しないことを確実に判定できる確率的データ構造であるブルームフィルタを追加した、というのがこの改善の主な内容でした。
このあたりで読んでおきたいブルームフィルタの紹介記事をいくつか。
そして最近はXor Filterというものも登場しているそうです。
SQLite DuckDB論文に関するメモ
DuckDB - 組み込みOLAP DBオープンソース