世はまさにビッグデータビジネスの時代。
データサイエンスへの注目も年々高まっていますが、一方で、「eコーマス、SNSを起点とした新しいデータの出現」「急激に増加し続けるデータ」などを背景に、私たちが気づかないところでは、データベースの改良・開発・導入も進んでいます。
では、ビッグデータ時代と呼ばれる現在に至るまで、どのようにデータベース関連の技術は進化してきたのでしょう?
- そもそもデータベースとは何か
- どのような経緯でデータベースは発展してきたか
目次
データベースとデータベース管理システム
歴史を振り返る前に、大事なポイントをおさらいします。
「データベース」と「データベース管理システム」って何か違うんですか?
データベース: DB
まず、データベース(DB)について説明します。
データベースは、データへのアクセス、管理、更新を容易にすることを目的に、体系的に収集したデータの集合です。データベースといえば、通常、ディスク上に電子データとして蓄積されたものを指します。
データベースは、図書館のイメージです。より正確なデータベースの定義に興味があれば「ISO/IEC 2382-1」をご確認ください。
抑えておきたいデータベースの特徴が3つあります。
- データベースは、現実世界のある側面をモデル化したもの。これを議論領域 (Universe of Discourse: UoD)と呼ぶ。
- データベースは、論理的に一貫性があるデータの集合であり、意味を持つ。
- データベースは、特定の目的のために設計、構築され、データを分布している。
「モデルは決して完璧ではない」という点に注意する必要があります。
何が言いたいかというと、「データのソース」と「実世界」はある程度の相互作用がありますが、実世界で起きた出来事の全てがデータベースに記録されるわけではありません。
これを忘れていると、「データが世界の全てを語る」と考えてしまうドツボにハマり、後でどえらい目にあうことがあります。
データベースのデータの特徴をよく理解した上で、データを扱う必要があります。
データベース管理システム: DBMS
続いて、データベース管理システム(DBMS)について説明します。
DBMSは、利用ユーザーがデータベースを運用・管理できるようにするためにデザインされたソフトウェアシステムです。
様々なユーザーとアプリケーションの間で、DBMSは5つの機能の実行を容易にします。
- 定義:データベース上でのデータのタイプ、構造、制約を決める。また、データベースの定義、記述情報は、DBMSによって、メタデータとして蓄積する。
- 構築:DBMSによって制御されている記録媒体にデータを保存する。
- 操作:(1)データベース上の特定データの検索、(2)実世界での変更を反映したデータベースの更新、(3)データからのレポート生成、を実行するためのクエリ機能を備えたデータベースを操作する。
- 共有:多数のユーザーやプログラムがデータベースへ同時アクセスすることを許可する。
- 保護:(1)ハードウェアやソフトウェアの不具合に対するシステムの保護する、(2)権限がない、あるいは、悪意があるアクセスに対して、安全を保護する。
DBMSは、データベースの運用・管理の役割を担うソフトウェアシステムだと分かります。
例えば、図書館に本があるだけでは、施設の機能として不十分ですよね。図書館にある本が増えるほど、記録を効率的に扱うため、本の登録・保存などの管理・運営が必要になります。
DBMSは、要望を出すと、対応してくれるコンシェルジュみたいなものですかね。
DBとDBMSをまとめたものを「データベースシステム」と呼びます。(Figure 1)
データベースの進化
コンピュータが登場する以前は、情報は石や紙を媒体にして記録・保存していましたが、データベースという概念はいつ誕生したのでしょう?
データベースの歴史は1960年ごろから始まりました。ここでは、データベースの進化の変遷を6つのフェーズに分けてまとめます。
Phase1. 初期データベースの実装
コンピュータの登場は、データの自動的な記録を可能にしました。
1960年〜1980年代にかけて、この頃は、ヒエラルキーシステム(Hierarchical system)、ネトワークモデルベースシステム(Network model-based system)、転置ファイルシステム(Inverted file system)、といった初期データベースシステムの実装が主流でした。
当時のコンピュータは大きく、高価な装置でしたが、1960年頃から、企業、大学、病院、銀行、etc…の大きな組織でデータベースシステムの実装が始まります。
では、この頃のデータベースシステムの欠点はなんだったのでしょう?
主には、「データへのアクセスの柔軟性と効率性」と「メンテナンスの手間」です。
初期データベースシステムは、「物理ストレージ」と「ディスク上への記録場所」の概念関係が混在していました。そのため、「データ抽象化」と「データ独立性」の能力が十分ではありませんでした。
これによって何が起こるか。例えば、2つのエンティティの間に新しいリレーションを設けたとき、データへ効率的にアクセスするための柔軟性を失いました。この問題に対応するために、リレーションを変更する場合は、マニュアルでデータベースを再構築する必要がありました。
また、初期データベースシステムは、プログラミング言語のインタフェースで提供されており、ユーザーフレンドリーではありませんでした。新たなクエリやトランザクションを実装するためには、新しいコードの記述、テスト、デバッグを実施する必要があり、これらは時間とコストがかかる作業でした。
聞いただけで、面倒くさそうだなと感じました。大仕事だったんですね。
Phase2. リレーショナルデータベースの登場
1970年、(1)データの物理ストレージを概念関係から分離、(2)データ表現とクエリの数学基礎の実現、を目的に、エドガー・F・コッドからリレーショナルデータベース(Relational database: RDB)のモデルが提案されました。
リレーショナルデータベースは、初期データベースシステムで扱っていたインタフェースのプログラミング言語を、高水準言語「クエリ言語」に置き換え、新しくクエリを書く作業を大幅に高速化しました。
1970年後半に実験的なリレーショナルシステムが開発され、1980年前半ごろからは、商業的にリレーショナルデータベース管理システム(RDBMS)が導入され始めました。その後、「新しいストレージと索引技術の開発」「より良いクエリのプロセスと最適化」が実施され、RDBMSのパフォーマンスはさらに向上しました。
最終的に、リレーショナルデータベースシステムは、最も優位なデータベースシステムとしての地位を獲得しました。今日でも、RDBは様々な場面で利用されています。
リレーショナルデータベースの発展に多大なる貢献を残したコッド氏ですが、氏のヒューマン・ヒストリーにも注目です。
Phase3. オブジェクト指向データベースの登場
1980年半頃、複雑に構造化されたオブジェクト形式のデータを保存・共有するため、オブジェクト指向データベース(Object-oriented database: OODB)が登場しました。
OODBは、RDBより高速に複雑なデータを処理します。例えば、OODBは、(1)多数のデータが結びついた製造システム、(2)異なる種類と形式が含まれるテキスト、音声、動画などのマルチメディア、etc…のための特定アプリケーションに利用されています。
OODBのコンセプトは、RDBMSの新しいバージョンに組み入れられ、1990年代にはオブジェクト指向リレーショナルデータベース管理システム(ORDBMS)の誕生を導きました。
なんだか最後はOODBがRDBMSに取り込まれたみたいなお話ですね。
そうなんです、OODB自体の市場規模は、期待の割には小さいそうです。
Phase4. Web・eコーマスの登場
1991年8月6日、世界に大きな変化が起きました。World Wide Web: Webの登場です。Webによって、コンピュータ同士が巨大なネットワークで繋がり始めました。
このブログもそうであるように、Webページは、Webページを作るための言語「HTML」で作ることができます。そして、これらはWebサーバー上に保存され、他のユーザーはWebブラウザ(Google Chrome, Safari, Microsoft Edge, etc…)を使って、Webサーバーにアクセスすることで、Webページを見ることができます。また、ドキュメント同士はハイパーリンクを使って、結びついています。
Webは、eコーマス(electronic commerce)の誕生を導きました。eコーマスのwebページ上で表示される膨大な重要情報(商品価格、口座残高、時刻表、席の予約、etc…)は、DBMSから直接抽出して表示します。eXtensible Markup Language: XMLをはじめ、様々なデータベースとWeb上のデータの交換を簡単に行うための技術が開発されました。
Phase5. データベースの拡張
データベースシステムは、様々な用途に合わせた新たなアプリケーション開発への展開を始めました。当時、専門的なソフトウェア、ファイル、データ構造を使っていたアプリケーションは、データベースシステムを拡張することで、それぞれのニーズに合わせたより便利なサポートを提供しました。
今日のアプリケーションの例として、以下の事例が挙げられます。
- 科学:高エネルギー物理学、ゲノム解析、タンパク構造解析などの大規模な実験結果の蓄積
- 画像:スキャン、写真、衛星画像、MRI画像などの蓄積・検索
- 動画:映画、ビデオクリップなどの蓄積・検索
- 座標:天気予報、地図、ナビゲーションシステムのため地理データの蓄積
- 時系列:日別、月別の株価データ、売上データなどの蓄積
それぞれの分野のアプリケーション開発のためには、基本のリレーショナルシステムでは不十分であることが分かり、データベースエンジニアたちは、新たな機能をシステムに追加していきました。
Phase6. NoSQLデータベースの登場
Not only SQL: NoSQLは、RDBとは異なる新しいタイプのデータベースです。NoSQLは、巨大なストレージが必要な場合に利用される分散データベースです。
21世紀に入り、ソーシャルメディア、eコーマス、web検索を事業とする巨大企業が登場しました。同時に、新しいタイプのデータが生まれ、初期データベースの頃からは想像もできないデータ量が、日々生成されるようになりました。
(1)巨大なデータの集合でも素早く検索、(2)安全にデータを保存、できる新しいタイプの巨大データベースシステムが必要となり、NoSQLの開発が活発になりました。
NoSQLは、以下4タイプが代表例に挙げられます。
- キーバリュー: Redis, Dynamo, Riak
- カラム指向: HBase, Cassandra, Hypertable
- ドキュメント: Amazon SimpleDB, CouchDB, MongoDB, Riak, Lotus Notes, MongoDB,
- グラフ: Neo4J, Infinite Graph, OrientDB, FlockDB
年々、生成されるデータ量は増え続け、今後3年で生成されるデータ総量が過去30年で生成されたデータ総量よりも多い状況です。(2) 現在もデータベースは進化を続けています。
私が大好きなTwitterとインスタは、NoSQLデータベースで扱われるんですね。
動画:「データベースの歴史」
以下の動画は「データベースの歴史」についてです。自分たちが生まれる前の様子が映像で見れるのは良かったです。
まとめ
この記事の内容をまとめます。
- データベースとデータベース管理システム
- データベース: 体系的に収集したデータの集合
- データベース管理システム: データベースを管理・運用するためのソフトウェアシステム
- データベースの進化
- Phase1: 初期データベースシステムの実装
- Phase2: リレーショナルデータベースの登場
- Phase3: オブジェクト指向データベースの登場
- Phase4: Web・eコーマスの登場
- Phase5: データベースの拡張
- Phase6: NoSQLの登場
データエンジニアほどではないにしろ、データサイエンティストにもデータベース関連の知識が求められる場面もあります。プロジェクト開始前に、例えば、(1)プロジェクト達成のための目的データの取得方法の検討、(2)プロジェクト自体の実現可否の判断、などに役立つのではないでしょうか。
データ蓄積環境を整えるといっても、いろんなデータ、データベースの種類があるんですね!
素人目線ですが、増え続ける情報量を扱うため、データベースシステムのアプローチは変化してきたのだから、そりゃ人間の社会システムも変わっていかないと齟齬が生じるよな、と個人的には感じました。
この記事は以上です。最後まで読んで頂きありがとうございました!
参考資料
(1) Krstić, Lazar & Krstić, Marija. (2018). Testing the performance of NoSQL databases via the database benchmark tool. Vojnotehnicki glasnik. 66. 614-639.
(4) educative, Database Design Fundamentals for Soft Engineering, “What is a database?” (1/6/2022 アクセス)
(5) UKessays, “The Evolution of Database Management System” (1/4/2022 アクセス)
(6) Wikipedia, エドガー・F・コッド (1/5/2022 アクセス)
(7) 意外と知らないWebの歴史 (1/5/2022 アクセス)
(8) Ramez Elmasri, Shamkant B. Navathe, “Fundamentals of Database Systems Seventh Edition” (2016)
少し立ち止まってこれまでの流れを見つめてみるため、この記事は「データベースの発展の歴史の全体像」をまとめます。