SQLiteは、リチャード・ヒップ(通称: Hipp)により開発された、パブリックドメインの軽量なRDBMSである。クライアントサーバモデルと異なり、単一ライブラリファイルのAPIを利用する。
概要 SQLiteは、「エスキューライト/エスキューエライト」と発音する。Hippは「エスキューエルアイト(/ˌɛsˌkjuːˌɛlˈaɪt/)」と発音している。
SQLiteとは(公式HPより翻訳)
SQLiteを組み込んだアプリケーションの一例 AndroidのデータストレージAPI Mozilla Firefox(142.x現在)(Linux)/home/$USER/.mozilla/firefox/等の個人設定フォルダ以下に拡張子.sqliteファイルがあればSQLiteを使用 Mozilla Thunderbird(142.x現在)(Linux)/home/$USER/.thunderbird/等の個人設定フォルダ以下に拡張子.sqliteのファイルがあればSQLiteを使用
特徴 サムネイル|SQLiteアーキテクチャ ストレージに互換性があれば、データベースファイルはWindows/Linux等で共用可能。一時的な利用ならば、インメモリデータベースを割り当てることも可能。ストレージまでプロセス間通信などを用いず、直接ネイティブコードで実行することで、トランザクション処理におけるレイテンシをある程度削減することに成功している(トランザクション処理時、ストレージはロックされ、セッションはキャッシュを有効利用して高速にデータアクセスする)。動的リンク/静的リンクに対応しており、静的リンクで実行ファイルを生成しても700KB程度(3.50.x現在)のフットプリントで、充実したSQLステートメントと束縛のないデータ型を利用可能である。
データ型(3.50.x現在) NULL: NULL値 INTEGER: 符号付整数 REAL: 浮動小数点数 TEXT: テキスト(UTF-8, UTF-16BE, UTF-16LE) BLOB: Binary Large Object(画像データなど) SQL92の機能の多くを実装。トランザクション、ビュー、トリガーのサポート 全文検索モジュールのサポート(バージョン3.9.0からFTS5) C言語で関数を追加可能
ウィキブックスも参照のこと。
開発と展開 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, SQLite 入門 2005/09, PHP+SQLite実践サンプルブック 2005/07, 改訂版PHPポケットリファレンス 2005/09, SQLite 入門 第2版 2009/05, SQLiteポケットリファレンス 2010/10, Android UIデザイン&データベースプログラミング 2011/06,
外部リンク
DB Browser for SQLite - GUI管理ツール SQLiteSpy - GUIによる閲覧・編集 SQLite ODBC Driver - ODBCドライバ Database Master DaDaBIK Database Interfaces Kreator