SQLite
SQLiteとは
SQLite(エスキューライト)は、サーバーを立てずに使える軽量のリレーショナルデータベースです。データベース全体がたった1つのファイルとして保存され、アプリケーションに組み込まれて(ライブラリとして)動きます。
[[MySQL]] や PostgreSQL が「データベースサーバーを起動してネットワーク越しに接続する」方式なのに対し、SQLite は「アプリが直接ファイルを読み書きする」方式です。この違いがすべての特徴の源になっています。
サーバー型RDBとの比較
| SQLite | MySQL / PostgreSQL | |
|---|---|---|
| 動作形態 | アプリに組み込み(ライブラリ) | 独立したサーバープロセス |
| データの実体 | 1ファイル | サーバーが管理する領域 |
| 接続 | ファイルを開くだけ | ネットワーク接続・認証 |
| 同時書き込み | 弱い(基本1つずつ) | 強い(多数の同時接続前提) |
| セットアップ | 不要 | インストール・設定が必要 |
[[リレーショナルデータベース]] としての基本機能([[SQL]]、[[トランザクションとACID]])はきちんと備えています。「軽量版のおもちゃ」ではなく、用途が違うだけの本物のRDBです。
使いどころ
- スマホアプリ・デスクトップアプリ内のデータ保存 — Android / iOS に標準搭載。世界で最も多くデプロイされているデータベースと言われる
- 学習・プロトタイピング — サーバー不要なので SQL の練習環境が一瞬で作れる
- 小規模なWebサイトや個人ツール — 読み取り中心なら十分実用になる
逆に、多数のユーザーが同時に書き込む Web サービスには向きません。同時書き込みに強いサーバー型(MySQL / PostgreSQL)へ移行するのが定石です。
初学者向けポイント
sqlite3 mydb.sqliteのようにコマンド1つで対話環境が開き、すぐ SQL を試せる — SQL 学習の最短ルート- データベースファイルをコピーするだけでバックアップや受け渡しができる手軽さも魅力
- 多くのフレームワークが開発時のデフォルトDBに採用している(本番はサーバー型に切り替える構成)
関連技術とのつながり
- [[リレーショナルデータベース]] — SQLite は組み込み型の RDB
- [[SQL]] — 学習環境として最も手軽な選択肢
- [[トランザクションとACID]] — 軽量ながら ACID をきちんと保証する
- [[MySQL]] — 同時書き込みが増えたときの移行先の代表
Q: SQLite の動作形態として正しいのはどれ?
- [ ] 独立したサーバープロセスとして起動しネットワーク接続する
- [x] アプリケーションに組み込まれ、1ファイルのデータベースを直接読み書きする
- [ ] クラウド上でのみ動作する
解説: SQLite はサーバー不要の組み込み型で、データベース全体が1つのファイルに収まります。
Q: SQLite が苦手とする用途はどれ?
- [ ] スマホアプリ内のデータ保存
- [ ] SQL の学習・プロトタイピング
- [x] 多数のユーザーが同時に書き込む Web サービス
解説: SQLite は同時書き込みに弱いため、その用途はサーバー型の MySQL / PostgreSQL が定石です。
Q: SQLite のバックアップ方法として本文で挙げた手軽な手段はどれ?
- [x] データベースファイルをコピーする
- [ ] 専用のバックアップサーバーを構築する
- [ ] SQL をすべて手で書き写す
解説: データの実体が1ファイルなので、ファイルコピーだけでバックアップや受け渡しができます。