IT

【超初心者向け】2相コミットメントとは?図解で分かりやすく解説します!

本記事は教養記事シリーズその36です。その他の教養記事はコチラの目次をご覧ください。

★この記事の流れ★

コミットとは?
ロールバックとは?
2相コミットとは?

本記事は初学者の理解を優先しているため正確性に欠ける場合があります。致命的なミスはご指摘いただけますと助かります。

コミット

コミットって何の話?

 

コミット(Commit)は英語で「約束・合意」というような意味で,IT業界では主に「トランザクションの処理を確定させる」操作を指します。トランザクションというのは,処理のかたまりを表す単位のことを指します。詳しくはコチラの記事でお伝えしています。

 

ロールバック

コミットでは何が問題になるの?

 

トランザクションの処理を確定させるコミットでは,異常を検出した場合に更新を中断させて正常な状態に戻す作業が必要になります。この作業を「ロールバック」と呼びます。2相コミットメントというのは,データベースが分散したシステムでロールバックをうまく利用するためのアイディアなのです。データベースに関してはコチラの記事をご覧ください。

 

1相コミットメント

1相コミットメント

一相コミットメントでは,あるトランザクション処理が発生して,複数のデータベースが更新されたときに片方がエラーを起こしてしまうと,更新処理に矛盾が起きてトランザクション処理の原則(ACID特性)である「原子性」と「一貫性」を満たさなくなってしまいます。

【超初心者向け】ACID特性とは?トランザクション/BASE特性/CAPの定理についても分かりやすく解説します!本記事は教養記事シリーズその33です。その他の教養記事はコチラの目次をご覧ください。 トランザクション処理 ACID...

 

2相コミットメント

2相コミットメント

一方で,2相コミットメントでは「確定することもできるし」「元に戻すこともできる」状態であるセキュア状態を作り出すことで,片方に異常が起こった場合にロールバックを可能にしています。

 

ひとこと

分散型のデータベースにすることで,多くの情報を整理してデータベース処理することが可能になった一方で,コミットに問題が起こるということです。今後新型の分散データベースや,まったく新しい形のデータベースが開発された際には,トランザクション処理の原則であるACID特性やBASE,CAP定理等を確認しながら,どのような対処や回避方法が妥当かを検討していく必要があります。

ABOUT ME
zuka
京都大学で機械学習を学んでいます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※ Please enter your comments in Japanese to prevent spam.