なぜデータベースが必要か
コンピュータが扱うデータ量は、インターネットの普及とともに爆発的に増加しました。第4章でデータをディスクに永続化する「ファイルシステム」を学びましたが、なぜさらに「データベース」という専用システムが必要なのでしょうか。ファイル保存の限界と、データベース管理システム(DBMS)の真価を明らかにします。
1. ファイル保存(CSVなど)の限界
プログラムがデータを永続化する最も簡単な方法は、テキストファイルやCSVファイル(カンマ区切りのテキスト)としてディスクに直接書き出すことです。
例えば、小規模な顧客名簿(数十人程度)なら、Excelやテキストエディタで開けるCSVファイルで十分管理できます。しかし、顧客が数万人、数十万人になり、それを複数の部署の異なるシステムから利用するようになると、ファイルによる管理はあっという間に破綻します。
ファイル保存には、主に以下の3つの致命的な課題が存在します。
- データの重複と不整合(Inconsistency):
例えば「営業管理ファイル」と「請求管理ファイル」に、同じ顧客の住所が別々に保存されているとします。顧客が引っ越した際、営業管理ファイルだけを書き換えて請求ファイルを更新し忘れると、同じ顧客なのにシステムによって住所が異なるという「データの不整合」が発生します。 - 同時アクセスの排他制御の欠如:
複数のプログラムが同時に1つのファイルを開いて書き込むと、後に保存した内容でファイルが上書きされ、先に保存したデータが消滅したり、ファイル全体が破損したりします。 - 検索や集計の非効率性:
100万件のCSVファイルから「東京都在住の顧客」を探すには、ファイル全体をメモリに読み込み、先頭から1行ずつチェック(線形探索)する必要があり、莫大な時間とメモリを消費します。
2. 仲介役としての「DBMS(データベース管理システム)」
これらの課題を解決するために、データとアプリケーションの間に立ち、データの読み書きを集中管理する専用ソフトウェアが開発されました。 これがDBMS(Database Management System:データベース管理システム)です。
単に「データベース」と呼ぶ場合、多くはこの「DBMS」のことを指しています。
DBMSを導入すると、アプリケーションはファイルに直接アクセスするのではなく、すべての要求(データの検索、追加、更新、削除)をDBMSに対してのみ送ります。
DBMSは、裏側でデータの重複を排除しつつデータベースを整理し、同時に来る複数のアクセスを交通整理してデータ破壊を防ぎ、さらにインデックス(索引)で検索を高速化します。
3. データベースの主要な種類
データベース(DBMS)には、データの整理ルール(データモデル)の違いによって、いくつかの種類があります。
- RDBMS(関係データベース管理システム): データを「テーブル(表)」という2次元形式で表現し、複数のテーブルを連結して複雑な情報を表す最も主流なシステムです。例:MySQL, PostgreSQL, Oracle
- NoSQLデータベース: テーブルの固定枠にとらわれず、大量データや変化の速いデータを扱うのに適した比較的新しいシステムです。Key-Value形式やドキュメント形式などがあります。例:MongoDB, Redis
現在も企業やシステムの根幹を支えているのは、圧倒的な整合性と信頼性を誇るRDBMS(関係データベース)です。
次のセクションでは、このRDBMSにおけるデータの設計方法である「関係モデルとテーブル設計」について詳しく学びます。