システム開発に携わっている方は「RDBMS」という言葉をよくお伺いすると思いますが、「RDBMSってなんの略?」「データベースとどう違うの?」といまいちわかっていない方もいらっしゃるのではないでしょうか。
そこで本記事ではRDBMSについてわかりやすく解説いたします。
RDBMS(リレーショナルデータベース管理システム)とは
RDBMSとは、「リレーショナル・データベース・マネジメント・システム」の略で、リレーショナルデータベースを管理するためのソフトウェアのことです。
「リレーショナルデータベース」とは、データベースのうち、データを表に似た構造で管理するものを指します。
下図はリレーショナルデータベースで扱うデータのイメージ図です。
関連のある属性を列とする表(テーブル)の形でデータを格納し、行単位でデータを操作するデータベースのことです。
他にも「ネットワークデータベース」などありますが、現在、業務システムにおいてはこの「リレーショナルデータベース」が主流となっています。
RDBMSはこのようなリレーショナルデータベースのデータの操作、データの信頼性を保つといった機能を持つ総合管理システムのことで代表的な製品には「Oracle Database」などがあります。
RDBMSの機能
RDBMSが提供する主な機能は以下のとおりです。
データベース言語(SQL)の提供
データベース管理システムは、ユーザーやアプリケーションがRDBMSに指示を与え、データを利用するための言語(データベース言語)を提供します。
RDBMSのデータベース言語は「SQL」です。
データベース言語は以下の3要素から成っています。
DML(データ操作言語)
データの検索、新規登録、更新、削除を行うための言語です。SQLのSELECT、INSERT、UPDATE、DELETE等を指します。
DDL(データ定義言語)
データの構造、格納場所等を定義するための言語です。
テーブルやインデックスを作成するCREATE、変更・削除するALTER、DROP等を指します。
DCL(データ制御言語)
データへのアクセス制御を行ったり、データの管理をして信頼性を保証するための言語です。
データベース利用者に特定の権限を与えるGRANT、権限を剥奪するREVOKE、トランザクション管理(のちに詳しく解説します)のためのCOMMIT、ROLLBACK等を指します。
トランザクション処理
トランザクションとは、データをある一貫した状態にするためのひとまとまりの処理です。
例えば販売管理システムにおいてある商品を販売した場合、
- 在庫管理テーブルを更新し在庫を減らす
- 販売記録テーブルに情報を追加する
- 販売明細記録テーブルに情報を追加する
RDBMSにはACID特性という性質を守りながらトランザクションを管理する機能があります。
ACID特性を構成する4つの性質は以下です。
原子性
トランザクションは完全に実行されるか、まったく実行されないかどちらかでなくてはなりません。
もしトランザクションの一部の処理が失敗した場合は、その他の処理結果も反映しない必要があります。
一貫性
トランザクションを実行したことによって、データに矛盾がある状態になってはいけません。
独立性
トランザクションを同時に複数実行していたとしても、単独で実行した場合と同じ結果にならなくてはいけません。
上記のトランザクションを例にすると、残り一個の在庫の購入処理が完了する前に他のユーザーが購入処理をした場合、最後の一つの商品を購入した販売記録が複数できてしまうおそれがあります。
それを防ぐために適宜データベースにロックをかけ、先のトランザクションが終了するまで他の操作でテーブルを更新できないようにします。
永続性
システム障害が発生したとしても、すでに正常に完了済みのトランザクションの結果は失われてはいけません。
この性質は、この後解説する障害からの復旧機能で実現されています。
障害からの復旧
RDBMSは、ハードウェアの障害やユーザーの誤操作などでデータが損失するといったデータベース障害が発生した際に、データの信頼性を保証するための機能を備えています。
障害からの回復にはバックアップファイル(ある時点でのデータベースの情報をコピーしたファイル)と、バックアップ取得以後のログファイル(データベースに対してどんな変更を行ったかの履歴)が必要です。
障害が発生した場合、データベースをバックアップファイルと置き換えたのちに、ログファイルに記録された変更を再度RDMSに実行させることで障害発生前のデータを回復させることができます。
分散データベース
RDBMSは分散データベースシステムをサポートしています。
分散データベースとは、ネットワークで接続された複数のデータベースを、あたかもひとつのデータベースのように動かす技術です。
分散データベースを構成しているデータベースであれば、一回の問い合わせで別々のデータベースから同時にデータを取得することができます。同様に、データの変更も同時に行うことができます。
この時、ユーザーはデータが格納されている場所を意識する必要がありません。
分散データベースを構築することで、仮に一つのデータベースに障害が発生してもほかのデータベースにアクセスすることでシステム全体が利用不可になることを防ぐことができます。また、処理性能の向上も期待できます。
Oracleでは複数のOracleデータベースによる分散データベース・システムのほか、他のデータベース製品を含む分散データベース(異機種間分散データベース・システム)をサポートしています。
RDBMSの種類
代表的なRDBMSをいくつかご紹介します。
RDBMSには企業から提供されている商品である「商用データベース管理システム」と、有志の開発者コミュニティで開発され、自由に利用・改変可能なオープンソースのデータベース管理システムがあります。
以下は代表的な商用のRDBMSの製品名、カッコ内は提供しているベンダーです。
- Oracle Database(Oracle)
- Microsoft SQL Server(Microsoft)
- IBM DB2(IBM)
一方、代表的なオープンソースのRDBMSは以下です。
- MySQL
- Postgre SQL
RDBMSのシェア
WEBサイトでのメンション数やIT関連Q&Aサイトでの質問の数といったいくつかの指標からデータベース管理システムの人気を順位付けするDB-Engines ranking(https://db-engines.com/en/ranking)では、2021年8月のトップ5は以下となっています。
- Oracle Database
- MySQL
- Microsoft SQL Server
- Postgre SQL
- MongoDB
5位のMongoDBはNoSQL系ですが、上位4つはいずれもRDBMSです。
RDBMSが2021年8月現在も広く利用されており、多くの人の関心を集めていることがわかります。
また前述のガートナー社の調査で2008年シェア1位だったOracleがここでもランキング1位となっており、依然高い人気を誇っています。
まとめ
関係データベースは2021年現在もっとも普及しているデータベースといえます。
そのためシステム開発においてはRDBMSの知識が必要不可欠です。そのなかでも特にRDBMSを操作するのに必須のSQLと、システム構築にトランザクション管理の基本的な知識はおさえておくとよいでしょう。
以下、自分が学習に使用した書籍になります。とても参考になりました。
図解まるわかり データベースのしくみ
データの取り扱いから運用方法、SQL言語まですべて図解
確かな知識がつく「使える教科書」
学習書のお求めはこちらから → IT開発関連書とビジネス書が豊富な翔泳社の通販『SEshop』