Thomas write rule とは

コンピュータサイエンス、特にデータベースの分野では、トーマスの書き込みルールはタイムスタンプベースの同時実行制御のルールです。古い書き込みを無視するように要約できます。
最近のトランザクションがすでにオブジェクトの値を書いている場合、直近のトランザクションは最終的なトランザクションによって上書きされるため、それ自身の書き込みを実行する必要はありません。
トマス書込み規則は、開始時にトランザクションに事前定義された論理的順序が割り当てられている状況で適用されます。たとえば、トランザクションを作成するときに単調に増加するタイムスタンプが割り当てられることがあります。ルールは、トランザクションが実行される順序の変更が異なる出力を作成するのを防ぎます。出力は、常に事前定義された論理順序と一致します。
たとえば、3つの変数(A、B、C)と2つのアトミック演算C:= A(T1)とC:= B(T2)を持つデータベースを考えてみましょう。各トランザクションには、読み取り(AまたはB)と書き込み(C)が含まれます。これらのトランザクション間の唯一の競合は、Cへの書き込みです。以下は、これらのトランザクションの操作の可能なスケジュールの1つです。
[ T 1 T 2 R e a d ( A ) R e a d ( B ) W r i t e ( C ) W r i t e ( C ) C o m m i t C o m m i t ] [ T 1 T 2 R e a d ( A ) R e a d ( B ) W r i t e ( C ) C o m m i t C o m m i t ] {\displaystyle {\begin{bmatrix}T_{1}&T_{2}\\&Read(A)\\Read(B)&\\&Write(C)\\Write(C)&\\Commit&\\&Commit\end{bmatrix}}\Longleftrightarrow {\begin{bmatrix}T_{1}&T_{2}\\&Read(A)\\Read(B)&\\&Write(C)\\&\\Commit&\\&Commit\\\end{bmatrix}}}
(トランザクションが作成されたとき)T1にT2に先行するタイムスタンプが割り当てられると(すなわち、論理順序に従って、T1が最初に来る)、T2の書き込みのみが可視になるはずである。しかし、T2の書き込み後にT1の書き込みが実行された場合、これを検出して書き込みを破棄する方法が必要です。
実際のアプローチの1つは、値を変更する最後のトランザクションのタイムスタンプを示す書き込みタイムスタンプ(WTS)で各値にラベルを付けることです。トーマス書き込みルールを強制するには、オブジェクトの書き込みタイムスタンプが書き込みを実行するトランザクションのタイムスタンプより大きいかどうかを確認する必要があります。そうであれば、書き込みは破棄される
上記の例では、トランザクションTのタイムスタンプをTS(T)、オブジェクトOの書き込みタイムスタンプをWTS(O)とすると、T2の書き込みはWTS(C)をTS(T2)に設定します。 T1がCを書き込もうとすると、TS(T1)TS(T2))がCに書き込まれ、TS(T3)> WTS(C)となり、書き込みが許可されることがわかります。