T1#open-source

SQLite 1.0 公開 ── サーバのない SQL データベース

出典D. Richard Hipp; SVG conversion by Mwtoews (Wikimedia Commons) · Public domain · Commons で見る ↗

メタデータ

日付
年代
2000s
Tier
T1
出典数
09
関連項目
00
Tags
#open-source

2000年8月17日、D. Richard Hipp は SQLite という小さなライブラリのバージョン1.0を公開した。プロジェクトの変更履歴は1.0にただ1行を充てている ── sqlite シェルが、書き込み権限の無いデータベースも読めるようになった、という修正である。発表会のようなものは無かった。それから四半世紀、sqlite.org は使用中の SQLite データベースが1兆個を超えるとみられると推計している。

その発想は、この年表のそれまでの流れと逆を向いていた。System R や Oracle から MySQL、PostgreSQL まで、SQL データベースとは通常サーバ ── アプリケーションが接続しにいく専用のプロセス ── だった。SQLite はエンジン全体をアプリケーションの内側に置いた。

駆逐艦と Informix サーバ

誕生の経緯は Hipp 自身が、ポッドキャスト CoRecursive のインタビューで語っている。彼は Bath Iron Works の契約者として、ミサイル駆逐艦 DDG-79「オスカー・オースティン」のソフトウェアを手がけていた。扱っていたのはダメージコントロールで、配管が破れたとき、損傷を隔離するためにどの弁を閉め、艦の機能を保つためにどの弁を開けるかを割り出す。そのデータを Informix のデータベースサーバから読んでいた。

Informix は、動いているあいだはよく動いた。しかし時々サーバが落ち、そうなるとアプリケーションも動かない。操作員の画面には、データベースサーバに接続できないというダイアログが出る。サーバは自分たちの管理外なのに、そのダイアログを描いているのが自分たちである以上、非難はこちらに来た、と Hipp は振り返る。

そのアプリケーションはトランザクションを処理していたわけではない。データをまとめてメモリに読み込み、問題を解いていただけだった。そこで Hipp は、なぜサーバが要るのか、ディスクから直接読めばいいではないか、と考えたという。そう動く SQL エンジンを探したが見つからず、同僚には、自分で書いてみたらどうかと勧められた。

Hipp も共著者に名を連ねる2022年の VLDB 論文は、同じ出自を一文で記している。SQLite は、別プロセスで動くデータベースサーバをデバッグする苛立ちから生まれた、と。

どう作られたか

Hipp はすぐには取りかからなかった。本人の記憶では、2000年に政府契約の資金が途切れ、数か月仕事が無くなった時期にエンジンを書いた。コンパイラを作った経験から、彼はこれをコンパイラの問題として扱った。SQL 文をひとつのプログラムとみなし、問い合わせを実行するバイトコードエンジンを書き、SQL をそのバイトコードへ翻訳するコンパイラを書く。

変更履歴を見ると、形になる速さがわかる。

日付sqlite.org の変更履歴の記載
2000年5月29日アルファ版コードの最初の公開
2000年5月30日LIKE と GLOB 演算子。PostgreSQL にならった COPY 命令で、pg_dump の出力を読めるようにした
2000年5月31日COUNT(*) や MIN() などの集約関数、SELECT DISTINCT
2000年6月2日更新前にデータベースファイルをロック。コードを beta と呼び始める
2000年6月6日UNION・INTERSECT・EXCEPT、式の中の副問い合わせ、IN・BETWEEN・GROUP BY・HAVING
2000年8月17日バージョン1.0

SQLite 1.0 は、今日の SQLite とは少し違う。当初は Tcl 言語の拡張として配布され、データの格納には GNU のデータベースマネージャ GDBM を使っていた。変更履歴には、VACUUM が gdbm_reorganize() を呼ぶと書かれている。

「SQLus」への寄り道と2.0

変更履歴には、実現しなかった計画も残っている。2001年7月23日の1.0.32は、ページャと B-tree のサブシステムを SQLite から取り除き、それらは「SQLus」という後続の SQL サーバライブラリで使う予定だと記した。2か月後、計画は覆る。2001年9月20日の2.0アルファ2の項は、ライブラリを SQLus に改名する案を取りやめ、SQLite の名を保ってメジャーバージョンを上げることにしたと書いている。

このリリースは3つのことを同時に変えた。ページャと B-tree が唯一の格納層になり、GDBM とメモリ上のドライバが取り除かれ、そして全コードの著作権が放棄されてライブラリはパブリックドメインになった。2.0.0 は2001年9月28日に続く。B-tree について Hipp は、書棚から Donald Knuth の『The Art of Computer Programming』を下ろし、その探索の章にあるアルゴリズムの記述をもとに書いたと語っている。

3.0.0 は2004年6月18日に出た。本稿執筆時点で、sqlite.org のリリース履歴には372のリリースが並び、最新は2026年7月24日の3.53.4である。

スマートフォン以前の携帯電話

