スポンサーリンク

【基本情報技術者】トランザクションって何?世界一わかりやすく解説

スポンサーリンク
基本情報技術者

基本情報技術者の過去問などを解いていると、「トランザクション」という言葉がたびたび出てきます。
なかなか日常では出てこない用語ですので、ピンとこない方も多いのではないでしょうか。

今回はそんな「トランザクション」についてわかりやすく解説していきます。

トランザクションとは?

トランザクション(transaction)は「さまざまな小さな処理をひとまとめにしたもの」という意味です。

本来は、トランザクションは「取引」という意味ですね。

例えば、「(サッカーで)シュートをする」というトランザクションがあるとします。

サッカーのシュートでは次のように2つの動きをしますよね。

足を振りかぶる

足を振る

この2つを合わせて「シュートする」と言っています。まあ、ヘディングシュートとかもあるけど

このようにトランザクションは「いくつかの処理(動き)をセットにしたもの」を表します。
世の中の多くの行動は「トランザクション」と言えなくもないかもしれませんね。

ITの世界ではデータを一定の形で保存した「データベース」においてよく出てきます。

トランザクションの4つの性質

トランザクションにはACID特性と呼ばれる4つの性質があります。一つ一つ見ていきましょう。

原子性(Atomicity)

おそらく、一番ピンとこないのが「原子性」です。
何でこんな意味分からない日本語になっているかというと、元の英語のAtomicityを直訳したからです。

原子性というのは、トランザクションにおけるさまざまな処理は「全部実行されるか」か「何も実行されない」かのどちらかしかない、という性質です。

つまり、「トランザクションを途中までやる」ということができません。

コラム

ちなみに、Atomicという単語に「不可分の」「分けることができない」という意味があります。

つまり、トランザクションの原子性というのは「様々な処理を一つにまとめたものがトランザクションだけど、分けていいとは言っていない」ということを表しています。

物質において、「原子」はこれ以上分けることができませんよね。Atomという単語が「原子」になったのはここから来ています。

一貫性(Consistency)

一貫性というのは「トランザクションの前と後でデータにエラーや矛盾がない」ということです。

例えば、「このデータは整数以外は入りません」というデータなら、トランザクション前も後も整数が入ります。

ちゃんとルールに従っている性質」と言ってもいいかもしれません。

独立性(Isolation)

独立性というのは「トランザクションを複数実行しても互いに干渉しない」ということです。
つまり、同時に2つのトランザクションを実行しても、別々にやっても同じ結果になるということです。

例えば、「山田太郎, 18歳」という数字のデータがあるとします。

「名前に「さん」をつける」という処理と「年齢の「歳」を取る」という処理は同時にやっても別々にやっても「山田太郎さん, 18」となります。

ところが、「年齢を20にする」という処理と「年齢を16にする」という処理だと、処理の順番が前後すると結果が変わってしまいます。

永続性(Durability)

永続性というのは「実行されたトランザクションの結果はちゃんと保存される」という性質のことです。

何かトラブルが起こった場合でも、実行されたものに関してはちゃんと結果が反映されているということです。

また、トランザクション途中の実行過程は「ログ」と呼ばれる記録が残されるため、途中で止まってしまってもそれを元に結果に反映できます。

基本情報の過去問を解いてみよう

基本情報技術者令和3年免除 問28
DBMSに実装すべき原子性(atomicity)を説明したものはどれか。

ア:  同一データベースに対する同一処理は,何度実行しても結果は同じである。
イ: トランザクション完了後にハードウェア障害が発生しても,更新されたデータベースの内容は保証される。
ウ: トランザクション内の処理は,全てが実行されるか,全てが取り消されるかのいずれかである。
エ: 一つのトランザクションの処理結果は,他のトランザクション処理の影響を受けない。

原子性は「全部実行されるか、全部実行されないか」でしたので、答えはになります。

ちなみに、アはACID特性とは少し違いますが一貫性に関連した性質です。イは永続性、エは独立性を表しています。

まとめ

トランザクションというのは様々な処理をひとまとめにしたもののことです。
難しく考えなければ言葉の意味は理解できると思うので、本記事を参考に学習を進めてください。

タイトルとURLをコピーしました