T1#open-source
SQLite 1.0 公開 ── サーバのない SQL データベース
メタデータ
- 日付
- 年代
- 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です。
出典
一次資料History Of SQLite Releases — sqlite.org
1.0(2000-08-17)、2.0.0(2001-09-28)、3.0.0(2004-06-18)の日付と、リリース総数
一次資料Release History Of SQLite — sqlite.org
2000-05-29 のアルファ公開、5〜6月の機能追加、GDBM 格納層、「SQLus」の計画と撤回、2.0 アルファ2での B-tree 化とパブリックドメイン化
2000年8月の初公開、Tcl 拡張としての配布、別プロセスのサーバのデバッグへの不満という出自、普及の規模
一次資料The Untold Story of SQLite — CoRecursive podcast, episode 66, interview with Richard Hipp
Hipp 本人の回想。DDG-79 と Informix、バイトコードへのコンパイル、Knuth の B-tree、Motorola・AOL・Symbian・Android との関わり
最終更新: