トランザクション
端的な説明
取引(Transaction)という英単語.
たとえば,ATMの引き落とし操作などは以下のような擬似コードに落とせる.
code: withdraw.js
function withdraw(database, desired = 0){
const balance = database.read(my_account);
if (balance < desired) {
return false;
}
database.write(my_account, balance - desired);
return true;
}
x++ もこれにあたる.
このとき Read と Write の間で残高が変わったり,電源が落ちて100年が経過してから書き戻したりすると困る.
よって database オブジェクトに対する操作は二回行われているが,これらは一連の操作としてまとまってほしい.
どちらかが失敗したり,どちらかが異常なら,両方共実行しなかったことにしてほしい
なのでこのとき,このwithdraw 関数の処理をまとめてトランザクションと呼ぶこととする.
トランザクションという概念があって,この一連の処理をまとめてメタに一つの処理として扱いたいという要求に近い
トランザクションが満たすべき性質として提唱されたのがACID特性である. 他にもいろいろ提唱されているがACIDが有名.
「トランザクション」といえば,ACIDなトランザクションを指すことが多い.