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と同じ。 SELECT INSERT CREATE 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 を自分で立てる → ← 目次・はじめにへもどる