「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

グローバルトランザクション

pointこの用語のポイント

point「ここから ここまでワンセット」な処理だよ

point複数のリソースにまたがるよ

point「ローカルトランザクション」の対義語だよ

スポンサーリンク

簡単に書くよ

グローバルトランザクション(英:global transaction)とは

「分散トランザクション」のこと。
用語の中身としては

複数のコンピュータとかデータベースが出てくる「ここから ここまでワンセット」な処理(トランザクション)のこと
です。


image piyo

詳しく書くよ

最初に留意事項です。
分散トランザクション」の意味を知っている方は、ここから先を読む必要は ありません。
分散トランザクションの別の呼び名……と言えるのかは分からないけど、分散トランザクションと(多分)同じ意味の用語が「グローバルトランザクション」です。

グローバルトランザクション

「分散トランザクションって何よ?」な人は、このまま読み進めてください。
まずは予備知識として「トランザクション」の説明をして、その流れで「分散トランザクション(グローバルトランザクション)」について説明します。

ちょっと休憩3

それでは、いってみましょう。

トランザクションは「ここから ここまでワンセット」な処理単位です。

例えば、そうですね。
ピヨ太君がピヨ子ケーキショップにケーキを買いに行きました。

グローバルトランザクション2

ピヨ太君はケーキを買います。
ピヨ太君のやることは

1.商品を受け取る
2.代金を払う


の2つです。

グローバルトランザクション3

この2つはワンセットです。
どちらか片方だけでは成立しません。

商品だけ受け取ってお金を払わなければ泥棒です。
商品を受け取らずにお金だけ払ったのではピヨ太君はケーキが食べられません。
両方揃って、はじめて「ケーキを買う」という行為が成立します。

グローバルトランザクション4

このような

「ここから ここまでワンセット」な処理単位

がトランザクションです。
小難しい言い方をすると「分割不可な一連の処理」です。

グローバルトランザクション5

さて、ピヨ太君は無事にケーキを買えました。
ピヨ太君は自分のやった行為をデータベースに記録します。

「なんで、そんなことをするの?」なんて聞いてはいけません。
説明の都合上です。

まずは……そうですね。
ピヨ太君はピヨ太データベースに「商品を受け取った」という内容を記録しました。

グローバルトランザクション6

次に、ピヨ太データベースに「お金を払った」という内容を記録しました。

グローバルトランザクション7

そうすると、ピヨ太データベースには

1.商品を受け取った
2.お金を払った


の2つの内容が記録されます。

グローバルトランザクション8

ここで ちょっと考えてみてください。

ピヨ太データベースに「お金を払った」という内容を記録するのに失敗したら、どうなるでしょう。

グローバルトランザクション9

そうですね。

1.商品を受け取った

の内容だけが記録されます。

グローバルトランザクション10

……が、それでは困ります。

「商品を受け取った」と「お金を払った」の2つはワンセットです。
1つだけ記録されている状況は、よろしくありません。

そこで「お金を払った」を記録するのに失敗したら「商品を受け取った」の記録も消します。
一旦なかったことにして、必要に応じて最初からやり直すのです。

グローバルトランザクション11

これがトランザクション処理の特徴というか注意点です。

ワンセットの処理の途中で失敗したら、最初からやり直す

必要があります。

少し余談っぽい説明もありましたが、トランザクションについては何となく分かったでしょうか。
以上を踏まえて、本題に入ります。

結論を先に書くと

複数のリソース(コンピュータとかデータベースとか)が関わっているトランザクション

が「グローバルトランザクション」です。
上でも書きましたが「分散トランザクション」とも言います。

普通のトランザクションは登場するコンピュータとかデータベースが1つです。

グローバルトランザクション12

グローバルトランザクションでは複数のコンピュータとかデータベースが登場します。

グローバルトランザクション13

例えば、そうですね。

ピヨ太君がピヨ太ママを連れてピヨ子ケーキショップにケーキを買いに行きました。

