SQLite — サーバー不要、ファイル1個のDB(+Turso / Cloudflare D1)
📖 このページのゴール:「サーバーを立てないDB」=SQLiteが何者かを腹落ちさせる。
.dbファイル1個がそのままデータベースで、SQLは前ページのRDBとまったく同じ。さらに、それをクラウド/エッジに広げたモダン版(Turso・Cloudflare D1)の存在を知る。 ← 目次・はじめにへもどる
前ページの RDB(リレーショナルDB)は、ふつう「DBサーバー」という専用の係(PostgreSQL や MySQL)を別に立てて、そこへ問い合わせて使いました。SQLite はそこが違います。サーバーを雇わず、ファイルを直接読み書きするRDBです。
📄 ひとことのたとえ
🟢 SQLite = ノート1冊(ファイル1個)を、自分で直接読み書きする。
ふつうのRDBは「受付の人(DBサーバー)」を雇うイメージです。データが欲しいときは受付にお願いし、受付が倉庫から出してくれます。みんなで同じ受付に並べるので、大人数でも順番よくさばけます。
SQLite は、その受付の人を雇いません。代わりに「ノート1冊」が机に置いてあって、アプリが自分でページをめくって読み書きします。
| ふつうのRDB(PostgreSQL等) | SQLite | |
|---|---|---|
| たとえ | 受付の人に頼む | ノートを自分でめくる |
| サーバー | 別に立てる(係を雇う) | 不要(雇わない) |
| データの実体 | サーバーの中 | .db ファイル1個 |
| 接続 | ネットワーク越し | ファイルを開くだけ |
| 大人数で同時に書く | 得意(順番にさばく) | 苦手(ノートは1冊) |
🟢 「受付を雇わない=速くて手軽。でもノートは1冊だから、大人数が一斉に書き込むのは苦手」——これがSQLiteの長所と短所、両方の正体です。
🧩 何者?(しくみ)
SQLite は、3つのポイントだけ押さえれば十分です。
- 🟢 1ファイルが丸ごとDB。 テーブル(表)も、行も列も、ぜんぶ
myapp.dbのようなファイル1個に入っています。そのファイルをコピーすれば、データごとまるごと持ち運べます。メール添付で送ることすらできます。 - 🟢 アプリに「組み込み」(同じプロセスの中で動く)。 SQLite はサーバーとして外で動くのではなく、アプリの中に部品として入ります。だから「サーバーを起動」「ポートを開ける」「接続情報を設定」といった手間がゼロ。アプリが起動すれば、もうDBが使えています。
- 🟢 SQLは普通のRDBと同じ。
SELECTINSERTCREATE TABLE…前ページで出てきたSQLがそのまま通じます。学び方も移行先も無駄になりません。 小さく始めて、あとで大きなRDBに引っ越すのも比較的スムーズです。
ふつうのRDB: [アプリ] ──ネットワーク──> [DBサーバー] ──> [データ]
(別の係を雇う)
SQLite: [アプリ + SQLite + data.db ]
ぜんぶ同じ場所。ファイルを直接読み書き。
🔧 補足:SQLite は世界でいちばん多く使われているDBとも言われます。スマホアプリ、ブラウザ、家電など、見えないところで膨大に動いています。「小さい=おもちゃ」ではなく、「小さくて、ものすごく堅実」という位置づけです。
🛠 代表サービス(実名)
| 名前 | ひとことで | こんなとき |
|---|---|---|
| SQLite 本体 | 元祖・ファイル1個のRDB。組み込みの定番 | ローカル/モバイルアプリ、プロトタイプ、テスト |
| Turso / libSQL 🔧 | SQLite を分散できるようにしたモダン版。世界各地に置いて、ユーザーの近くから読める | サーバーレス/エッジで、SQLiteの手軽さを保ったまま広げたい |
| Cloudflare D1 🔧 | Cloudflare のエッジで動くSQLite。Workers(エッジの実行環境)と相性◎ | エッジで小〜中規模のRDBを、運用ほぼゼロで使いたい |
🟢 まず覚えるのは SQLite 本体だけでOK。Turso と D1 は「SQLite をクラウド/エッジでも使える形にした親戚」くらいの理解で十分です。SQLの書き味は同じまま、置き場所が「手元のファイル」から「世界中のエッジ」に広がった、と捉えてください。
🔗 「エッジ/サーバーレス」がピンと来なければ、姉妹編 コンピューティングの選択肢 を参照。Turso・D1 は、あの“はしご”の右側(任せる・楽)にSQLiteを連れて行ったもの、と考えると位置づけが掴めます。
👍 向いている / 👎 向かない
🟢 向いている
- ローカルアプリ・モバイルアプリ:端末の中にデータを持ちたい(オフラインでも動く)。
- 小規模・個人開発:DBサーバーの用意が面倒な段階。とにかく速く動かしたい。
- プロトタイプ・テスト:使い捨ての実験。テストごとに新しい
.dbを作って消せる。 - 1ファイルで配布:データ入りのファイルを、そのまま誰かに渡したい。
- エッジ(Turso/D1):ユーザーの近くで、軽いRDBを運用ゼロで動かしたい。
👎 向かない
- 多人数の同時書き込み:ノートは1冊。大勢が一斉に書き込むと、順番待ち(ロック)で詰まる。読むのは得意でも、同時に大量に書くのは苦手。
- 巨大データ・高トラフィック:何十GB・秒間大量アクセスは、本格的なDBサーバー(RDS/Aurora)の領分。
- 別マシンから共有:ファイルは基本「その1台」のもの。複数のサーバーから同じ
.dbを直接共有するのは事故のもと。「みんなで使う共有DB」が要るなら、次ページ以降のサーバー型へ。
🟢 ざっくり覚え方:「1人〜少人数・1台・読み中心」ならSQLiteで快適。「大人数で同時に書く・複数台で共有」ならサーバー型へ。
💰 コスト感
🟢 ほぼ0円。 SQLite 本体は無料で、サーバーを借りないので月額料金が発生しません。アプリにファイルが1個増えるだけです。「DB代を気にせず始められる」のは、初心者にとって大きな利点。
🔧 Turso・D1 などのモダン版は、無料枠+使った分だけの従量課金が中心。小規模なら無料枠に収まることも多く、ここでも「最初はほぼ0円」が成り立ちます。
🔧 運用 / メンテ
- 🟢 バックアップ=ファイルをコピーするだけ。
myapp.dbを別の場所にコピーすれば、それがそのままバックアップ。復元も「コピーを戻すだけ」。この手軽さはSQLiteならでは。 - 🟢 壊れにくいが、同時書き込みに弱い。 1人で使うぶんには非常に堅牢。ただし、複数の書き込みが重なると順番待ちが起き、無理に複数台で共有すると壊れることもあります。「書き込みは1か所から、静かに」が安全。
- 🔧 Turso/D1 を使う場合、バックアップやレプリケーション(複製)はサービス側がかなり面倒を見てくれます。手元ファイルの手軽さと、クラウドの安心を両取りできるのが利点です。
🏢 誰が使う?
| ペルソナ | SQLite との距離感 |
|---|---|
| 👤 個人・スタートアップ | ◎ プロトタイプやローカルアプリで大活躍。「まず動かす」の相棒 |
| 🎓 学習中の人 | ◎ SQL を試すのに最適。インストール不要で、SQLそのものに集中できる |
| 📱 組み込み機器・モバイル | ◎ 端末内DBの定番。アプリに同梱して持ち運ぶ |
| 🏢 中堅・大企業 | △→◎(最近) 本番の共有DBはサーバー型が基本。ただしエッジ(Turso/D1)の登場で、小〜中規模のエッジ用途では企業でも選ばれ始めている |
🟢 ひとことで言うと
SQLite は「受付の人(DBサーバー)を雇わず、ノート1冊(.dbファイル)を直接読み書きするRDB」。SQLは普通のRDBと同じで、手軽・無料・組み込みが強み。1人〜少人数・1台・読み中心なら最高、大人数の同時書き込みや複数台共有は苦手。最近は Turso・Cloudflare D1 が、その手軽さをエッジ/サーバーレスにまで広げています。
➡️ 次へ
次のページ:自前DB(オンプレ)— MySQL / PostgreSQL を自分で立てる → ← 目次・はじめにへもどる