8−11 DBMSとトランザクション

DBMSとは

 DBMS(データベースマネジメントシステム)とは、ユーザとデータベースの間に介在し、データベースの利用を支援するシステムの総称です。

DBMSが持つ機能は
 ・データベース定義(スキーマ定義)
 ・データベース操作(SQLによるデータ操作)
 ・データベース制御(データの整合性・障害対応など)

 

トランザクションとACID特性

 DBMSでは、多くの場合トランザクションという単位で処理を行います。
トランザクションとは、関連するいくつかの処理をまとめた一連の処理単位です。
 例えば、「口座1から口座2へ現金を振り替える処理」を考えます。
  1.口座1から出金する
  2.口座2へ入金する

からなりますが、この1と2はすべて正しく行われないと意味をなしません。つまり1と2は分けることのできない処理であり、これをまとめて一つのトランザクションにしなければなりません。

トランザクションは、次に示すACID(アシッド)特性という性質が保証されなければなりません。

A:Atomicity(原子性)・・・トランザクションは「完全に実行される」か「全くされないか」のいずれかである。
C:Consistency(一貫性)・・・トランザクションの実行結果はデータベースの内容を矛盾させない。
I:Isolation(独立性)・・・トランザクイションは他のトランザクションから影響を受けない(影響をあたえない)
D:Durability(耐久性)・・・正常終了したトランザクションの更新結果はデータベースからなくなることはない。

 

コミットメント制御

 トランザクションの原子性や一貫性を守るためには、トランザクション実行が成功したときに限ってデータベースの更新内容を確定させなければなりません。このような制御をコミットメント制御とよびます。

分散データベース

  • コミット (COMMIT):トランザクションが成功し、データベースの変更を確定すること。
  • ロールバック (ROLLBACK):トランザクションが失敗し、データベースの変更を取り消すこと。

 複数の拠点においたデータベースを連携させる分散データベースにおいては、データベース間で矛盾が生じないように制御する必要があります。この代表的なものに2相コミットメント制御があります。

 この制御では、更新の流れを2段階にわけます。第1段階(第1フェーズ)は仮更新のようなもので、各データベースは更新処理の成否をDBMSに伝えた後、コミット(確定)もロールバック(取り消し)も選べる状態となってDBMSの指示を待ちます。
 第2段階(第2フェーズ)でDBMSは各DBからの回答を調べ、全てのDBが更新可能な場合のみトランザクションをコミットします。もし、一つでもエラーがあれば、全体にロールバック(取り消し)指示を出します。全体が揃わないと、トランザクションの原子性が保てないからです。

 また分散データベース環境では、レプリケーションという技術もよく活用されます。
レプリケーションとは、オリジナルのDBと同じ内容のDB(レプリカ、複製)を用意しておき、オリジナルが更新されるとレプリカにもその内容を反映する機能です。