データベースは、データの管理の方法によっておおまかに階層型・ネットワーク型・リレーショナル型・NoSQL型の4種に分類することができます。以下ではそれぞれの種類について解説します。
データベースの種類
主なデータベースの種類は以下のとおりです。
階層型
階層型は、親ノードが複数の子ノードを持つツリーの形でデータを管理します。会社の組織図や、家系図、コンピューターのディレクトリ構造のようなイメージです。
子ノードが複数の親を持つことは出来ません。ゆえに子ノードにアクセスするルートが1つに限定され、速度が早くなるというメリットがあります。
一方ある子データに複数の親を持たせたい場合(前述の家系図の例で言えば、ある人が養子に入ったため実親、養親ともに親子の関係になるように登録したいといった場合)には、それぞれの親ノードの下に同じデータを登録する以外の方法がありません。そのためデータが冗長になりやすいのが階層型のデメリットです。
また、データの追加や削除を行うと各子ノードへのアクセスルートが都度変わってしまい、柔軟なデータ管理がしにくいです。
代表的な階層型データベース製品はIBMのIMS、Data Langage/1 VSEで、いずれもメインフレームで動作します。
ネットワーク型
ネットワーク型は、子ノードが複数の親ノードを持つことができ、網の目のようなデータ構造となります。そのため「複数の親ノードの下に同じ子ノードを持たせたい場合、データが重複する」という階層型のデメリットを克服することができます。
データの登録・削除のたびにデータへのアクセスルートが変わるという特徴はそのままであるため、階層型同様データ構造を意識せずにデータを利用することができないというデメリットがあります。
世界最初の商用データベースIDS(Integrated Data Store)はネットワーク型データベースでした。
リレーショナル型(関係型)
リレーショナル型は互いに関連のある複数の属性を列とする表(テーブル)の形でデータを格納し、行単位でデータを操作します。
メリットは共通の属性によって複数の表を関連付けるなど、柔軟なデータ処理ができることです。また行単位でデータの追加・削除を行うため、階層型やネットワーク型と違ってプログラム側でデータ構造を都度意識する必要がありません。
一方デメリットは複雑なデータ同士の関係が表現できるぶん処理するデータが膨大になり、負荷も大きくなりがちなことです。
データベース管理システムの人気を順位付けするDB-Engines rankingでは、2021年9月時点のトップ5のうち4つがリレーショナル型データベース製品です。よって、今現在最も広く使われているデータベースといえるでしょう。
またIPAの国家資格であるデータベーススペシャリスト試験でも、問題のほとんどがリレーショナル型データベースについてです。
NoSQL
NoSQL系データベースとは、おおまかに「リレーショナル型データベース以外」のデータベースを指します。関係データベースのデータ構造に縛られず、様々な構造のデータを扱うことができます。
NoSQL系データベースは関係データベースほど排他制御が厳格ではありません。ゆえに関係データベースのようにはデータの独立性・一貫性が保証されないことがデメリットです。
その代わりに並列処理がしやすく、スケールアウトが容易というメリットがあります。そのため独立性・一貫性よりも大量のデータを高速で処理することを優先したいシステムに向いています。
以下では主要なNoSQL系データベースの分類をご紹介します。
キー・バリュー型
キーと値(バリュー)の組み合わせでデータを保存する形式です。値を読み出すときには、キー値を指定して検索を行います。
TwitterやFacebookではキー・バリュー型データベースのCassandraが使われています。
ソート済みカラム指向型
ソート済みカラム指向型は複数の名前とバリューの組み合わせ(カラム)を「行キー」と呼ばれるキーでグループ化します。行キーでグループ化されるキー・バリューの組の数は決まっておらず、動的に変更することができます。また、空のバリューがあっても構いません。
ドキュメント指向型
JSONやXMLといったデータ形式で記述されたドキュメントの形でデータを管理します。保存するドキュメントのデータ構造は決まっておらず、都度異なっていても構いません。様々なデータ構造のデータ、特にJSON形式のような複雑な階層構造を持つデータを一元管理することができるのがメリットです。
グラフ指向型
データ同士のつながりを表現することができます。ネットワーク状のデータ構造の中で、ある二点の最短経路を検索するといった場合に強みを発揮します。たとえば地図上で最短経路を検索する、SNSで自分の友達かもしれない人を探すといった機能を実装するのに適しています。
DBMSとは
DBMS(Data Base Management System)とはデータベース管理システムの意で、データベースを管理、運用するためのソフトウェアを指します。DBMSの主な機能は以下です。
データベース言語の提供
データの検索・更新・削除やデータ構造の定義、データベースへのアクセス制御といった操作を行うための言語を提供し、ユーザーの操作に従ってデータの処理を行います。ユーザーとコンピューター内のデータの仲立ちをする存在ともいえます。
物理データを隠蔽する
データベース管理システム経由でデータにアクセスすることで、ユーザーはデータが記憶装置のどこに保存されているか意識する必要がなくなります。記憶装置を変更した場合でもプログラムを変更する必要はありません。
障害からの復旧
データベースに障害が発生した場合にバックアップとログファイルを利用して過去の操作を復元するといったデータの復旧機能を備えています。
分散データベース
ネットワークで接続された複数のデータベースを、あたかもひとつのデータベースのように動かすことで、可用性・処理能力を向上させることができます。
前述の関係データベースを管理するためのソフトウェアをRDBMSと呼びます。RDBMSはDBMSの中でもデータのACID特性を特に厳格に保っています。RDBMSが提供するデータベース言語がSQLです。
データベースの製品の種類
以下ではRDBMS、NoSQL系それぞれの代表的なデータベース製品をご紹介します。カッコ内は提供しているベンダー、記述がないものはオープンソースまたはパブリックドメインです。
また、NoSQL系データベースはデータの形式も記載しています。
RDBMS
・Oracle Database(Oracle)
・Microsoft SQL Server(Microsoft)
・IBM DB2(IBM)
・MySQL
・PostgreSQL
・SQLite
・Microsoft Access(Microsoft)
NoSQL
・MongoDB(MongoDB Inc. )-ドキュメント指向
・Redis-キー・バリュー
・Cassandra-キー・バリュー
まとめ
データベースはそのデータ構造によって分類されます。そしてデータベースの種類によってメリット・デメリットや向いている用途は異なります。使用するデータベースを決定する際にはそのメリット・デメリットとアプリーションの機能要件、性能要件とを合わせて検討しましょう。
- カテゴリ:
- キーワード: