토마스 쓰기 규칙

Thomas write rule

컴퓨터 과학, 특히 데이터베이스 분야에서 Thomas 쓰기 규칙은 타임스탬프 기반 동시성 제어 규칙입니다.오래된 쓰기를 무시하는 것으로 요약할 수 있습니다.

이것은 보다 최근의 트랜잭션이 이미 객체의 값을 쓴 경우, 보다 최근의 트랜잭션은 결국 보다 최근의 트랜잭션에 의해 덮어쓰기되므로, 그 보다 최근의 트랜잭션에 대해서는 그 자체의 쓰기를 수행할 필요가 없다고 기술하고 있습니다.

Thomas 쓰기 규칙은 트랜잭션이 시작될 때 미리 정의된 논리 순서가 할당되는 상황에서 적용됩니다.예를 들어 트랜잭션이 생성될 때 단조롭게 증가하는 타임스탬프가 할당될 수 있습니다.이 규칙은 트랜잭션이 실행되는 순서대로 변경되어 다른 출력이 생성되지 않도록 합니다.출력은 항상 사전 정의된 논리 순서와 일치합니다.

예를 들어 3개의 변수(A, B, C)와 2개의 원자 연산 C:= A(T1)와 C:= B(T2)를 가진 데이터베이스를 생각해 보겠습니다.각 트랜잭션에는 읽기(A 또는 B)와 쓰기(C)가 포함됩니다.이들 트랜잭션 간의 유일한 경합은 C에 대한 쓰기입니다.이러한 트랜잭션의 조작에 대해 생각할 수 있는1개의 스케줄을 다음에 나타냅니다.

(트랜잭션이 작성되었을 때) T1에 T2 앞에 타임스탬프가 할당되어 있는 경우(즉, 논리적 순서에 따라 T1이 우선), T2의 쓰기만 표시됩니다.단, T2의 기입 후에 T1의 기입이 실행되는 경우는, 이것을 검출해, 기입 내용을 폐기하는 방법이 필요합니다.

이를 위한 실용적인 방법 중 하나는 값을 수정하는 마지막 트랜잭션의 타임스탬프를 나타내는 Write Timestamp(WTS; 쓰기 타임스탬프)로 각 값에 라벨을 붙이는 것입니다.Thomas 쓰기 규칙을 적용하려면 개체의 쓰기 타임스탬프가 쓰기를 수행하는 트랜잭션의 타임스탬프보다 큰지 확인만 필요합니다.이 경우, 기입은 파기됩니다.

위의 예에서 TS(T)를 트랜잭션의 타임스탬프, WTS(O)를 객체 O의 쓰기 타임스탬프라고 부르면 T2의 쓰기는 WTS(C)를 TS(T2)로 설정합니다.T1이 C를 쓰려고 하면 TS(T1) < WTS(C)가 검출되어 쓰기가 파기됩니다.세 번째 트랜잭션 T3(TS(T3) > TS(T2))가 C에 기입되면 TS(T3) > WTS(C)가 취득되어 기입이 허가됩니다.

레퍼런스

  • Robert H. Thomas (1979). "A majority consensus approach to concurrency control for multiple copy databases". ACM Transactions on Database Systems. 4 (2): 180–209. doi:10.1145/320071.320076.

©