データベース

アプリの根幹。データを永続化して効率よく取り出す仕組み。 RDB(リレーショナル)と NoSQL の使い分け、設計、インデックス、トランザクション、分散の話まで。

そもそもデータベースとは

大分類

種類得意
RDB(リレーショナル)PostgreSQL / MySQL / SQLite / SQL Server / Oracleトランザクション、結合、整合性
DocumentMongoDB / Firestore / DynamoDB柔軟なスキーマ、JSON
Key-ValueRedis / Memcached / DynamoDB超高速 GET/SET、キャッシュ
ColumnCassandra / ScyllaDB / BigQuery巨大データの分析
GraphNeo4j / DGraph関係性のクエリ
Time SeriesInfluxDB / TimescaleDB時系列メトリクス
Vectorpgvector / Pinecone / Qdrant埋め込み検索 / RAG
SearchElasticsearch / Meilisearch / Typesense全文検索
Wide-ColumnHBase / BigTable超大規模 OLTP

OLTP vs OLAP

選び方の指針

  1. 迷ったら PostgreSQL。SQL + JSON + 全文検索 + ベクトル + 拡張で大半をこなす
  2. キャッシュ / セッション / レート制限 → Redis
  3. 分析・大規模集計 → BigQuery / DuckDB
  4. 全文検索が肝 → Elasticsearch / Meilisearch
  5. 固定スキーマが取れない / 階層深い JSON → MongoDB
  6. 関係性そのもの(友達・経路)→ Graph DB

このノートの範囲

関連セクション

本セクションの読み方

  1. リレーショナル DB — テーブル / 主キー / 外部キー
  2. NoSQL — 種類と使いどころ
  3. 設計と正規化 — ER 図、正規形、命名
  4. インデックス — B-tree / Hash / GIN / 部分
  5. トランザクション — ACID、Isolation、ロック
  6. レプリケーション・分散 — Primary-Replica、シャーディング
  7. パフォーマンス — EXPLAIN、計画、キャッシュ
  8. 運用と注意点

2026 年のスナップショット

最初の 1 つ

SQLite を手元で触り始めるのが最短。sqlite3 test.db1 ファイルがそのまま DB になる。 ここで SQL を書けるようになってから、PostgreSQL に進むのが効率的。