SQLite

SQLiteは「エスキューライト／エスキューエライト」と発音される。開発者のリチャード・ヒップ（通称: Hipp）は「エスキューエルアイト（/ˌɛsˌkjuːˌɛlˈaɪt/）」と発音している。パブリックドメインの軽量な関係データベース管理システム（RDBMS）である。

 概要 
アプリケーションに組み込んで利用するデータベースBill Lubanovic 著『入門Python3』、斉藤康毅 監訳 ・長尾高弘 訳、株式会社オライリー・ジャパン発行、オーム社 発売、2017年2月3日 初版 第6刷、246ページ。クライアントサーバシステムとは異なり、単一のライブラリファイルからAPIを利用可能。

 解説 
SQLiteとは

SQLiteを組み込んだアプリケーションの一例
 AndroidのデータストレージAPI
 Mozilla Firefox（142.x現在）（Linux）/home/$USER/.mozilla/firefox/等の個人設定フォルダ以下に拡張子.sqliteファイルがあればSQLiteを使用
 Mozilla Thunderbird（142.x現在）（Linux）/home/$USER/.thunderbird/等の個人設定フォルダ以下に拡張子.sqliteのファイルがあればSQLiteを使用

 特徴 
ストレージに互換性があれば、データベースインスタンスを格納したファイルはWindows／Linux等で共用可能。一時的な利用ならばインメモリデータベースを割り当てることも可能。ストレージまでプロトコルやプロセス間通信を用いずに直接ネイティブコードで実行することでトランザクション処理におけるレイテンシをある程度削減することに成功している。トランザクション処理を開始するとストレージはロックされセッションはキャッシュを有効利用して高速にデータベースにアクセスする。動的リンク／静的リンクに対応しており静的リンクで実行ファイルを生成しても、おおむね700KB程度（3.50.x現在）のフットプリントで充実したSQLステートメントと束縛のないデータ型を利用可能。

 著作権を放棄しパブリックドメインに帰している
 SQL92の機能の多くを実装
 データ型（3.50.x現在）
 NULL: NULL値
 INTEGER: 符号付整数
 REAL: 浮動小数点数
 TEXT: テキスト（UTF-8, UTF-16BE, UTF-16LE）
 BLOB: Binary Large Object（画像データなど）
 トランザクション、ビュー、トリガーのサポート
 全文検索モジュールのサポート（バージョン3.9.0からFTS5）
 C言語で関数を追加可能
 Android端末の標準ライブラリとして採用

ウィキブックスも参照のこと。

 開発と展開 
SQLiteのコードは同じくHippが開発したFossilでホストされている。Fossilは、非リレーショナルデータベース形式のSQLiteをローカルキャッシュとして使用し、SQLiteのSQLを実装言語として使用する分散バージョン管理システムである。

SQLiteはパブリックドメインとして著作権を放棄する一方、「オープンコントリビューション」ではないため、誰でも開発に参加することはできない。公式ウェブサイトには「このプロジェクトは、貢献をパブリックドメインに捧げる宣誓供述書を提出していない人からのパッチは受け付けない」と記載するとともに、プロジェクト創設者らは、行動規範の代わりに聖ベネディクトの戒律に基づく倫理規定を採用している。

SQLiteの配布物には、 sqlite3 と呼ばれるスタンドアロンのコマンドライン シェルプログラムが付属している。このプログラムを使用して、データベースの作成、テーブルの定義、行の挿入と変更、クエリの実行、SQLiteデータベースファイルの管理を行うことができる。また、SQLiteライブラリを使用するアプリケーションを作成するためのサンプルとしても役立つよう設計されている。

 歴史 
Hippは2000年春、アメリカ海軍との契約に基づき勤務していたジェネラル・ダイナミクス社に在籍中、SQLiteを設計した。彼はミサイル駆逐艦のダメージコントロールシステムに使用されるソフトウェアを設計しており、これは当初HP-UXとInformixデータベースをバックエンドとして利用していた。SQLiteはTcl拡張機能として開発が始まった。

2000年8月、SQLiteのバージョン1.0がリリースされた。ストレージはgdbm（GNU Database Manager）をベースにしていた。

2001年9月、SQLite 2.0はgdbmをカスタムBツリー実装に置き換え、トランザクション機能を追加した。

2001年から2002年頃、最初期の大規模な開発と利用はモトローラの携帯電話であった。その後ノキアのSymbianへの採用が決まって大口顧客になると、携帯電話メーカーからの支持も高まった。

2004年6月、AOLの資金提供を受けて、SQLite 3.0では国際化、マニフェスト型付け、およびその他の主要な改良点を追加した（AOLは当時プロバイダへの加入を促すCD-ROMを配布しており、そのプログラムにSQLiteを組み込んでいた）。

2007年12月、Mozilla FoundationやSymbianと共同でSQLiteコンソーシアムを設立した。同時期にAndroidの標準ライブラリに採用されたことや、同じくiPhoneでも採用されるなどしたことで、スマートフォンの爆発的な普及とともにSQLiteも広がった。

2011年、HippはSQLiteにNoSQLインターフェースを追加する計画を発表し、ドキュメント指向データベース向けに設計されたSQLの機能的スーパーセットであるUnQLも発表した。

 テストと信頼性 
SQLiteは、各リリースの前に自動回帰テストを実施しており、その一環として200万以上のテストが実施されている。SQLiteライブラリのソースコードは約156,000行あるが、すべてのテスト用コードを合わせると9,200万行になる。SQLiteのテストでは、ライブラリの機能性をテストするだけでなく、突然の停電による電源喪失やI/Oエラーなどの様々な例外的なシナリオをシミュレートしており、データベース更新中に電源を遮断してもデータに破損が無いことが証明できることを目指している。2009年8月10日のSQLite 3.6.17リリース以降、SQLiteリリースはコードカバレッジの構成要素の一つであるブランチテストカバレッジが100%となっている。

SQLiteには、オリジナルのパブリックドメインTCLテスト、独自のC言語TH3テストスイート、SQLiteを他のSQLデータベースと比較するSQLロジックテスト、そして独自のファジングエンジンdbsqlfuzzの4つの異なるテストハーネスがある。公式サイトでは、こうした徹底的なテストを行うことによってミッションクリティカルな利用にも耐え得るとしている。実際SQLiteはデータセットの長期保存に推奨される4つの形式の1つとしてアメリカ議会図書館が使用を承認している。

 脚注 

 書籍 
 The Definitive Guide to SQLite 2006/06/19, ISBN 1-59059-673-0
 SQLite 入門 2005/09, ISBN 4-7981-0943-6
 PHP+SQLite実践サンプルブック 2005/07, ISBN 4-88337-429-7
 改訂版PHPポケットリファレンス 2005/09, ISBN 4-7741-2502-4
 SQLite 入門 第2版 2009/05, ISBN 978-4-7981-1944-1
 SQLiteポケットリファレンス 2010/10, ISBN 978-4-7741-4394-1
 Android UIデザイン＆データベースプログラミング 2011/06, ISBN 978-4-88337-761-9

 外部リンク 

 DB Browser for SQLite - GUI管理ツール
 SQLiteSpy - GUIによる閲覧・編集
 SQLite ODBC Driver - ODBCドライバ
 Database Master
 DaDaBIK Database Interfaces Kreator

Category:データベース管理システム
Category:ライブラリ (プログラミング)
Category:パブリックドメインソフトウェア
Category:2000年のソフトウェア