第1章 RDBとは何か
更新日:2025年12月28日
この章を音声で聴く
1. データベースの歴史
1.1 ファイルシステムからDBへ
コンピュータの黎明期、データはファイルシステム上のテキストファイルやバイナリファイルとして管理されていた。この方式には以下の問題があった。
Table 1. ファイルシステム管理の問題点
| 問題 | 説明 |
|---|---|
| データ冗長性 | 同じデータが複数ファイルに重複して保存される |
| データ不整合 | 重複データの一部のみ更新されると矛盾が発生 |
| プログラム依存性 | ファイル形式変更時に全プログラムの修正が必要 |
| 同時アクセス困難 | 複数ユーザーの同時読み書きで競合が発生 |
| セキュリティ不足 | 細かいアクセス制御が困難 |
これらの問題を解決するため、データを一元管理し、アプリケーションから独立した形で提供する「データベース管理システム(DBMS)」が開発された。
1.2 階層型・ネットワーク型
1960年代、最初に実用化されたDBMSは階層型とネットワーク型であった。
階層型データベース:データを木構造(ツリー)で表現する。親子関係が明確で高速だが、多対多の関係を表現できない。IBMのIMS(Information Management System, 1966年)が代表例である。
ネットワーク型データベース:データをグラフ構造で表現する。多対多の関係を表現できるが、構造が複雑でプログラミングが困難。CODASYLが標準化を推進した。
Table 2. 初期DBMSの比較
| 項目 | 階層型 | ネットワーク型 |
|---|---|---|
| データ構造 | 木構造(1:N) | グラフ構造(M:N) |
| ナビゲーション | 上から下へ | ポインタを辿る |
| 柔軟性 | 低い | 中程度 |
| プログラミング | 比較的容易 | 複雑 |
| 代表製品 | IBM IMS | IDMS |
2. RDBの登場
2.1 Coddの関係モデル
1970年、IBMの研究者E.F.Codd(エドガー・フランク・コッド)は論文「A Relational Model of Data for Large Shared Data Banks」を発表した。この論文で提唱された「関係モデル(Relational Model)」は、データベース技術に革命をもたらした。
Coddの関係モデルは、数学の集合論と述語論理に基づいている。データを「リレーション(関係)」として表現し、リレーション間の操作を「関係代数」として定義した。この数学的な基盤により、データの整合性を理論的に保証できるようになった。
1985年、CoddはRDBMSが満たすべき12の規則を発表した。完全に準拠する製品は存在しないが、RDBMSの評価基準として参照される。主な規則として「情報規則(すべての情報はテーブルで表現)」「アクセス保証規則(テーブル名、主キー、列名でデータにアクセス可能)」などがある。
2.2 RDBの特徴
RDBの主要な特徴を以下に示す。
Table 3. RDBの特徴
| 特徴 | 説明 | 利点 |
|---|---|---|
| テーブル構造 | データを行と列の表形式で表現 | 直感的で理解しやすい |
| SQL言語 | 宣言的なデータ操作言語 | 「何を」取得するかを記述(「どうやって」は不要) |
| データ独立性 | 物理的格納方法とアプリケーションの分離 | スキーマ変更がアプリに影響しにくい |
| ACID特性 | トランザクションの信頼性保証 | データ整合性の確保 |
| 正規化理論 | データ冗長性を排除する設計手法 | 更新異常の防止 |
3. 他のDBとの比較
3.1 NoSQL
NoSQL(Not Only SQL)は、2000年代後半にWebサービスの大規模化に伴い普及したデータベースの総称である。RDBの制約を緩和し、スケーラビリティと柔軟性を重視する。
Table 4. NoSQLの種類
| 種類 | データモデル | 代表製品 | 用途 |
|---|---|---|---|
| ドキュメント型 | JSON/BSON文書 | MongoDB, CouchDB | コンテンツ管理、カタログ |
| カラム型 | 列ファミリー | Cassandra, HBase | 時系列データ、ログ分析 |
| グラフ型 | ノードとエッジ | Neo4j, Amazon Neptune | SNS、レコメンデーション |
3.2 KVS
KVS(Key-Value Store)は、キーと値のペアでデータを格納する最もシンプルなデータベースである。複雑なクエリは不可能だが、極めて高速な読み書きが可能。
Table 5. 主要KVS製品
| 製品 | 特徴 | 主な用途 |
|---|---|---|
| Redis | インメモリ、データ構造サポート | キャッシュ、セッション、リアルタイム分析 |
| Memcached | シンプル、分散キャッシュ | Webアプリケーションキャッシュ |
| Amazon DynamoDB | フルマネージド、自動スケーリング | サーバーレスアプリケーション |
3.3 使い分け
データベースの選択は、要件に応じて行う必要がある。以下に選択の指針を示す。
RDBを選択すべき場合
データの整合性が最重要(金融、会計、在庫管理)、複雑なクエリが必要、トランザクション処理が必要、スキーマが明確に定義できる場合はRDBが適している。
NoSQLを選択すべき場合
スキーマが頻繁に変更される、大量の非構造化データを扱う、水平スケーリングが必要、高速な読み書きが優先される場合はNoSQLが適している。
KVSを選択すべき場合
単純なキーアクセスのみ、極めて高いスループットが必要、データの永続性より速度が優先される場合はKVSが適している。
実践ポイント
現代のシステムでは、RDBとNoSQL/KVSを組み合わせる「ポリグロット・パーシステンス」が一般的である。例えば、マスターデータはRDBで管理し、セッション情報はRedisでキャッシュ、ログデータはMongoDBに格納するといった構成が取られる。
4. まとめ
本章で解説した概念を整理する。
Table 6. 第1章のまとめ
| 概念 | 内容 |
|---|---|
| ファイルシステムの限界 | データ冗長性、不整合、プログラム依存性 |
| 初期DBMS | 階層型(IMS)、ネットワーク型(IDMS) |
| 関係モデル | 1970年、Coddが提唱。集合論に基づく |
| RDBの特徴 | テーブル構造、SQL、データ独立性、ACID |
| NoSQL | ドキュメント型、カラム型、グラフ型 |
| KVS | キーと値のペア、高速アクセス |
| 使い分け | 要件に応じた選択、ポリグロット・パーシステンス |
本コンテンツは2025年12月時点の情報に基づいて作成されています。各製品の機能や仕様は変更される可能性があります。最新情報は公式ドキュメントをご確認ください。