SQLite
|
| |
|
| |
| 開発元 | リチャード・ヒップ |
|---|---|
| 初版 | 2000年8月17日 |
| 最新版 |
3.51.0[1] |
| リポジトリ | |
| プログラミング 言語 | C |
| 対応OS | クロスプラットフォーム |
| 種別 | 関係データベース管理システム |
| ライセンス | パブリックドメイン |
| 公式サイト |
sqlite |
SQLite(エスキューライト[2]、エスキューエライト[3]、なお、開発者のリチャード・ヒップ(通称: Hipp)はエスキューエルアイト(/ˌɛsˌkjuːˌɛlˈaɪt/[4][5][6])と発音している)は、パブリックドメインの軽量な関係データベース管理システム (RDBMS) である。
概要
[編集]サーバではなくアプリケーションに組み込んで利用されるデータベースである[7]。一般的なRDBMSと違いAPIは単純にライブラリを呼び出すだけでありデータの保存に単一のファイルのみを使用することが特徴である。全文検索モジュールとしてバージョン3.9.0からFTS5がサポートされている。
開発と展開
[編集]SQLiteのコードは同じくHippが開発したFossilでホストされている。Fossilは、非リレーショナルデータベース形式のSQLiteをローカルキャッシュとして使用し、SQLiteのSQLを実装言語として使用する分散バージョン管理システムである。
SQLiteはパブリックドメインとして著作権を放棄する一方、「オープンコントリビューション」ではないため、誰でも開発に参加することはできない。公式ウェブサイトには「このプロジェクトは、貢献をパブリックドメインに捧げる宣誓供述書を提出していない人からのパッチは受け付けない」と記載するとともに、プロジェクト創設者らは、行動規範の代わりに聖ベネディクトの戒律に基づく倫理規定を採用している[8]。
SQLiteの配布物には、 sqlite3 と呼ばれるスタンドアロンのコマンドライン シェルプログラムが付属している[9]。このプログラムを使用して、データベースの作成、テーブルの定義、行の挿入と変更、クエリの実行、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への採用が決まって大口顧客になると、携帯電話メーカーからの支持も高まった[10]。
2004年6月、AOLの資金提供を受けて[11]、SQLite 3.0では国際化、マニフェスト型付け、およびその他の主要な改良点を追加した(AOLは当時プロバイダへの加入を促すCD-ROMを配布しており、そのプログラムにSQLiteを組み込んでいた[12])。
2007年12月、Mozilla FoundationやSymbianと共同でSQLiteコンソーシアムを設立した[13]。同時期にAndroidの標準ライブラリに採用されたことや、同じくiPhoneでも採用されるなどしたことで、スマートフォンの爆発的な普及とともにSQLiteも広がった[14]。
2011年、HippはSQLiteにNoSQLインターフェースを追加する計画を発表し、ドキュメント指向データベース向けに設計されたSQLの機能的スーパーセットであるUnQLも発表した[15]。
テストと信頼性
[編集]SQLiteは、各リリースの前に自動回帰テストを実施しており、その一環として200万以上のテストが実施されている。SQLiteライブラリのソースコードは約156,000行あるが、すべてのテスト用コードを合わせると9,200万行になる[16]。SQLiteのテストでは、ライブラリの機能性をテストするだけでなく、電源喪失やI/Oエラーなどの様々な例外的なシナリオをシミュレートする。2009年8月10日のSQLite 3.6.17リリース以降、SQLiteリリースはコードカバレッジの構成要素の一つであるブランチテストカバレッジが100%となっている。
SQLiteには、オリジナルのパブリックドメインTCLテスト、独自のC言語TH3テストスイート、SQLiteを他のSQLデータベースと比較するSQLロジックテスト、そして独自のファジングエンジンdbsqlfuzzの4つの異なるテストハーネスがある。公式サイトでは、こうした徹底的なテストを行うことによってミッションクリティカルな利用にも耐え得るとしている[17]。実際SQLiteはデータセットの長期保存に推奨される4つの形式の1つとしてアメリカ議会図書館が使用を承認している[18]。
特徴
[編集]- SQL92の機能の多くを実装
- 著作権を放棄しパブリックドメインに帰している
- サーバではなくライブラリ
- ライブラリは数百KB程度のフットプリント
- Cランタイム以外の別途ライブラリを必要としない
- 管理ツールによるセットアップやメンテナンスを必要としない
- コマンドラインツールも使える
- バイトオーダに依存しない(2.6.3以降)、可搬性のある単一ファイル
- 最大128TiBまで
- ファイルを使わない、揮発性のインメモリデータベースとしても利用可能
- データ型を指定する必要がない
- サポートしている型は、Null/Integer/Real/Text/BLOBのみ
- Unicodeのサポート
- BLOBはメモリの許す限り
- ROWIDを持っている(ただし3.6.18以前は外部制約キーの仕組みがない)
- トランザクションのサポート
- ビューのサポート
- トリガーのサポート
- C言語を使って関数を追加できる
- Tclバインディングを配布キットに標準添付している
- PHP5、Python 2.5、Adobe AIRで標準サポート
- その他、C、C++、D、Curl、Perl、Ruby、Delphiなど多数のプログラミング言語用のバインディング
- 全文検索のサポート
- Android端末の標準ライブラリとして採用されている
解説
[編集]SQLiteとは?[19]
SQLiteは、小型で高速、自己完結型、高信頼性、フル機能を備えたSQLデータベースエンジンを実装したC言語ライブラリです。SQLiteは世界で最も利用されているデータベースエンジンです。SQLiteはすべての携帯電話とほとんどのコンピュータに組み込まれており、人々が毎日使用する無数のアプリケーションにもバンドルされています。
SQLiteを組み込んだアプリケーションの一例
- AndroidのデータストレージAPI
- Mozilla Firefox(142.x現在)[20]
- Mozilla Thunderbird(142.x現在)[21]
ストレージに互換性があれば、データベースインスタンスを格納したファイルはWindows、Linux等で共用可能である。一時的な利用ならばインメモリデータベースを割り当てることが出来る。ストレージまでネイティブコードで直接実行し、間になんらかのプロトコルやプロセス間通信を伴わないことにより、単一のトランザクション内におけるレイテンシをある程度削減することに成功している。一度トランザクションを開始するとストレージはロックされ、トランザクション中のセッションはキャッシュを有効利用して動作するため、高速にデータベースにアクセスすることができる。動的リンク、静的リンク共に対応しており、(3.50.x現在)静的リンクで実行ファイルを生成しても、おおむね700KB程度のフットプリントで、充実したSQLステートメントと束縛のないデータ型を利用することができる。
SQLiteのデータ型(3.50.x現在)
- NULL: NULL値
- INTEGER: 符号付整数
- REAL: 浮動小数点数
- TEXT: テキスト(UTF-8, UTF-16BE, UTF-16LE)
- BLOB: Binary Large Object(画像データなど)
ウィキブックスには、より多くの具体例が記載されています。
管理ツール
[編集]- 「Navicat for SQLite」はデータの編集やSQLクエリ、データモデリングのツールを備え、データ転送、インポート/エクスポート、データの同期、レポートなどの機能が提供されている。
- DB Browser for SQLite Windows, Mac OS, Linux, FreeBSD に対応したGUI管理ツール。ライセンスは Mozilla Public License Version 2。
ODBC
[編集]SQLiteのODBCドライバがサードパーティーから提供されている。SQLite 2とSQLite 3のバージョンがあり、SQLite 2向けには、さらにUTF-8対応版がある。
脚注
[編集]- ^ “SQLite Release 3.51.0 On 2025-11-04”. 2025年11月4日. 2025年11月5日閲覧.
- ^ “SQLiteの意味・解説”. 2025年10月16日閲覧。
- ^ “An Introduction to SQLite”. 2014年6月20日閲覧。
- ^ “Why SQLite succeeded as a database with Richard Hipp, creator of SQLite (The Changelog #201)” (英語). Changelog. 2021年7月4日閲覧。
- ^ (日本語) An Introduction to SQLite 2021年7月4日閲覧。
- ^ Bell, Adam Gordon. “The Untold Story of SQLite” (英語). CoRecursive Podcast. 2021年7月4日閲覧。
- ^ Bill Lubanovic 著『入門Python3』、斉藤康毅 監訳 ・長尾高弘 訳、株式会社オライリー・ジャパン発行、オーム社 発売、2017年2月3日 初版 第6刷、246ページ
- ^ “Code Of Ethics”. sqlite.org. 2025年10月13日閲覧。
- ^ “Command Line Shell For SQLite”. sqlite.org. 2025年10月13日閲覧。
- ^ Bell, Adam Gordon. “The Untold Story of SQLite” (英語). CoRecursive Podcast. 2025年11月5日閲覧。
- ^ “SQLite Version 3 Overview”. www.sqlite.org. 2025年11月5日閲覧。
- ^ Bell, Adam Gordon. “The Untold Story of SQLite” (英語). CoRecursive Podcast. 2025年11月5日閲覧。
- ^ “SQLite Consortium Launches With Mozilla And Symbian As Charter Members”. www.sqlite.org. 2025年11月5日閲覧。
- ^ “Well-Known Users Of SQLite”. www.sqlite.org. 2025年11月5日閲覧。
- ^ “Interview: Richard Hipp on UnQL, a New Query Language for Document Databases” (英語). InfoQ. 2025年11月5日閲覧。
- ^ “How SQLite Is Tested”. sqlite.org. 2025年10月13日閲覧。
- ^ “How SQLite Is Tested”. sqlite.org. 2025年10月13日閲覧。
- ^ “LoC Recommended Storage Format”. sqlite.org. 2025年11月5日閲覧。
- ^ “What Is SQLite?”. SQLite Consortium. 2025年9月15日閲覧。
- ^ (Linux)/home/$USER/.mozilla/firefox/等の個人設定フォルダ以下に拡張子.sqliteファイルがあればSQLiteを使用
- ^ (Linux)/home/$USER/.thunderbird/等の個人設定フォルダ以下に拡張子.sqliteのファイルがあればSQLiteを使用
関連項目
[編集]書籍
[編集]- 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