トランザクションという用語は、ビジネスやITの分野で聞く機会が多いといえますが、それぞれ使われる文脈や意味が異なります。
この記事では、分野ごとのトランザクションの意味に加えて、データベースのトランザクション処理についての基本知識は一歩踏み込んで解説します。
トランザクションとは?
トランザクション(transactcion)は、英語で「取引」を表す言葉です。ビジネス分野、IT分野での意味合いについてもう少し掘り下げてみましょう。
ビジネス用語としての「トランザクション」
ビジネス用語としてのトランザクションは「商取引」を意味し、取引を成立させるために必要な一連の対応を指す言葉です。例えば、商品の購入から支払い、受け取りといった一連の流れがビジネス用語としてのトランザクションです。
IT用語・データベース用語としての「トランザクション処理」
IT用語としての「トランザクション処理」とは、複数の処理を一つの処理として一貫性を持たせて実行・管理する仕組みです。おもにデータベースの処理で用いられることが多く、データの整合性を保つために重要な仕組みとなっています。
データベースのトランザクション処理の例
例えば、在庫管理システムで在庫数が1つの商品を複数の購入者が購入しようとした場合を考えてみましょう。
注意点としては、在庫数が1つしか無いため、複数の購入者がいた場合には最初の購入者に販売し、他の購入者に対しては処理をキャンセルしなければなりません。
(トランザクション処理がない場合)
トランザクション処理を行わないと不具合が出る可能性があります。購入者AとBがほぼ同時に注文を開始した場合、それぞれの処理を独立して行うとそれぞれの処理で商品の在庫数が1つであると認識してしまう可能性があります。その場合、購入者AとBの注文はシステム上ではどちらも完了しているのに、引き渡せる商品が1つしか存在しない、ということになりかねません。
(トランザクション処理をする場合)
購入者Aの処理は1トランザクションとして、在庫の確保、注文内容のチェック、在庫数の修正(減少)、決済処理などが行われるでしょう。
購入者Aのトランザクションが処理されている間、購入者Bのトランザクション処理は待ち状態になり開始されません。
購入者Aのトランザクションが完了した後、購入者Bのトランザクション処理が行われますが、購入者Aのトランザクション処理の完了時点において在庫数は0に修正されているため、購入者Bの注文はキャンセルされる、という仕組みです。
このように複数の処理を独立させることなく、一つのトランザクション処理として扱うことで、システム全体の整合性を保つ仕組みがトランザクション処理です。
データベースのトランザクション処理を定義する4つの特性
トランザクション処理には「ACID特性」と呼ばれる4つの特性があります。ここでは、それぞれの特性について、簡潔に見ていきましょう。
Atomicity(原子性/不可分性)
トランザクション処理は、すべて完了(成功)するか、全てキャンセル(失敗)するかの2択であるという特性です。トランザクション処理は複数の処理を一つの処理として実行しますが、途中で処理が中断したり、いずれかの処理だけが完了したりする、ということはありません。もしも、複数の処理の一部が失敗した場合、すべての処理をもとに戻します。
Consistency(一貫性/整合性)
処理の前後で、データベース内に矛盾がないことが継続される特性です。データの整合性を保つために、トランザクション処理が完了した後は以前の状態に戻ることはありません。データベース内で一貫した規則が守られている、ということを表します。
Isolation(独立性/隔離性)
他の処理の影響を受けないことを表す特性で、トランザクション処理同士が干渉しないことを表します。前述の例のとおり、複数の処理が独立して実行された場合、お互いに影響を及ぼす可能性が考えられます。そのようなことが発生しないように、単独で実行した場合と同じ結果となるように一貫性を保つことが独立性/隔離性です。
Durability(永続性/耐久性)
処理が完了したあと、その結果が永続的に保存されるという特性です。処理の内容はログに記録されており、もしもシステム障害などでデータが破損してもログから再計算できます。この特性もデータの整合性を保つうえで、欠かせない特性の一つです。
まとめ
トランザクションは、ビジネス用語としては「商取引」を表し、IT用語としては「トランザクション処理」を表す言葉です。どちらの場合も「一連の取引」を表す言葉と覚えておきましょう。
IT用語ではおもにデータベースで利用される機会が多い言葉です。ACID特性と呼ばれる4つの特性についても知っておくと、より深く理解できるようになるでしょう。この記事の内容も参考にしながら、さらに理解を深めてみてはいかがでしょうか。
- カテゴリ:
- キーワード: