データの保存
データをなくさず置いておく場所。形(表・文書・ファイル)で種類が分かれる
アプリの「記憶」。サーバーが読み書きし、溜まったものは後で分析にも使う。
最初に触るなら
SQLite :サーバー不要、単一ファイルで動く組み込み型の関係データベース
インストール不要の1ファイルで SQL を学べる。複数の人やプログラムが同時に使う段階になったら PostgreSQL に移る。
隣の分野とのつながり
| 分野 | どうつながるか |
|---|---|
| サーバー・API | 読み書きの主体はサーバー。画面から直接は触らない |
| データ処理・分析 | 溜まったデータを集計・分析するとき、ここが出発点になる |
| 実行基盤・ホスティング | データベースを自分で運用するか、運用込みで借りる(マネージド)かを選ぶ |
| サーバー・API (から見ると) | データを保存し、取り出すのはサーバーの仕事。画面から保存場所に直接触らせない |
| ノーコード・SaaS (から見ると) | Airtable のような「表の形の保存場所」は、データベースの入口になる |
| データ処理・分析 (から見ると) | 処理するデータの出どころ。データベースやファイルから読み出す |
| AI・機械学習 (から見ると) | 関連する文書を探すベクトル検索は、データベースの機能として提供される |
この分野を理解する
プログラムを止めても残す。 変数に入れたデータはプログラムが終わると消える。消えてほしくないものを置く場所がデータストアである。ファイルに書き出すのも一つの方法だが、「探す」「同時に書く」「壊れない」を保証するために専用の仕組みを使う。
形で種類が分かれる。 表(行と列)で持つのが関係データベース(PostgreSQL、SQLite)で、SQL という共通の言葉で問い合わせる。名前と値の組で高速に出し入れするのがキー・値ストア(Redis)。決まった形のない JSON をそのまま入れるのが文書データベース(MongoDB)。画像やファイルそのものを置くのがオブジェクトストレージ(Amazon S3)。迷ったら関係データベースから始めてよい。
「マネージド」という言葉。 データベースは自分のパソコンやサーバーにインストールして動かせるが、バックアップや故障対応を自分で抱えることになる。事業者が運用込みで貸してくれるものをマネージドサービスと呼ぶ。Supabase は PostgreSQL のマネージド版と考えると分かりやすい。
隣の分野との境界。 大きなファイルはデータベースに入れず、オブジェクトストレージに置いて「置き場所」だけを保存する。集計や可視化は「データ処理」の分野の道具で行う。
最初の一歩。 SQLite で表を1つ作り、数件入れて、条件を付けて取り出す。SQL の SELECT・INSERT・WHERE が分かれば、他のデータベースにも同じ考え方で入れる。
この分野のツール(6件)
種別(自分で書く土台か、借りて使うサービスか)で分けている。「主要制約」は各ツールで最も先に当たる限界。
ツール(5件)自分の環境にインストールして使うソフトウェア。無料のものが多いが、運用は自分で持つ
| ツール | 学習 | 料金 | 成熟 | 主要制約 | 検証 |
|---|---|---|---|---|---|
| Redis 全データをメモリに置く、ミリ秒未満で応答するキー・値/データ構造サーバー | 低 | 無料 | 安定 | メモリ上限(maxmemory)と到達時の動作:既定 0=無制限(64bit)。32bit は暗黙に 3 GB。上限到達時は既定で書き込みコマンドにエラーを返す(読み取りは継続) | |
| SQLite サーバー不要、単一ファイルで動く組み込み型の関係データベース | 低 | 無料 | 安定 | 同時書き込み数:1 ライター / 瞬間(読み取りは無制限)。WAL モードでも書き込みは同時に1つ | |
| MongoDB JSON風のドキュメントをスキーマレスに保存する、水平分散前提のNoSQL DB | 中 | 無料 | 安定 | 1ドキュメントの最大サイズ(BSON):16メビバイト(MiB) | |
| PostgreSQL 標準SQLに忠実で拡張性の高い、オープンソースの関係データベース | 中 | 無料 | 安定 | 同時接続数の既定値:max_connections = 100(既定。カーネル設定によりさらに低い場合がある) | |
| Meilisearch あいまい検索とタイポ許容に強い、数十ミリ秒で応答する全文検索エンジン | 低 | 無料枠あり | 成長中 | 自己ホスト時のHTTPペイロード上限:既定100,000,000バイト(約100MB)。http-payload-size-limitで変更可能 |
マネージドサービス(1件)事業者が運用していて、借りて使うサービス。運用を任せられる代わりに、プランの上限が乗る
| ツール | 学習 | 料金 | 成熟 | 主要制約 | 検証 |
|---|---|---|---|---|---|
| Amazon S3 容量無制限・従量課金の、AWS のオブジェクト(ファイル)ストレージ | 低 | 従量課金 | 安定 | 料金の構成(US East (N. Virginia)、S3 Standard):ストレージ $0.023 / GB・月(最初の 50 TB)。PUT/COPY/POST/LIST $0.005 / 1,000 リクエスト、GET/SELECT $0.0004 / 1,000 リクエスト。インターネットへの転送 $0.09 / GB(最初の 10 TB。月 100 GB までは AWS 全体で無料)。受信は無料 |
どれを選ぶか
| ツール | 種別 | どういう時に選ぶか/避けるか |
|---|---|---|
| Redis | ツール | セッション・キャッシュ・レート制限・ランキング・軽量なジョブキューのように「速く、失っても復元できる」データでは第一候補。失えないデータの正本、メモリに収まらない量、複雑な条件検索が要る場合は避け、PostgreSQL などディスク型 DB を正本にして Redis は前段に置く |
| SQLite | ツール | 1台で動くアプリ・CLI ツール・モバイル/デスクトップアプリのローカル保存、テストや試作の DB では第一候補。複数のサーバーやワーカーから同時に書き込む構成、ネットワーク越しに DB ファイルを共有する構成になった時点で避け、PostgreSQL へ移す |
| MongoDB | ツール | JSON的な構造のデータをスキーマ固定なしで柔軟に、かつ将来の水平分散も見込んで保存したい場合の第一候補。複数コレクションを跨いだJOINが中心の設計や、強いトランザクション整合性が常に必要な用途は避け、PostgreSQLなど関係データベースを検討する |
| PostgreSQL | ツール | 「関係を持つデータを保存する」のほぼ既定解。迷ったら PostgreSQL で始めてよい。避けるのは、サーバーを1台も持ちたくない場合(SQLite かマネージド版へ)と、書き込みが1台に収まらない規模(分散 DB へ) |
| Meilisearch | ツール | あいまい一致やタイポ許容を含む検索体験そのものが価値になる場面での第一候補。正本データの保存先や複雑な結合を伴う分析用途には向かず、その場合は既存のデータベースを正本にしてMeilisearchへは検索用に同期する構成にする |
| Amazon S3 | マネージドサービス | アプリの添付ファイル・画像・バックアップ・ログなど「ファイルを置いて配る」用途では第一候補で、容量を気にせず始められる。避けるのは、部分更新やロックが要るデータ(DB へ)、HTTPS 付きの静的サイトを最短で公開したい場合(GitHub Pages や Vercel へ)、AWS 外への大量配信で転送料金が読めない場合 |
この分野が担う目的
目的ごとのページでは、他の分野のツールも含めて横断比較できる。
- 構造の変わりやすいデータを保存する (この分野から 5件)
- 全文検索する (この分野から 4件)
- ファイルやバイナリを保存し配信する (この分野から 2件)
- 関係を持つデータを保存し問い合わせる (この分野から 2件)
- 静的ファイルを公開・配信する (この分野から 1件)
- イベントや Webhook を受けて処理を起動する (この分野から 1件)
- キーと値を高速に読み書き・一時保存する (この分野から 1件)
- 処理をキューに入れて非同期に処理する (この分野から 1件)
- 表形式データを変換・集計する (この分野から 1件)
- ベクトルで類似検索する (この分野から 1件)