SQLite の普及は、まだスマートフォンとは呼ばれていなかった機器から始まった。Hipp は、Palm Pilot で SQL データベースが動いたというニュースグループへの投稿を覚えている。続いて Motorola から電話があり ── 時期について本人は2002年か2001年と幅を持たせている ── 新しい携帯電話 OS に SQLite を組み込みたいので保守を頼めないか、と依頼された。AOL も改良の契約を持ちかけた。Nokia の携帯電話の OS である Symbian は、10種のデータベースエンジン(ほかのオープンソース2種と独占製品7種を含む)を比較評価し、SQLite が勝ったうえで、彼をロンドンへ招いた。2005年ごろには、Android チームとの打ち合わせに臨んでいる。その試作機には、まだ BlackBerry のようなキーボードが付いていたという。

この話に登場するプラットフォームのうち、Symbian と iPhone には記事がある。

「最も広く使われている」の根拠

sqlite.org は、SQLite がすべての Android 端末、すべての iPhone と iOS 端末、すべての Mac、すべての Windows 10/11、Firefox・Chrome・Safari の各ブラウザ、PHP と Python に含まれていると記している。1兆という数字の算術も明示されている。使用中のスマートフォンが40億台を超え、それぞれが数百の SQLite データベースファイルを持つ、という見積もりである。

この主張には、同じページで留保が付いている。sqlite.org の最善の推測は、SQLite は libz に次いで2番目に広く配備されたソフトウェアライブラリだというもので、正確な順位付けは不可能だとも書く。VLDB 論文も、SQLite はあらゆる種類のなかで最も広く配備されたライブラリの一つと推定される、という言い方にとどめている。

アーカイブ形式としてのデータベースファイル

海軍向けの出自から、ライブラリの役割がどれほど広がったかを示す事実が2つある。米国議会図書館は SQLite を、データセットの推奨保存形式(Recommended Storage Format)に挙げている。sqlite.org が2018年にそのページを書いた時点で、データセット向けの推奨形式はほかに XML・JSON・CSV しか無かった。そしてプロジェクトは、2050年まで SQLite を保守する意図を表明しており、ファイル形式を安定させ、32ビット・64ビット、ビッグエンディアン・リトルエンディアンのどの環境でもファイルがビット単位で同一になるようにしている。

コードは今もパブリックドメインにある。sqlite.org によれば、すべてのコード作者が自らの貢献をパブリックドメインに捧げる宣誓供述書に署名しており、その原本は Hwaci の本社の耐火金庫に保管されている。

艦船のダメージコントロール用ソフトウェアから生まれた設計 ── サーバのプロセスを持たず、エンジンをプログラムに直接リンクする ── は、SQL データベースを、アプリケーションが接続しにいくものから、アプリケーションがただ内に抱えるものへと変えた。

よくある質問

SQLite が最初にリリースされたのはいつか
バージョン1.0は2000年8月17日です。それに先立つアルファ版のコードは2000年5月29日に公開されています。
SQLite を作ったのは誰で、なぜ作ったのか
D. Richard Hipp です。米海軍の駆逐艦向けソフトウェアで使っていた Informix のサーバが落ちると自分たちのアプリケーションが動かなくなる経験から、サーバの要らない SQL エンジンを書きました。
SQLite は最初からパブリックドメインだったのか
いいえ。sqlite.org の変更履歴では、全コードの著作権を放棄してパブリックドメインにしたのは2001年9月20日の2.0アルファ2です。

出典

  1. 一次資料History Of SQLite Releases — sqlite.org

    1.0(2000-08-17)、2.0.0(2001-09-28)、3.0.0(2004-06-18)の日付と、リリース総数

    取得日: 2026-10-03

  2. 一次資料Release History Of SQLite — sqlite.org

    2000-05-29 のアルファ公開、5〜6月の機能追加、GDBM 格納層、「SQLus」の計画と撤回、2.0 アルファ2での B-tree 化とパブリックドメイン化

    取得日: 2026-10-03

  3. 一次資料SQLite: Past, Present, and Future — K. P. Gaffney, M. Prammer, L. Brasfield, D. R. Hipp, D. Kennedy, J. M. Patel, PVLDB 15(12), 3535–3547, 2022

    2000年8月の初公開、Tcl 拡張としての配布、別プロセスのサーバのデバッグへの不満という出自、普及の規模

    取得日: 2026-10-03

  4. 一次資料The Untold Story of SQLite — CoRecursive podcast, episode 66, interview with Richard Hipp

    Hipp 本人の回想。DDG-79 と Informix、バイトコードへのコンパイル、Knuth の B-tree、Motorola・AOL・Symbian・Android との関わり

    取得日: 2026-10-03

  5. 一次資料Most Widely Deployed and Used Database Engine — sqlite.org

    取得日: 2026-10-03

  6. 一次資料SQLite Is Public Domain — sqlite.org

    取得日: 2026-10-03

  7. 一次資料LoC Recommended Storage Format — sqlite.org

    取得日: 2026-10-03

  8. 一次資料Long Term Support — sqlite.org

    取得日: 2026-10-03

  9. 三次資料SQLite — Wikipedia

    取得日: 2026-10-03

最終更新:

共有