memorandums

日々のメモです。

2相コミット

データベースの世界で言うコミットとは、データベースへの変更操作(insert,delete,update等)を確定するコマンドです(Link)
情報処理試験でコミットに関係した用語として2相コミット*1という言葉が出てきます。業務システムを開発している方にはお馴染みだと思いますが、学生にとってはそうではありません。

日常生活にありそうな概念ですので、何か良い例えがないものかと考えてみました。といってもわざわざここに書くようなことではないのですが、考えた足跡をメモ用に残しておきます。しかし。。。どうしても、プロジェクト管理系の話しか思い浮かびません。

2相コミットのたとえ話

佐藤さん、鈴木さん、山田さんの3人で夏休みを利用して1ヶ月くらいのロングキャンプに行くことにしました。でも、キャンプ道具も車を持っていません。そこで、佐藤さんはテント・寝袋を、鈴木さんは調理器具を、山田さんは車を借りてくることにしました。しかし、残念なことに山田さんが借りてきた車をぶつけてしまいました。結局、借りたものを返し、キャンプに行くことができませんでした。

この話の中で、全体の目標はキャンプに行くことで、そのために、3つの小目標がありました。

  • テント・寝袋を借りる
  • 調理器具を借りる
  • 車を借りる

このうち、1つだけ調達に失敗してしまいました。1ヶ月借りる予定の品々は、借りっぱなしではまずいので借り元に返し、キャンプに行くことはできませんでした。


小目標の実行の失敗により、全体の目標が実現できなくなったとき、小目標の実行を全てキャンセル(rollback)する例でした。しかし、小目標の実行した結果が、そのままの状態ではまずい(不整合がおきる)。。。というイメージは、この例では伝わりにくいですね。。。考えます。

*1:2相コミットの定義はここ(Link)を参照してください。