本記事は教養記事シリーズその36です。その他の教養記事はコチラの目次をご覧ください。
ロールバックとは?
2相コミットとは?
コミット
コミット(Commit)は英語で「約束・合意」というような意味で,IT業界では主に「トランザクションの処理を確定させる」操作を指します。トランザクションというのは,処理のかたまりを表す単位のことを指します。詳しくはコチラの記事でお伝えしています。
ロールバック
トランザクションの処理を確定させるコミットでは,異常を検出した場合に更新を中断させて正常な状態に戻す作業が必要になります。この作業を「ロールバック」と呼びます。2相コミットメントというのは,データベースが分散したシステムでロールバックをうまく利用するためのアイディアなのです。データベースに関してはコチラの記事をご覧ください。
1相コミットメント
一相コミットメントでは,あるトランザクション処理が発生して,複数のデータベースが更新されたときに片方がエラーを起こしてしまうと,更新処理に矛盾が起きてトランザクション処理の原則(ACID特性)である「原子性」と「一貫性」を満たさなくなってしまいます。
2相コミットメント
一方で,2相コミットメントでは「確定することもできるし」「元に戻すこともできる」状態であるセキュア状態を作り出すことで,片方に異常が起こった場合にロールバックを可能にしています。
ひとこと
分散型のデータベースにすることで,多くの情報を整理してデータベース処理することが可能になった一方で,コミットに問題が起こるということです。今後新型の分散データベースや,まったく新しい形のデータベースが開発された際には,トランザクション処理の原則であるACID特性やBASE,CAP定理等を確認しながら,どのような対処や回避方法が妥当かを検討していく必要があります。