SQLite
C言語で実装された軽量・組み込み型のSQLデータベースエンジン。D. Richard Hippにより2000年に開発され、ソースコードはパブリックドメインで公開されており誰でも無償・無制限に利用できる。
#database #rdbms #sql #embedded
アーキテクチャ
「サーバーレスデータベース」とも呼ばれ、PostgreSQLやMySQLのような独立したサーバープロセスを必要とせず、ライブラリとしてアプリケーションに直接組み込んで使う。データベース全体が単一のファイルに格納される。モバイルアプリ、デスクトップアプリ、IoTデバイス、組み込みシステムなど幅広い環境で使われており、Androidデバイスには標準搭載されている。推定4兆以上のインスタンスが世界で稼働しているとされる。
型システム
SQLiteは動的型付けを採用しており、宣言した列の型は「ヒント」に過ぎず、実際にはどんな型の値でも格納できる。値は内部的にNULL・INTEGER・REAL・TEXT・BLOBの5つの「ストレージクラス」のいずれかで保持され、宣言型に基づいて「型親和性(type affinity)」が決まり、挿入時に自動的な型変換が行われる。型名の部分文字列マッチングで親和性を決めており、たとえば型名に"INT"が含まれればINTEGER親和性、"CHAR"/“CLOB”/“TEXT"が含まれればTEXT親和性になる(VARCHAR(255)のような括弧内の数値は無視される)。
同時書き込みの制限
書き込みロックの方式として、従来のロールバックジャーナル方式に加えてWAL(Write-Ahead Logging)モードをサポートする。WALモードにすると複数の読み取りと単一の書き込みが同時に動作できるようになり、読み取りブロッキングが改善される。ただし書き込み自体は基本的に直列化されるため、高い並列書き込み負荷には向かない。
拡張機能
全文検索を行うための仮想テーブルモジュールとしてFTS3(およびその後継のFTS4/FTS5)がソース配布に標準で含まれている。SQLiteをエッジ分散・サーバーレスなクラウドサービスとして提供するTursoのような製品も存在する。
互換性方針
データベースファイル形式は安定しており異なるプラットフォーム間でも利用可能で、開発チームは少なくとも2050年までこのファイル形式を読み書きできる状態を維持すると宣言している。
出典
- SQLite(エスキューライト)とは? | ミツモア
- SQLiteとは?特徴・メリット・使い方・他のDBとの違いを解説 | TechMania
- リチャード・ヒップ - Wikipedia
- Webアプリには必須!! WALモードについて <a class=“note-tag” href=“/notes/tags/sql.html”>#sql - Qiita
- SQLite のおもしろ仕様 (1) : データ型 - kawasin73のブログ
- 利用者は数十億人!? SQLiteはどこが凄いデータベース管理システムなのか調べてみた - Qiita