2026年1月19日 Tech

1-1 データベースとは何か

データベースとは何か

データを整理して保存し、必要なときに素早く取り出せる仕組み。それがデータベースである。


なぜこれを学ぶのか

スマホアプリ、ECサイト、SNS。私たちが日常的に使うサービスの裏側には、必ずデータベースがある。プログラミングを学ぶなら、データベースの理解は避けて通れない。


データとは何か

データとは「記録された情報」のことである。

データの内容
連絡先 名前、電話番号、メールアドレス
買い物履歴 商品名、価格、購入日
SNS投稿 本文、投稿日時、いいね数

スマホの連絡先アプリを想像してほしい。友人の名前、電話番号、メールアドレス。これらはすべてデータである。


なぜデータベースが必要なのか

「Excelやメモ帳でデータを管理すればいいのでは?」と思うかもしれない。少量のデータならそれでも問題ない。しかし、データが増えると限界が来る。

ファイル管理の限界

問題 具体例
検索が遅い 10万件の顧客から「東京都在住の30代」を探すのに数分かかる
同時編集できない 2人が同時にファイルを開くと、どちらかの変更が消える
データが壊れやすい 誤って行を削除すると復旧できない
関連付けが難しい 「この注文をした顧客は誰?」を調べるのに手作業が必要

データベースが解決すること

解決策 効果
高速検索 100万件でも0.01秒で検索
同時アクセス 1000人が同時に使っても安全
データ保護 自動バックアップで復旧可能
データ連携 テーブル間の関連付けが簡単

身近な例で理解する

図書館の蔵書管理

図書館を想像してほしい。本(データ)は分類されて棚に整理されている。検索システムで著者名やタイトルから本を探せる。これはデータベースの仕組みそのものである。

flowchart LR A["利用者"] --> B["検索システム"] B --> C["蔵書データベース"] C --> D["本の場所を特定"]

Webサービスでの例

サービス 管理しているデータ
ECサイト 商品、注文、顧客、在庫
SNS 投稿、ユーザー、フォロー関係
銀行 口座、取引履歴、残高
ゲーム プレイヤー、スコア、アイテム

これらのサービスは、データベースなしでは成り立たない。

データベースの位置づけ

Webサービスの全体像を見てみよう。データベースは「裏方」として、すべてのデータを管理している。

flowchart TB subgraph ユーザー A["スマホ / PC"] end subgraph フロントエンド B["Webページ / アプリ画面"] end subgraph バックエンド C["APIサーバー"] end subgraph データ層 D[("データベース")] end A <-->|"操作"| B B <-->|"リクエスト"| C C <-->|"データの読み書き"| D
役割
ユーザー サービスを利用する スマホでアプリを操作
フロントエンド 画面を表示する 商品一覧ページ、投稿画面
バックエンド 処理を実行する 注文処理、ログイン認証
データベース データを保存・管理する 商品情報、ユーザー情報

ユーザーが「商品を検索」すると、リクエストがバックエンドに届き、バックエンドがデータベースに問い合わせる。データベースが結果を返し、最終的にユーザーの画面に表示される。

データベースは「システムの記憶」である。 フロントエンドやバックエンドが「考える」部分だとすれば、データベースは「覚えておく」部分にあたる。

実践例:AWSでのアーキテクチャ

実際の本番環境では、クラウドサービスを使うことが多い。AWS(Amazon Web Services)を例に、典型的な構成を見てみよう。

