読み方:とらんざくしょんしょり《transaction processing》企業情報システムなどにおいて、複数の関連する作業をひとつの単位として処理すること。Weblio国語辞典では「transaction processing」の意味や使い方、用例、類似表現などを解説しています。">

「transaction processing」の意味や使い方 わかりやすく解説 Weblio辞書 (original) (raw)

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。出典検索?: "トランザクション処理"ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2021年6月)
この項目では、トランザクション処理の原理について説明しています。特定の実装については「トランザクション処理システム」を、その他の用法については「トランザクション (曖昧さ回避)」をご覧ください。

トランザクション処理(トランザクションしょり、: transaction processing)とは、トランザクションと呼ばれる不可分な操作から構成される情報処理の形態。

解説

トランザクションは、データベースをある一貫した状態から別の一貫した状態へ変更するアクションを1つに束ねたものである[1]トランザクション処理は、既知の一貫した状態のデータベースを維持するよう設計されており、相互依存のある複数の操作が全て完了するか、全てキャンセルされることを保証する。

例えば、顧客の普通預金口座から当座預金口座に500ドルを移動させる典型的な銀行のトランザクションを考えて見る。このトランザクションは銀行側から見れば1つの操作であるが、コンピュータから見れば少なくとも2つの操作から構成される。普通預金口座から500ドルを引き落とし、当座預金口座に500ドルを入金するのである。引き落としが成功して入金が失敗した場合(あるいは逆の場合)、銀行の帳簿はその日の営業完了時点で不整合を生じる。したがって、2つの操作が両方成功するか、両方失敗することを保証する必要があり、それによって銀行のデータベースに不整合が生じないようにする。トランザクション処理はそのような保証をするよう設計されている。

トランザクション処理では、データベースの個々の操作が自動的に1つに連結され、不可分のトランザクションとされることがある。トランザクション処理システムは、1つのトランザクション内の全操作がエラー無しに成功するか、全操作が実行されないことを保証する。一部の操作が成功し、他の操作でエラーが発生した場合、トランザクション処理システムはそのトランザクションの「全」操作を「ロールバック; roll back」し、そのトランザクションによる痕跡を消去してデータベースを一貫した状態(そのトランザクションを開始する前の状態)にリストアする。あるトランザクションの全操作が完了した場合、そのトランザクションはシステムによって「コミット; commit」され、データベースに加えられた更新内容が恒久的なものとなる。コミットされたトランザクションがロールバックされることはない。

トランザクション処理は、ハードウェアソフトウェアの障害によってトランザクションが部分的に実行され、データベースが不明で一貫しない状態になるのも防ぐ。コンピュータシステムがトランザクションを処理中にクラッシュしてしまった場合、トランザクション処理システムはコミットされていない全トランザクションがキャンセルされることを保証する。

トランザクションは厳密に時間順に処理される。n+1 番目のトランザクションが n 番目のトランザクションと同じデータベース内のデータにアクセスする場合、n 番目のトランザクションがコミットされるまで n+1 番目のトランザクションは開始されない。あるトランザクションが開始される前にそのトランザクションが操作する予定のデータベースの部分を更新している全トランザクションは先にコミットされなければならない。先行するトランザクション群には hole は全く存在しない。

技法

トランザクション処理システムの基本原則は、どのようなシステムであっても同じである。しかし、システムによって用語が異なる可能性があり、以下で使用する用語は必ずしも常に通用するとは限らない。

ロールバック

トランザクション処理システムはデータベースの整合性を保証するため、データベース更新の中間状態を記録し、トランザクションがコミットできなかった場合にデータベースを既知の状態にリストアするためにそのような記録を活用する。例えば、トランザクションによる更新前のデータベースの情報のコピーを事前に取って置く(これをbefore imageと呼ぶ)。トランザクションがコミット前に失敗した場合、そのコピーを使ってデータベースをトランザクション開始前の状態に戻す。これを「ロールバック」と呼ぶ。

ロールフォワード

