第2回「ファイルシステム」と「データベース」の違い
日本オラクル株式会社 井上 学 (いのうえ まなぶ) 山田 真二郎(やまだ しんじろう)
「基礎からはじめるデータベースセミナー」は、データベースの知識を習得するためにまず何から始めたらよいのかと、書籍を探したりセミナー情報を検索したりしている方のためのセミナーです。これまでデータベースに触れたことの無かった人や、おもにメインフレームやオフコンを中心に扱ってきたためにオープンな環境で動くリレーショナル・データベースに携わった経験がない人たちや営業職の方向けに、「そもそもデータベースって何だろう?」というところから始まり、リレーショナルデータベースのしくみとOracle Databaseのアーキテクチャを基本のところから学んでいただくことを目的としています。本日は、その第2回目の講義です。“「ファイルシステム」と「データベース」の違い”についてご説明します。
コンピュータが無かった時代は、データ管理はすべて紙を利用していました。伝票などは紙を使って人の手で処理していたのですが、コンピュータの登場により、一部の作業(計算、集計)を人の手に替わってコンピュータが処理するようになりました。これが、コンピュータ利用の始まりでした。
やがて、技術の進化によって安価で性能が良いコンピュータが普及したことにより、コンピュータを利用する機会も多くなりました。コンピュータを使用すると、データの検索や蓄積が手作業に比べてはるかに容易になります。また、システムに必要とされる業務要件が変化し高度になっていくにつれて、 「コンピュータを利用してデータを紙に蓄積し、活用する」というモデルから 「コンピュータそのものにデータを蓄積し、活用する」というモデルに次第に移行しました。さらにその後、コンピュータ上で動くデータベースが登場したことにより、「ファイルシステム」ではなく「データベース」にデータを格納するようになったのです。
事務処理にコンピュータが使用され始めた当時、ハードウェアは今とは比べものにならないほど高価なものでした。そのため、コンピュータを利用できる業務は限られていましたし、特定業務のためだけに専用のシステムを開発することも珍しくありませんでした。このような場合、データはその処理用プログラムのためだけに存在しており、データベースに格納されるのではなく、単なる「ファイル」という形をとっていました。ファイルシステムでは、 ファイルを複数のプログラムで共有できないため、プログラムごとにファイルが存在し、重複するデータが数多く含まれることになってしまいます。
その結果、同じ意味をもつデータであっても格納されるファイルが異なるので、ある業務要件では変更されているがある業務要件では変更されていないデータがあるなどというように、データが重複して存在してしまい、結果的にデータの不整合などが起こっていました。
また、ファイルシステムだと、その業務要件だけで利用されていた データの活用範囲が広がれば、プログラムを作り変えなければならないのです。
コンピュータの活用範囲が広がってさまざまな処理に利用されるようになると、当然「もっと高度なことがしたい」「もっと有効にデータを活用したい」といった要望が出てきます。これらの要望に対応するために研究が進み、プログラムごとにファイルとして専用のデータをもつ方法では効率が悪いことがわかってきました。そこで、関連するデータを整理・統合して重複を省いた無駄のないデータ集合体を作るようになったのです。これが「データベース」です。
データベースでは、データを1つの場所で管理して複数のプログラムで共有できるので、プログラムごとに個別にデータの場所を記述する必要がなくなります。これらはデータベース・マネジメント・システム(DBMS)で管理されるのです。DBMSに蓄積されたデータに変更が生じたとしてもプログラムを変更する必要はありませんので、「プログラムとデータが独立」していると言えます。つまり、プログラムのなかのどの部分にデータがあるのかを意識しなくて良いのです。
データベースとは、 「複数のプログラムによって利用されるデータを、1つの場所で保管するもの」なのですね。
そのとおり。また、データを1カ所で管理することを、データの「一元管理」といいます。
では次に、ファイルシステムとDBMSの違いについて、「ファイルの場所」と「ファイル共有」という2つの点から比較してみます。
ファイルシステムの場合
プログラミングする際に、ファイルの物理構造を意識する必要があります。データへのアクセスが要求される時などに、ファイルの場所、何バイト目かなどの情報が必要となるからです。そうなると、データの桁数が多くなってしまいますし、データの構造が変わるとそれに伴ってプログラミングの変更も必要になります。
たとえば、プログラムAがファイルaを利用したいという場合、「必要なデータがファイルaの何処に格納されているか」をプログラムAのなかにあらかじめ記述しておく必要があります。では、プログラムAが別のファイルbを利用したいという場合はどうなるかというと、ファイルbの何処に必要なデータが格納されているか、その場所もプログラムAのなかに別途記述する必要があります。このようにして、利用したいデータが増えれば増えるほど、プログラム中にデータの位置を記述する必要も生じるのです。それに加え、データの位置が変更されたり、利用するデータが増えたりするたびに、常にプログラムを修正する必要があるのです。
扱うプログラムの数や利用するデータが少ない単純な仕組みであれば、さほど大きな問題はないでしょう。しかし、扱うデータが増えた時はプログラムの修正も多大なものとなってしまいます。プログラムで個々に変更・管理するのは難しいですし、プログラムの負担が増えてくるとコントロールするのは非常に大変です。
データベースの場合
データの格納場所は、DBMS側で管理されます。プログラムは、それぞれ必要なデータをデータベースに要求します。すると、データベースがプログラムに代わってデータベースから必要なデータを取り出してくれます。データベースを利用すれば、データの位置を意識する必要はなく、ファイルシステムのようにわざわざプログラム中に記述する必要もありません。
図1 ファイルシステムとデータベースの違い
なるほど。こうして2つを比較した説明を聞くと、データベースを利用するとプログラミングやデータの管理がとても楽になることがわかりました。保管場所を意識するとしないでは、大きな違いがあるのですね。
保管場所について簡単にまとめると、
ということになります。
はい。ここまでは整理して理解できました。
では次に、「共有」について説明します。最近では、コンピュータ上のデータに複数のユーザーがアクセスしたり利用したりすることが頻繁におこります。1つのプログラムが1つのデータを使うのであればとくに問題はありませんが、複数のユーザーが1つのデータを共有して利用(同時実行)する場合にはいくつかの不都合が生じることが考えられます。では、ファイルシステムとDBMSでどのような違いがあるのか説明しましょう。
ということは、データベースならユーザーは何もする必要はないということになりますよね?
はい。そのように理解していただいて結構です。
さて、本日の講義で説明したことをまとめてみましょう。
たくさんのデータを扱うときや、複数の人でデータを共有する際には、データベースを利用するとじつに大きなメリットがあることがよくわかりました。データの管理や操作、複数のユーザーが同時に利用したい場合の制御を自動的にやってくれるなんて、DBMSって賢いなと感心してしまいました。
データベースを利用することにより、データを扱う際に多くの恩恵を享受できることは間違いないですね。
では、本日の講義はこれで終了とします。次回は、「データベースの種類」についてご説明します。
"基礎から始めるデータベース入門セミナー" インデックスに戻る
本記事は、「オラクル通信」の同名連載記事から抜粋し、一部に修正を加えたものです。
Copyright © 2010, Oracle Corporation Japan. All rights reserved.
無断転載を禁ず
この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。
Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス名は米国Oracle