A口座(残高20,000円)から10,000円をB口座(残高30,000円)に振り込む場合
①A口座から10,000円を引き出し、口座残高を20,000-10,000=10,000円にする
②B口座に10,000円を振り込み、口座残高を30,000+10,000=40,000円にする
「トランザクション」という言葉の意味をご存知ですか?
このトランザクションとは、そもそも「商取引」を意味する言葉。しかし、テクノロジーが発達した現代社会においては、おもにIT分野で使われることが多いです。
そして、IT用語としての「トランザクション」は「商取引」とは少し異なる意味を持ちます。そこでこの記事では、IT初心者向けにトランザクションの意味について解説します。
またトランザクションの関連用語についてもまとめましたので、ぜひ参考にしてください。
この記事もオススメ
トランザクションとは
トランザクションは英語で「transaction」と表します。一般的に使われる意味とIT分野で使われる意味とでは、若干ニュアンスが変わります。
本章で、その意味について簡単に理解しておきましょう。
- 元々は「商取引」の意味を持つビジネス用語
- IT分野ではソフトウェア処理方式を指す言葉
元々は「商取引」の意味を持つビジネス用語
「トランザクション(transaction)」は、以下のような意味を持つ言葉です。
処理、取り扱い、処置、業務、取引、売買、会報、紀要、議事録
言葉自体の意味については、処理・取引・売買などを意味します。
しかしこれらは、IT分野におけるトランザクションの意味とは少し異なるのです。ただし、関連用語として後半で紹介する「トランザクションデータ」は、上記の意味が当てはまります。
IT分野ではソフトウェア処理方式を指す言葉
IT分野における「トランザクション」とは、おもにソフトウェア処理方式の一種を指します。
トランザクションを採用する代表的なシステムとしては、金融機関のコンピュータシステム(ATMサービス)を使って行われる振込処理です。
これだけでなく、ECサイトでのオンラインショッピング・飲食店や航空券の予約システム・在庫管理システムなど、あらゆるシステムでトランザクションは重要な役割を果たします。
トランザクションの詳細は次章で紹介しますので、参考にしてください。
この記事もオススメ
トランザクション(IT用語)はひとかたまりの処理
トランザクションは「それ以上分割できない処理」のことを指します。
例えばモノを購入する際、モノの代金を支払うこととモノを受け取ることはセットですよね。いずれかが欠けてしまうと、モノを購入したことにはなりません。
このように、「複数の処理が必要だけれどひとかたまりであるべき処理」のことを「トランザクション」といいます。
以下では、より具体的にトランザクションについて見ていきましょう。
- トランザクションの例
- トランザクションには「成功」か「失敗」しかない
トランザクションの例
トランザクションの代表的な例の1つが、「金融機関における振込処理」です。銀行で行う振込では、細かく分けると以下の2つの処理が発生しています。
もしもこの2つの処理を独立させてしまうと、例えば①の処理が成功して②の処理が失敗した場合、振込予定だった10,000円が中に浮いたような状態になってしまいます。
A口座から10,000円が引き出されたのにも関わらず、B口座は残高が30,000円のまま。つまり、A口座から出金された10,000円が消失してしまうのです。
このことを考えると、2つの処理を独立させるのはリスクがあることが分かります。
そこで重要なのが、2つの処理をひとかたまり(トランザクション処理)にすること。
①と②の処理をひとかたまりにすることで、いずれの処理も成功しないと全体として成功した状態にならないようにします。
すると、仮に「①は成功したが②は失敗」「①は失敗したが②は成功」という状態が発生した場合、強制的に取引前の状態に戻ります(ロールバック)。
こうすることで、前述した10,000円が消失してしまう事態を避けられるのです。
このように、そもそも複数あった処理をひとかたまりにすることによって、不具合を避けられるメリットが。このようなひとかたまりの処理のことをトランザクションといいます。
トランザクションには「成功」か「失敗」しかない
トランザクションはそれ以上分けることができない処理で、処理結果は「成功」か「失敗」しかありません。中途半端な結果は出ず、失敗すれば実行前に戻ります。
そのため、紹介したような「分割してはいけないひとくくりの処理」に対して適用されます。
トランザクションに関連する用語集
本章では、トランザクションに関連するIT用語を紹介します。
あわせて理解すると、プログラミングでデータベースを扱う際、ニュース記事などで用語が使われている際などに理解を深めやすいでしょう。
トランザクション処理(TP)
トランザクション処理とは、今回紹介したような銀行の振込処理のような、複数の処理をひとまとめにする処理方法のこと。この処理単位をトランザクションと呼びます。
ACID特性
ACIDとはトランザクション処理の特性の頭文字をとったもの。それぞれ「Atomicity:原子性」「Consistency:一貫性」「Isolation:独立性」「Durability:耐久性」を指します。
これら4つの特性はトランザクションへの理解を深める上で、非常に重要な要素です。以下で、それぞれの特性について簡単に解説しましょう。
Atomicity:原子性
「Atomicity:原子性」とは、トランザクションは、「すべての操作が完了する(成功)」か「一切実行されない(失敗)」かのいずれかでなければならないという特性のこと。
つまり、トランザクションは不可分(分けることができない)の単位として扱われます。
Consistency:一貫性
「Consistency:一貫性」とは、トランザクションの開始前と終了後、データベースは一貫性のある状態でなければならないとする特性のこと。
例えば、データベースのルールにそぐわないデータを追加・変更・削除しようとした場合、整合性を保つために取引前の状態に戻ります。
これにより、意図しない実行結果やデータベースのルールを破る行為を未然に防げます。
Isolation:独立性
「Isolation:独立性(隔離性)」とは、複数のトランザクションが同時に実行されている場合でも、各トランザクションは互いに影響を及ぼさないとする特性のこと。
例えば、複数ユーザーが同時に顧客情報の入ったテーブルを操作することはあるでしょう。
こうした場合でも、お互いのトランザクションは相互干渉したり影響を与えることなく、独立した処理として扱われます。
これにより原子性を保ちやすく、データの整合性も取れるのです。
Durability:耐久性
「Durability:耐久性(永続性)」とは、トランザクションが正常に終了(コミット)した場合、その結果はデータベースに永続的に保存され、回復性が確保されるという特性のこと。
これにより、システム障害が発生したとしても、大切なデータは失われません。
また、取引中に障害が発生した場合は、バックアップとして取っておいたログを元に、取引前の状態に復帰できます。
分散トランザクション処理
分散トランザクション処理とは、トランザクション処理をネットワークで接続された複数のコンピュータで行うこと。
複数のコンピュータが行う処理を、一つのかたまりの処理として管理します。
TPモニタ
TPモニタとは、複数の処理をひとまとまりのトランザクションとして管理するソフトウェアのこと。トランザクションモニタともいいます。
データベース管理システム(DBMS)
TPモニタ(トランザクションモニタ)が持つ機能は、データベース管理システムに含まれるケースがあります。
データベース管理システム(DBMS)とはデータベースを管理し、外部からの要求に応じてデータを検索したり抽出したりするソフトウェアです。
この記事もオススメ
SQL
データベース管理システムで利用する問い合わせ言語の一つです。SQLについては以下の記事をあわせて参考にしてください。
SQLはどんな言語?SQLでできることと学習のメリットを紹介SQLクエリ
データベース管理システム上でデータの検索・抽出を行う際に使われる文字列のこと。データの追加・更新・削除を要求する際にも用いられます。
コミット
「トランザクションには成功か失敗かしかない」と記しましたが、この場合の成功のことをコミットといいます。一旦コミットすると、結果を元に戻すことはできません。
コミットする前であれば、ロールバックによって処理前の状態に戻すことができます。
ロック
トランザクション処理における「ロック(lock)」とは、複数のトランザクションが同時にデータをアクセス・変更する際に、データの整合性を保つための排他制御のことです。
ロックには「占有(排他)ロック」と「共有ロック」の2つがあります。
占有ロックと共有ロック
占有ロックとは、データをロックする際、自分以外のほかのタスクはデータの読み書きが一切できないようにするロックのこと。
共有ロックとは、データをロックする際、自分以外のほかのタスクはデータの読み込みは可能だが書き込みはできないロックのこと。
デッドロック
ちなみに、ロックは正しく管理されなければなりません。特に占有ロックについては、進行中のタスクが完了するまで、ほかのタスクを待機状態にさせます。
これが正しく管理されないと、トランザクション間で相互にロックを待ち続ける状態(デッドロック)を引き起こしてしまう可能性もあるので、注意が必要です。
ロールバック
ロールバックは「後退復帰」「後進復帰」ともいいます。
正常な状態のデータなどを複製しておき、障害が発生した際に複製しておいた正常な状態に戻して復帰させることを指します。
トランザクション処理においては、コミットされていないトランザクション処理を全て取り消し、最初の状態を復帰させることができます。
バックアップ
ロールバックは、あらかじめ複製しておいた正常な状態のデータの時点に戻すことを指します。そして、この複製のことをバックアップといいます。
バックアップはデータの破損や損失に備えるために不可欠な操作です。
バッチ処理
一連の処理をまとめて自動で行う処理方式を「バッチ処理」といいます。大量のデータを一括で処理できるメリットがあり、処理の単位は「バッチ」です。
トランザクション処理とバッチ処理との違いは、バッチ処理がまとめて処理を行うのに対し、トランザクション処理は順次処理を行う点。
そのためトランザクション処理は、座席予約システムなどリアルタイムなデータ処理が必要になる場合に用いられます。
この記事もオススメ
トランザクションデータ
企業が取り扱うデータの一種で、今回取り扱ってきたトランザクションの意味と直接的な関係はありません。データ分析用語として使われます。
トランザクションデータは主に受発注・支払い・納品などの商取引データを記録したものを指し、顧客情報・商品情報などを記録したマスタデータと対で使われることが多いです。
トランザクションは不可分な処理方式
まとめると、トランザクションはおもにデータベースで行われる不可分な処理の単位。処理を分割することで発生する齟齬(そご)や不正を避けるための重要な処理方式です。
今後IT関連のニュースなどで「トランザクション」という言葉が出てきた場合は「分割できない不可分な処理」としてまずは理解していきましょう。
また、トランザクションは関連する用語も多いです。特にデータベースを扱うシステムエンジニアやプログラマーの方は、必ず覚えなければなりません。
データベースを正しく管理する上で重要な知識なので、押さえておいてください。
この記事もオススメ
はじめての転職、何から始めればいいか分からないなら
「そろそろ転職したいけれど、失敗はしたくない……」そんな方へ、テックキャンプでは読むだけでIT転職が有利になる限定資料を無料プレゼント中!
例えばこのような疑問はありませんか。
・未経験OKの求人へ応募するのは危ない?
・IT業界転職における“35歳限界説”は本当?
・手に職をつけて収入を安定させられる職種は?
資料では、転職でよくある疑問について丁寧に解説します。IT業界だけでなく、転職を考えている全ての方におすすめです。
「自分がIT業界に向いているかどうか」など、IT転職に興味がある方は無料カウンセリングにもお気軽にお申し込みください。