データベースを知る。② DBMS編

データベースを知る。② DBMS編

こんにちは、セブテク編集部です。

今回は、「データベースを知る。① DB編」に続き、「データベースを知る。② DBMS編」として、データベース管理システム(DBMS)について勉強していきましょう!

データベース管理システム(DBMS)とは ❓

データベース管理システム(以下DBMS)は英語でDatabase Management Systemと呼ばれ、データベースの操作や保管を行うためのソフトウェアを指します。

代表的なDBMSといえば、MySQL, PostgreSQL, SQLServer, Oracle, Microsoft Accessなどがあります。

DBMSはデータベースの定義やデータの検索・更新・削除、さらに操作・運用・管理を行う機能があり、Webアプリやスマートフォンなどのアプリとデータベースの間を取り持つのがDBMSの重要な役割です。

それでは、DBMSがその役割を果たすための代表的な機能について見ていきましょう。

DBMSの代表的な機能

データベース定義機能

「データベース定義機能」とは、データ定義言語(Data Definition Language:DDL)と呼ばれる言語でスキーマを定義することです。

「スキーマ」とは、簡単に言うと「データベースの構造」のことで、スキーマを定義するということは、データベースの構造やデータの格納形式を定義する、つまり利用する前の準備をすることです。

よく使われるデータ定義言語に「SQL」という言語がありますが、SQLでは、create文、drop文、alter文などの構文でスキーマを定義することができます。
※DBMSによって、スキーマの意味が異なる場合があるため、注意が必要です。また、スキーマの存在しないDBMSもあります。

データベース操作機能

「データベース操作機能」も、データベースの検索や更新をするためのDBMSの重要な機能のひとつです。

データ操作言語(Data Manipulation Language:DML)と呼ばれる言語で、個々のデータを検索・登録・更新・削除します。SQLでは、select文、insert文、update文、delete文という構文がそれらに相当します。

データ操作機能のおかげで、データベースを検索して検索結果を表示したり、データベースを更新したりすることができます。

データベース制御機能

「データベース制御機能」は、データへのアクセスを制御するための機能です。
データ制御言語(Data Control Language:DCL)の文によって、データのアクセスを制御します。

データベースをエクセルの表に例えるなら、表単位だけでなく、行や列単位の細かいレベルでのアクセス制御も可能です。

SQLでは、grant文やrevoke文といった構文を使用してデータへのアクセスを制御します。
ユーザーの認証・確認やアクセスの許可を行う、データ機密保護もデータベース制御機能に含まれます。

排他制御機能

オンラインのアプリケーションでは、同じタイミングで同じデータを更新することがよくあります。

例えば、ショッピングサイトで、ある缶ジュースの在庫が100缶のとき、Aさんが50缶を注文した直後に、Bさんが150缶の注文をしたとします。
この順序通りに処理されれば問題はありませんが、Aさんの処理に時間がかかっている場合、Bさんの処理が行われると在庫不足でエラーになってしまいます。

このような問題を防止するために「排他制御機能」があります。
排他制御とは、データを更新する前にそのデータをロックして、他のユーザーによるデータの読み書きができないようにすることです。
データを更新する際には、他のユーザーがデータをロックしていないか確認し、ロックがされている場合には、その処理が終わるのを待ってから処理を開始します。

「デッドロック」と呼ばれる、2つ以上のプロセスが互いの処理終了を待ち、結果としてどの処理も先に進めなくなってしまう状態も存在します。デッドロックを解消するには、Aさん、Bさんのどちらか一方の処理を強制的に終了させるなどの方法が考えられます。

障害回復機能

障害回復機能により、システムやプログラムの障害に対して、データベースを自動で復旧することができます。

代表的なデータベースの障害回復処理には、「ロールフォワード(前進復帰)」「ロールバック(後退復帰)」があります。

ロールバックは、データベースが物理的に壊れたりした場合に行い、バックアップを適用した後で、バックアップ以降にやっていたことを再現します。
つまり、簡単に言うと「やり直し」です。ロールバックは、障害が発生する前の状態に戻す復旧方法で、「取り消し」を意味します。

まとめ

以上、今回は、データベース管理システム(DBMS)の代表的な機能についてまとめてみました。データベースは複雑なように見えますが、意外と機能はわかりやすくてシンプルと感じた方もいるのではないでしょうか。

データベースに興味を持った方は、MySQL、PostgreSQLといったDBMSソフトウェアを使用して理解を深めてみてくださいね。

さいごに

フィリピン・セブ島でアプリ開発を行うSprobeでは、データベース管理システムに精通しているフィリピン人データベースエンジニアが数多くいます。
もし、ご興味があれば、お気軽にお問い合わせください。

オフショア開発・ブリッジSEカテゴリの最新記事