【えすきゅーらいと】

SQLite とは?

最終更新:
💡 アプリの中でSQLを動かす、組み込みデータベース

アプリのプロセス内でSQLを実行する組み込みデータベースエンジン。独立したDBサーバーを必要とせず、アプリのローカル保存などに使う。ディスク上の主なDBファイルに表やデータを格納する。

📌 このページのポイント
SQLiteはアプリ内で動く SQLite DBサーバー方式 アプリのプロセス SQLite ライブラリ 主DBファイル 読み書き アプリのプロセス DBクライアント 接続 DBサーバー 別プロセス SQLiteには独立したDBサーバーが不要
左はSQLite、右は別プロセスのDBサーバーへ接続する構成。SQLiteも補助ファイルがある場合がある。
ひよこ ひよこ
SQLiteはMySQLと何が違うの?
ペンギン先生 ペンギン先生
SQLiteではアプリのプロセスがライブラリを使ってDBファイルを読み書きするよ。独立したDBサーバーとやり取りする方式とは構成が違う。DBサーバーの設定は要らないけれど、アプリ側にはSQLiteを利用するライブラリや実行環境が必要なんだ。
ひよこ ひよこ
DBはファイル1つだけなの?
ペンギン先生 ペンギン先生
表やデータは主なDBファイルに格納できるけれど、更新中は補助ファイルも使うよ。WALモードでは未反映の変更がdata.db-walに残る場合がある。動いているDBのdata.dbだけをコピーしてよい、とは考えないでね。
ひよこ ひよこ
コピーやバックアップはどうする?
ペンギン先生 ペンギン先生
稼働中ならSQLiteのOnline Backup APIなど、整合した状態を保存する方法を使おう。主ファイルとWALを切り離すと、確定した変更を失ったり壊れたりする可能性がある。単純なコピーとDBのバックアップは区別するんだ。
ひよこ ひよこ
書き込み中は読み取りも止まる?
ペンギン先生 ペンギン先生
WALモードでは読み取りと書き込みを並行できるよ。ただし同じDBへ同時に書く処理は1つなので、他の書き込みは待機や競合への対応が必要。ロックの振る舞いはモードやトランザクションにも依存するんだ。
ひよこ ひよこ
大きなWebサービスでは使えない?
ペンギン先生 ペンギン先生
規模だけで決まるわけではないよ。ローカル保存や読み取り中心の用途に加え、Webアプリでも使われる。多数の同時書き込みや、複数のコンピューターから同じDBへ直接アクセスする構成では、クライアント・サーバー方式も検討しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SQLite」って出てきたら「独立したDBサーバーを使わず、アプリに組み込んで使うSQLデータベース」と思えばだいたいOK!
📖 おまけ:英語の意味
「SQLite」 = SQLを扱う軽量なDBエンジンの名前
💬 liteは「軽量な」という意味。「別のDBサーバーを立てずに使う」という特徴と結び付けて覚えると分かりやすいよ

参考資料

← 用語集にもどる