また、データベースへの更新毎に別にジャーナルを保持することも可能である(これをafter imageと呼ぶ)。これはトランザクション失敗時のロールバックには不要だが、データベースの障害発生時のアップデートには便利である。そのためトランザクション処理システムでもこれを提供している場合がある。データベース全体の障害が発生した場合、最近とられたバックアップからデータベースを復元する。バックアップは、バックアップ採取後にコミットされたトランザクションによる更新を反映していない。しかし、データベースをリストアした後、after imageのジャーナルをデータベースに適用してデータベースを最新状態にすることができる。これを「ロールフォワード」と呼ぶ。障害発生時に処理中だったトランザクションはロールバックされる。これにより、障害発生直前までにコミットされた全トランザクションが反映された一貫した状態のデータベースが復旧できる。

デッドロック

場合によっては、2つのトランザクションの処理中にデータベース内の同じ部分に同時にアクセスしようとして、互いの処理の進行を妨げる場合がある。例えば、トランザクション A が X にアクセスし、トランザクション B が Y にアクセスしているとしよう。その状態で、A が Y にアクセスしようとし、B が X にアクセスしようとしたとき「デッドロック」が発生し、どちらのトランザクションも先に進めなくなる。トランザクション処理システムはそのようなデッドロックが発生するのを検出するよう設計されている。通常、両方のトランザクションをキャンセルし、ロールバックする。そして、自動的に順序を変えて再実行し、デッドロックが再度発生しないようにする。

ACID 標準

トランザクション処理システムがデータベースの一貫性を保つ手法には様々な微妙な差異があるが、基本原則に違いはない。あらゆるトランザクション処理システムはACID属性(アトミック性、一貫性、独立性、永続性)と呼ばれる機能をサポートしている。

実装

IBMIMSなどの標準的なトランザクション処理ソフトウェア1960年代に開発が始まった。それらは特定のデータベース管理システム (DBMS) と密に結合されていることが多い。1980年代には同様の基本機能を実装したクライアントサーバシステムが成功を収めた。しかし近年、分散クライアントサーバシステムの保守が益々困難となってきた。(特に ウェブによる)オンラインサービスの増加に伴ってトランザクション数が増加し、単一のデータベースは現実的な選択ではなくなってきた。さらにクライアントサーバモデルでは単一のサーバがトランザクション処理を行うのに対して、多くのオンラインシステムは各種プログラムが協調動作することで構成されるようになってきた。今日ではプログラムレベルのトランザクション処理システムが数多く稼動しており、それをメインフレームを含む巨大なシステムにまで適用可能である。

業界標準としては、X/Open Distributed Transaction Processing (DTP) が重要である。しかし、IBM の CICS のようなプロプライエタリなトランザクションシステムも依然として多数利用されている。もっとも、CICS はオープンな業界標準も取り入れてきた。

脚注

  1. ^ A transaction groups a set of actions that transform the database from one consistent state to another.

参考文献

この節には参考文献や外部リンクの一覧が含まれていますが、**脚注による参照が不十分であるため、情報源が依然不明確です**。適切な位置に脚注を追加して、記事の信頼性向上にご協力ください。(2021年6月)

関連項目

データベース管理システム
データモデル 関係モデル データベース設計 正規化 参照整合性 関係代数 関係論理 データベース管理システム 関係データベース管理システム オブジェクト関係データベース 分散データベース トランザクション処理
概念 データベース ACID CRUD NULL 候補キー 外部キー 主キー スーパーキー 代理キー
オブジェクト 関係 () ビュー トランザクション ログ トリガ 索引 ストアドプロシージャ カーソル 分割
SQL SELECT INSERT UPDATE MERGE DELETE JOIN CREATE DROP COMMIT ROLLBACK TRUNCATE ALTER WHERE SAVEPOINT
構成要素 並行性制御 データ辞書 JDBC ODBC データベース言語 問い合わせ言語 クエリ最適化 クエリ実行計画
データベース製品 関係データベース管理システムの比較 データベース接続クライアント