分散トランザクションとは?(What is a Distributed Transaction?)

👉 一言でいうと
「複数の場所(サーバやデータベース)にまたがって、ACID特性を守りながら行うひとかたまりの処理」

普通のトランザクションは 1つのDBの中だけ
でも実際のシステムでは「AのDBとBのDB」「DBとメッセージキュー」など、複数のシステムにまたがって更新する必要があることが多い。
このときの安全な処理の仕組みが 分散トランザクション です。

目次

生活のたとえ

💳 クレジットカード決済+航空券予約

  • 航空会社のシステム:座席の予約を「確保」する
  • クレジット会社のシステム:料金を「引き落とす」

→ どちらも成功なら「予約確定」
→ 片方が失敗なら「どちらもなかったことに」しないと困ります。

これを1つにまとめて「全部成功 or 全部失敗」にするのが 分散トランザクション

具体例(ITシステム)

シナリオ:ネットショップで買い物

  1. 在庫DB → 商品の数量を1つ減らす
  2. 決済DB → クレジットカードで支払い処理
  3. 配送システム → 配送依頼データを登録

これを全部まとめて「1トランザクション」にしたい。
途中で「決済だけ失敗」すると「在庫は減ったのにお金は払われてない」状態になるので大事故。

実現方法:2フェーズコミット(2PC)

分散トランザクションでよく出てくるのが Two-Phase Commit(2PC) という仕組み。

  1. 準備フェーズ(Prepare)
    コーディネータ(管理役)が各システムに「準備できる?」と聞く
    • 在庫DB「OK、在庫は押さえた」
    • 決済DB「OK、引き落とし予約した」
  2. コミットフェーズ(Commit)
    全員が「OK」と答えたら「実行!」と指示
    → 全部反映される
    もし誰かが「NG」なら「全部キャンセル」になる

メリットとデメリット

メリット

  • 安全:複数システムにまたがっても「全部成功 or 全部失敗」が保証される

⚠️ デメリット

  • 処理が重くなる(全員のOKを待つ必要あり)
  • ネットワーク障害や1台の故障で「ロックされたまま」になるリスク
  • 大規模システムではパフォーマンスが落ちやすい

まとめ

  • 分散トランザクション=複数のシステムをまたいでACIDを守る仕組み
  • 代表的な実装は 2フェーズコミット
  • 例:在庫−決済−配送をまとめて「全部成功/全部失敗」

👉 最近は「マイクロサービス」や「クラウド」では、分散トランザクションを避けて 最終的整合性(Eventually Consistent)補償トランザクション(失敗したら別処理で取り消す) を使うことが多いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

GoodMorning!

デジタルの海原を冒険しながら、美食の宝を探し求める探検家です。テクノロジーの世界を舞台に、新しい発見を求めて、キーボードの海を横断。そして、実世界では、隅々まで足を運んで、舌鼓を打つ価値のある美味しいお店を見つけ出します。

私の使命は、小さなITの豆知識から始まり、心を満たすグルメスポットの紹介まで、あなたの日常にちょっとしたスパイスを加えること。画面の向こう側から、気軽に楽しめる話題を届けたいのです。ここでは、私が「これは!」と思った技術的な小話や、舌の記憶に残るような食べ物屋さんを紹介していきます。

このWebサイトは、ITとグルメ、二つの世界を融合させた、まさにデジタルと現実の融合点。ふらっと立ち寄って、新たな発見や、ほっこりするような話題で一息ついていただけたら幸いです。知識の海を冒険し、味覚の旅を楽しみましょう。毎日を少しだけ特別なものに変える、そんな情報をお届けします。

GoodMorning!

I am an explorer who ventures across the digital sea in search of gastronomic treasures. In the world of technology, I traverse the sea of keyboards in search of new discoveries. And in the real world, I visit every nook and cranny to find a delicious restaurant worth tantalizing your taste buds.

My mission is to add a little spice to your everyday life, starting with little IT tidbits and ending with foodie spots that fill your heart. I want to bring you topics that you can easily enjoy from the other side of the screen. Here, I'm going to share with you some of the technical tidbits and I will introduce small technical stories and food shops that will leave a lasting impression on your taste buds.

This Web site is truly a fusion point of digital and reality, combining the two worlds of IT and gourmet. I hope you will stop by and take a breather with new discoveries and dusty topics. Come explore the sea of knowledge and enjoy a journey of taste. I will bring you the information that will change your everyday life into something a little more special.

目次