グローバルトランザクション14

ピヨ太君はケーキを買います。
ピヨ太君のやることは

1.商品を受け取る
2.代金を払う


の2つです。

グローバルトランザクション15

この2つはワンセットです。
どちらか片方だけでは成立しません。

商品だけ受け取ってお金を払わなければ泥棒です。
商品を受け取らずにお金だけ払ったのではピヨ太君はケーキが食べられません。
両方揃って、はじめて「ケーキを買う」という行為が成立します。

グローバルトランザクション16

……と、トランザクションの説明をするときに書きました。

実は、必ずしも

1.商品を受け取る
2.代金を払う


を1人でやるとは、かぎりません。
「商品を受け取る」人と「代金を払う」人が違う場合だってあります。

実際にピヨ太君はケーキ代をピヨ太ママに払ってもらいました。
「商品を受け取る」をやったのはピヨ太君ですけどね。
「代金を払う」はピヨ太ママがやったのです。

グローバルトランザクション17

さて、ピヨ太君は無事にケーキを買えました。
ピヨ太君は自分のやった行為とピヨ太ママがやった行為をデータベースに記録します。

まずは……そうですね。
ピヨ太君はピヨ太データベースに「商品を受け取った」という内容を記録しました。

グローバルトランザクション18

次に、ピヨ太ママデータベースに「お金を払った」という内容を記録しました。

グローバルトランザクション19

そうすると、ピヨ太データベースには

1.商品を受け取った

という内容が記録されます。
ピヨ太ママデータベースには

2.お金を払った

という内容が記録されます。

グローバルトランザクション20

おっと、データベースが2つ登場しましたね。

記録した内容は

1.商品を受け取る
2.代金を払う


です。
この2つはワンセットです。

グローバルトランザクション21

ただし、このワンセットな2つが別々の場所に記録されました。

グローバルトランザクション22

このような「ワンセットなトランザクションが複数のデータベース(とか)に分散される」のがグローバルトランザクションです。

さて、ここで ちょっと考えてみてください。

ピヨ太ママデータベースに「お金を払った」という内容を記録するのに失敗したら、どうなるでしょう。

グローバルトランザクション23

そうですね。
ピヨ太データベースに

1.商品を受け取った

の内容だけが記録されます。

グローバルトランザクション24

……が、それでは困ります。

「商品を受け取った」と「お金を払った」の2つはワンセットです。
1つだけ記録されている状況は、よろしくありません。

そこで「お金を払った」を記録するのに失敗したら「商品を受け取った」の記録も消す必要があります。
一旦なかったことにして、必要に応じて最初からやり直すのです。

グローバルトランザクション25

ということは、ピヨ太ママデータベースからピヨ太データベースに対して「ごめん。失敗したから、そっちでも消してよ」と伝える必要があります。
失敗したのはピヨ太ママデータベース側ですからね。
ピヨ太データベース側は上手く行った気分でいるかもしれません。

グローバルトランザクション26

なんか面倒くさそうですね。

そうです。
面倒くさいのです。
登場人物が複数になることによって、あんなことやこんなことを考える必要が出てきます。

よって、グローバルトランザクションでは、普通のトランザクションよりもややこしいあれやこれやがあれやこれやします。

「あれやこれや」の具体的な内容については、他のところで勉強してください。


image piyo2

一言でまとめるよ

まぁ「グローバルトランザクション」って単語が出てきたら「複数のデータベースにまたがるトランザクション処理なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像020
書籍画像042

おまけ

■訳してみるよ

「global(グローバル)」の意味は「世界的な」とか「地球規模の」とか「大域的な」とかです。
「transaction(トランザクション)」の意味は「処理」とか「取引」とか「売買」とかです。
何となく くっつけると

世界的な取引

となります。





書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
「定年力」の鍛え方 老後の毎日を最高にする方法
サイバー忍者入門 忍者・スパイ・軍隊・ハッカーに学ぶ フルスタック・ハッキング