私たちの社会は、データなしでは成り立たないほどデータに依存しています。そんな情報化社会を支える技術が、データベースです。データベースがあるために、膨大なデータを私たちは取り扱えるのです。
そんなデータベースの仕組みや種類について、今回はかみ砕いてご説明します。概要を理解して、その違いや活用法を頭に入れましょう。
データベースの基礎知識
まずは、データベースについての基礎知識をおさらいしましょう。
そもそもデータベースとは?
データベースの定義は、一定の形式で整理されたデータの集合体です。データの管理や共有、検索、更新などが複数の人の間でうまくできるよう、さまざまな方法でデータを並べます。
集められるデータ量は膨大ですので、ただ順番に積み重ねるだけではあっという間に管理が破綻してしまいます。家にある洋服や本も、特定のルール(使う人や季節、種類など)に沿って分類することで見つけやすく、取り出しやすくなります。目に見えないデータも同じで、特定のルールと形式に沿って並べることで管理しやすくしているのです。
なお、データベースは情報科学だけで使われる概念ではありません。昔から存在する辞書や百科事典なども、データベースの一種と解釈することもできます。データベースと似たような工夫は、遠い昔から実践されてきました。
データベースの活用法
データの格納(蓄積)と整理、検索、更新、削除などの管理のためにデータベースが活用されます。データ量が豊富であれば、それだけデータの使い道が広がります。たとえば、ECサイト(オンラインショップ)でたった1人の購買データがあってもあまり役に立ちませんが、1万人の購買データがあれば売れ筋商品や時間帯、購入者の性別や属性などさまざまな分析が可能です。
データへアクセスして検索や更新などを行うには、それ専用のシステムやソフトウェアが必要です。こうしたデータベース管理システムを「DBMS(Database Management System)」と呼びます。
データは多く蓄積すること、そして蓄えたデータを整理し、目的に沿って活用することが大切です。データ自体が価値を生むのではなく、その使い方が価値を生むと言えます。
データベースの主な種類
データベースにはさまざまな種類があります。ここでは、データの格納方法に応じて3つのタイプをご紹介しましょう。
階層型
複数の階層に分かれ、ツリー構造でデータを格納するデータベースです。1つのデータが、複数のデータに対して1対多のような親子関係を持つのが特徴です。たとえば最上部に「果物」という親データがあり、その下に「みかん」「りんご」「ぶどう」などの子データがあり、さらに「みかん」の下に「オレンジ」「夏みかん」「グレープフルーツ」などの子データが存在するイメージです。
階層型データベースでは、1つの親データに対してアクセスするルートは1通りに限るというルールがあります。しかし、現実のデータを思い起こしてみると、データの冗長化(重複)が発生して多対多や多対1となるケースも往々にしてあります。学校の生徒をデータベース化するとき、ある生徒は「1年1組」にも「サッカー部」にも属している、ということがあります。こうした場合、その生徒のデータを2つ用意して格納しなければなりません。
こうした問題を解決する場合、構造に合わせてデータベースを改変する必要があるかもしれません。また、その際にはプログラマーが階層構造をよく理解しておかなければなりません
ネットワーク型
網の目上に関係性が構成されたデータベースです。それぞれのデータ単位(ノード)がつながっているので、階層型とは異なり複数の親データにアクセスできます。先ほどのように「1年1組」と「サッカー部」に属している生徒のデータを、ひとつのファイルで格納できるようになります。
ネットワーク型の欠点はデータとプログラムの独立性や、データの扱いにくさです。ネットワーク型はデータ構造の制限が厳しく課せられています。プログラム内のデータベースの構造を少し改変するだけで、そのプログラムを大きく修正することになりかねません。
リレーショナル型(関係型)
一般に「リレーショナルデータベース(RDB)」と呼ばれ、エクセルのように業と列を持った表形式でデータの格納と管理を行います。データベース内のデータの配置にとらわれず、個別のデータへ自由にアクセスすることが可能です。メインフレーム(汎用大型機、システムの中央にある巨大コンピュータ)重複やデータの独立性などの問題も解消されていることから、現在では広く使われるようになりました。
リレーショナル型データベースの管理システムを、特にRDBMSと呼びます。SQLというデータベース専用のプログラミング言語が開発されたため、データベースを作成したり問い合わせ(検索)を行ったりすることが容易になりました。「CREATE(作成)」や「SELECT(選択)」、「JOIN(結合)」、「ROLLBACK(ロールバック=操作取り消し)など基本的な英単語を用いて命令文を書き、操作を実行します。1980年代に、IBM社が世に出したIBM Db2というDBMSが最初にSQLを採用したと言われています。
エクセルのブックのような単位をテーブルと呼びます。このデータベース型では、複数のテーブルを関係(リレーション)させることでデータを表示します。
代表的なデータベース
アプリケーションがデータベースへアクセス(接続)するとき、その種類を指定する必要があるケースがあります。そこで、代表的なデータベースの種類を最後にご紹介します。
Oracle
アメリカの大手ソフトウェア会社であるOracle社が開発・販売するデータベースです。Unix系(Linux)、WindowsなどOSを問わず操作が可能であり、豊富な機能を備えて大量のトランザクション(命令)にも耐えられるため、大規模システムで特に用いられています。
Oracle社が提供するPL/SQLというプログラミング言語でデータ集合を操作することができます。一般的なプログラミング言語と組み合わせることも可能です。
MySQL
MySQLは、ソースコードが一般公開されるオープンソース系のデータベースの中でも特に大きなシェアを誇っています。多くのレンタルサーバーにインストールされています。
MyISAMやInnoDBなど、複数の異なる形式を持つデータベースを選択できるのが特徴です。両者は、データアクセス時のロック(当該データに対する一部操作を不可とする仕組み)の形式や性能、バックアップのとりやすさなどいくつかの点で違いがあります。
SQL Server
Oracle Databaseと同じように、大規模システムに特化したデータベースです。MicrosoftがOracleに対抗する形で販売を開始した製品で、MicrosoftのOSであるWindows系のサーバーのみ対応しています。
SQL Serverは、Transact-SQL(T-SQL)と呼ばれるプログラミング言語を使用して操作します。データベースに対する一連の処理手続きを「ストアドプロシージャ」という1つのプログラムにまとめ、RDBMSに保存することができます。これによって、ユーザーは同じ処理を何度も実施する必要がなくなり作業効率化を図れます。
SQL Serverから派生したデータベースとして、Sybaseというものがあります。Microsoftと提携してSQL Serverを提供していたSybase社のデータベースで、今はERPパッケージ世界最大手のドイツSAP社の子会社として存続しています。
SQLite
その名の通り、軽量型のデータベースです。そのためモバイル環境における中小規模のシステムで利用が増えています。アプリケーションに組み込んで利用するのが一般的で、スマートフォンのAndroid端末の標準ライブラリとして採用されています。
MariaDB
MySQLの技術者が独立して開発したデータベースです。概ねMySQLと同様の機能を有し、オープンソースである点も同じです。ただし、サポートや保守機能はついていないので、利用する際はシステム会社へ依頼する必要があります。似たようなオープンソース系データベースとして、PostgreSQLがあります。
情報化社会を支えるデータベース
データ利用者から普段意識されることはありませんが、データベースの発達によってより大量のデータをスピーディーかつ便利に活用できるようになりました。データベースは、まさしく情報化社会を支える情報インフラの一つであり、仕事で扱わないとしてもデータベースを理解することには大きな意味があります。今回ご説明した概要を、ぜひ頭に入れておいていただければと思います。