データベースの基本機能
データベースを使ったサイトを作成するには、データベースについての基礎知識が不可欠です。ここでは、データベースの基礎知識と、リレーショナルデータベース、SQLの基本文法について説明します。
データベースとは、データを一括して管理し、アプリケーション間でデータを効率よく共有する為に作られた機能です。データベースがなかった当時は、各アプリケーション間がそれぞれデータを持ち、アプリケーション間で通信しながら管理を行っていました。この方式だと、アプリケーション間で重複データが存在するので、ディスク領域が無駄に消費される上に、データの一貫性を保つ為に更新処理が必要になり、更新ミスなどが起こる可能性がありました。そこで、データ管理をアプリケーションから独立させる為に、データを一括管理し、どのアプリケーションにも同じようにデータを提供できる機能として「データベース」が作成されました。データと処理を分けると、アプリケーションが処理に集中できるようになり、アプリケーション開発の効率も良くなります。一般に、データベースと呼ばれるシステムには、管理・共有機能のほかに以下のような機能があります。データの妥当性
データの漏洩対策
データの一貫性
障害対策データベースにデータを格納するときに、それが正しいデータかどうかを検証する機能です。存在しない日付や範囲外の数字などの不適合なデータが入力された場合に、アプリケーションに対して警告を送信することができます。
データベースにアクセスするユーザーに対してデータの更新・読み取りなどの権限を制御する機能です。権限のないユーザーのアクセスを禁止し、不正なアクセスからデータを守ります。
データを常に矛盾のない状態に保つための機能です。
例えば、AとBという異なる場所に列車の座席予約システムがあるとします。最初にA側のシステムのオペレータが1号車の3Eという席の空席を確認し、その席に対して予約操作を行いました。この予約操作が完了する前に、B側のオペレータが同じ1号車の3Eの予約状況を調べました。まだA側の予約が完了していないので、この席はまだ「空席」と表示されました。そこでB側のオペレータはこの席に対して予約操作を行いました。さて、結果はどうなるでしょうか? データの一貫性を保とうとする機能がの座席予約システムにない場合は、おそらくAの予約がBの予約で上書きされてしまうでしょう。しかし、我々が実際に使っている列車の予約システムでは、このような状況を防ぐための対策が講じられています。つまり、予薬の重複を防ぐために、Aが空席を照会した時点でそのデータをロックし、Aの予約が完了するまで読み出しできないようにします。こうすれば、Aが処理しているデータをBが誤って上書きすることはなくなり、データは常に矛盾のない状態に保たれます。
データベースは、データをロックする機能を提供します。アプリケーション側は、読み出そうとしたデータがロックされている場合は、ロックが解除されるまで待機状態になります。このロック処理がうまく管理できないと、アプリケーション間でお互いのロックの解除待ちになる可能性があります。こうなると、双方のアプリケーションで処理がとまってしまい、そこから先に進むことができなくなります。このような状態を「デッドロック」と呼びます。ロックを利用するときは、デッドロックを発生させないよう注意しなければなりません。
システム障害、ディスク障害などでデータに矛盾・破損が生じたときにデータの復旧作業を行う機能です。バックアップした内容から最新の状態を復旧し、データの維持につとめます。