# DBサーバ — データを整理して保管する係

> レベル: 初級 ／ 対象: 大人
> 出典: Kotowary — https://kotowary.com/learn/units/db-server?level=beginner&audience=adult
集めたデータをきちんとしまい、必要なときにサッと出す——それが**DBサーバ**（データベース）です。

## これは何をする係？

よく整理された**台帳**や**図書館**を想像してください。棚（※1 テーブル）に、1件ずつの記録（※2 行）が並び、それぞれに項目（列）がある。DBは、この整理された状態を保ち、**探す・並べる・絞り込む**のが得意です。

::image{src="/images/web-services/server.webp" alt="サーバ機器" caption="DBサーバの実体もこうしたコンピュータ"}

たくさんの行から目的の1件を速く見つけるために、**索引（※3 インデックス）** を使います。本の巻末索引と同じ発想です。

**登場人物メモ**:

- **※1 テーブル** — 同じ種類のデータを集めた表（例：ユーザー表、注文表）
- **※2 行（レコード）** — 表の1件分（例：ユーザー1人）
- **※3 インデックス** — 素早く探すための索引

## 仕事の流れ

1. バックエンドから「この条件のデータを探して」と頼まれる（※4 SQL）
2. インデックスを使って素早く該当行を見つける
3. 並べ替え・絞り込みをして返す
4. 書き込みの依頼なら、記録して保存する（消えないように）

**登場人物メモ**:

- **※4 SQL** — DBへのお願いを書くための言葉（「この条件で探して」「これを保存して」）

## DBとキャッシュ・ストレージの違い

- **DB** — 表の形の**構造データ**（ユーザー・注文など）を、探しやすく保管
- **キャッシュ** — よく使う答えを一時的に手元に（速いが消えてよい）
- **ストレージ** — 画像・動画などの**大きな塊**（表には向かない）

「何でもDBに入れる」のではなく、向き不向きで置き場所を分けます。

## ⚠️ うまくいかないとき

- **見つからない** — 条件に合う行が無い（データ未登録／条件ミス）
- **遅い** — インデックスが無く、端から全部見ている
- **重複・矛盾** — 同じデータが二重に入る（設計や制約で防ぐ）
