SQLite

SQLiteとは

SQLite(エスキューライト)は、サーバーを立てずに使える軽量のリレーショナルデータベースです。データベース全体がたった1つのファイルとして保存され、アプリケーションに組み込まれて(ライブラリとして)動きます。

[[MySQL]] や PostgreSQL が「データベースサーバーを起動してネットワーク越しに接続する」方式なのに対し、SQLite は「アプリが直接ファイルを読み書きする」方式です。この違いがすべての特徴の源になっています。

サーバー型RDBとの比較

SQLiteMySQL / 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ファイルなので、ファイルコピーだけでバックアップや受け渡しができます。