flowchart TB subgraph インターネット A["ユーザー"] end subgraph AWS subgraph パブリック層 B["Route 53
(DNS)"] C["ALB
(ロードバランサー)"] end subgraph アプリケーション層 D1["EC2
(サーバー1)"] D2["EC2
(サーバー2)"] end subgraph データ層 E[("RDS
(データベース)")] F["S3
(ファイル保存)"] end end A --> B B --> C C --> D1 C --> D2 D1 <--> E D2 <--> E D1 <--> F D2 <--> F
サービス 役割 説明
Route 53 DNS ドメイン名(例: example.com)をIPアドレスに変換
ALB ロードバランサー アクセスを複数のサーバーに分散
EC2 サーバー アプリケーションを実行するコンピュータ
RDS データベース データを保存・管理(PostgreSQL、MySQL等)
S3 ファイル保存 画像や動画などの大きなファイルを保存

この構成では、EC2(サーバー)が2台あるが、データベース(RDS)は1つである。どちらのサーバーからアクセスしても、同じデータが取得できる。

ポイント:EC2とRDSは別のサービス

ここで重要なのは、EC2(アプリケーションサーバー)とRDS(データベース)は最初から分離されているということ。2台のEC2はどちらも「アプリケーションを動かすサーバー」であり、データベースサーバーではない。データベースはRDSという専用のサービスが担当している。

なぜアプリケーションサーバーが2台あるのか?

理由 説明
可用性 1台が故障しても、もう1台でサービスを継続できる
負荷分散 アクセスが集中しても、2台で処理を分担できる
メンテナンス 1台を停止してアップデートしても、もう1台で稼働し続けられる

サーバーは「いつ壊れてもおかしくない」という前提で設計する。これを「冗長化」と呼ぶ。

これがデータベースの重要な役割である。 複数のサーバーがあっても、データの「唯一の情報源(Single Source of Truth)」として機能する。

別の構成:EC2にデータベースをインストール

RDSを使わず、EC2にPostgreSQLやMySQLを自分でインストールする方法もある。

flowchart TB subgraph インターネット U["ユーザー"] D["開発者"] end subgraph AWS subgraph パブリックサブネット ALB["ALB"] B["Bastion Server
(踏み台サーバー)"] end subgraph プライベートサブネット C["EC2
(アプリサーバー)"] DB["EC2
(DBサーバー)"] end end U -->|"HTTP/HTTPS"| ALB ALB -->|"HTTP"| C C <-->|"PostgreSQL
(TCP 5432)"| DB D -->|"SSH"| B B -->|"SSH"| C B -->|"SSH"| DB
構成要素 役割 説明
ALB ロードバランサー ユーザーからのリクエストを受け付ける
Bastion Server 踏み台 開発者がメンテナンス時に使う入口
アプリサーバー アプリケーション実行 Webアプリなどを動かす
DBサーバー データベース実行 PostgreSQL等を自分でインストール

2種類の接続経路

この構成には2種類の接続がある。

接続の種類 経路 用途
ユーザーアクセス ユーザー → ALB → アプリ → DB サービス利用
開発者アクセス 開発者 → Bastion → 各サーバー メンテナンス

アプリサーバーとDBサーバーの間は、SSHではなくPostgreSQLプロトコル(TCP 5432番ポート) で接続される。これはプライベートネットワーク内の通信なので、インターネットを経由しない。

なぜ踏み台サーバーが必要なのか?

プライベートサブネットにあるサーバーは、インターネットから直接アクセスできない。これはセキュリティ上の重要な設計である。開発者がメンテナンスのためにアクセスするには、踏み台サーバー(Bastion Server)を経由する必要がある。

接続方法 セキュリティ
インターネット → DBサーバー(直接) ❌ 危険。攻撃対象になる
インターネット → Bastion → DBサーバー ✅ 安全。入口が1つに限定される

RDS vs EC2にDB:どちらを選ぶか

観点 RDS(マネージド) EC2にDB(自前管理)
運用負荷 低い(自動バックアップ等) 高い(すべて自分で管理)
自由度 低い(設定に制限あり) 高い(何でもできる)
コスト やや高い 安くできる場合もある
推奨ケース 一般的なWebサービス 特殊な要件がある場合

初心者や一般的なWebサービスにはRDSが推奨される。EC2にDBをインストールするのは、特殊なチューニングが必要な場合や、コストを極限まで抑えたい場合に検討する。


データベースの種類

データベースには大きく分けて以下の種類がある。

種類 特徴 代表例
RDB テーブル(表)形式でデータを管理 PostgreSQL, MySQL
NoSQL(ドキュメント型) JSON形式で柔軟に保存 MongoDB, Firestore
NoSQL(キーバリュー型) キーと値のペアで高速保存 Redis
NewSQL RDBとNoSQLの良いとこ取り CockroachDB, Spanner

収納に例えると

種類 例え イメージ
RDB 整理棚 決まった棚に決まったものを入れる。「3段目の左から2番目」のように場所が決まっている
NoSQL(ドキュメント型) ファイルボックス 1つの箱に関連する書類をまとめて入れる。箱ごとに中身の構成が違ってもOK
NoSQL(キーバリュー型) コインロッカー 番号(キー)を指定すれば中身(値)がすぐ取り出せる。超高速
NewSQL スマート整理棚 整理棚の使いやすさを保ちながら、複数人で同時に出し入れできる

初心者はまずRDB(リレーショナルデータベース)から学ぶのがおすすめである。Webサービスの多くはRDBを使っている。


まとめ

  • データとは「記録された情報」のこと
  • データベースは「データを整理・保存し、高速に取り出す仕組み」
  • ファイル管理では検索速度、同時アクセス、データ保護に限界がある
  • データベースはこれらの問題を解決する
  • 種類はRDB、NoSQL、NewSQLの3つ。まずはRDBから学ぶ

用語

用語 説明
データ 記録された情報。名前、数値、日付など
データベース データを整理して保存し、検索・更新を効率的に行う仕組み
RDB Relational Database。テーブル形式でデータを管理するデータベース
NoSQL Not Only SQL。RDB以外のデータベースの総称
NewSQL RDBの機能を持ちつつ、NoSQLのスケーラビリティを備えたデータベース

次の記事

RDBの基本から学びたい方はこちら。

1-2 リレーショナルデータベースの基本

目次