このページの本文へ

前へ 1 2 次へ

【特別企画】データベースプラットフォームとしてのLinux(第2回)

2003年11月03日 00時00分更新

  • この記事をはてなブックマークに追加
  • 本文印刷

RDBMSの必要とする機能

RDBMSについては、いくつか定義が挙げられているが、今日のRDBMSが一般的に持っている機能は、大雑把に言えば以下のようになるだろう。

(1)データをテーブルで管理する
(2)テーブルを構成する列、およびテーブル自体を管理する機構を持つ
(3)データの整合性を保つトランザクション管理機能を持つ
(4)しかるべきバックアップ、リストアなどのデータ保護機構を持つ
(5)ANSI標準に準拠したSQLで動作する
(6)ANSI標準以外に拡張されたSQL機能を持つ
(7)SQLを実行したり、データベースを操作するためのアプリケーションや操作機能を持つ
(8)一般言語(C/C++、Java、Windows環境ではVB、VBAなど)からSQLを利用するためのインターフェイスを持つ(図2)

図2RDBMSの機構

 今日のRDBMSとしては、上記のような機能が必要と考えられる。また、(5)以降の部分に関しては、必須というよりも強く推奨される機能と言うべきであろう。  さらにRDBMSで必要とされる代表的な機能についてもいくつか述べていきたい。

■トランザクション管理

図3トランザクション処理

 トランザクション管理機能とは、ひと言で言えば、データが更新されたかされてないかを制御する最低限の処理単位である。一般のファイルシステムと違い、複数のデータ間での整合性を保つ必要のあるRDBでは、RDBMS自体が相互のデータの間の一貫性(少なくとも設計者が設定した定義に基づく整合性)は保証されている必要性がある。
 トランザクション処理では、相互に関連し合っているデータ間において、片方のデータだけ更新されてもう片方が更新されないような事態は許されない。これはシンプルな例だが、実際の在庫管理や生産管理、経理などのアプリケーションでは、トランザクションはもっと複雑で、参照したり更新時の影響を受けるテーブルの数も多くなる。
 そこで、処理がすべて正常に終わりデータベースの更新作業が完了した時点で、それを確定させる動作を行う。これがコミット(commit)処理である。
 一方、トランザクション処理の最中に何かエラーが起きたり、データの矛盾で処理を中断しなければならない事態が生じたら、すべての更新処理を取り消し、データベースを元の状態に復元させる。これがロールバック(Rollback)処理である(図3)。
 また、トランザクション処理中は、更新対象データが他のトランザクションにより更新されることがあると、処理の開始時と実行途中時でデータの内容に違いが生じ、正常な処理の継続ができない。このためトランザクション処理を行う際には、対象資源を処理終了までロックしたり、コミットまたはロールバックが終われば、ロックを解除したりする仕組みが必要となる。このような処理を排他制御と呼ぶが、これらの機能はRDBMS製品ごとにその設計思想や実装方式に差が出て、特徴が出てくる部分でもある。
 実際の設計、開発やチューニングでは、これらの機能がどのように実装されているか把握することが大事なることもあるので、注意が必要だ。
 ここまで述べたような、トランザクション処理に要求される機能をまとめてACIDとも言う。

A:Atomicity 原子性
 完全に実行され完了するか、完了できなければ処理前の状態に戻す。
C:Consistent 首尾一貫性
 処理の順番にかかわらず、結果は同じとなる。
I:Isolated 独立性
 他のトランザクション処理の結果の影響は受けない。
D:Durable 耐久性
 トランザクションが完結したら、障害が発生してもデータの状態が変化しない。

 ACIDとは、以上の頭文字を並べたものであり、トランザクション処理を理解するうえでは重要な概念である。

前へ 1 2 次へ

カテゴリートップへ

  • 角川アスキー総合研究所
  • アスキーカード