conflict serializable 이해를 위한 선수 개념
왼쪽이 선수 개념이다
scheudle -> conflict operations -> conflict equivalent -> conflict serializable
즉,
conflict serializable를 이해하기 위해서는 conflict equivalent이 무엇인지 먼저 알아야 하고
conflict equivalent를 이해하기 위해서는 conflict operations가 무엇인지 먼저 알아야 하고
conflict operations를 이해하기 위해서는 scheudle이 무엇인지 먼저 알아야 한다
각각의 개념들을 매우 간단하게 정리해 보면,
schedule ?
여러 transaction들이 동시에 실행될 때 각 transaction에 속한 operation들이 실행되는 순서를 의미한다
예를 들어,
transaction1이 데이터 x를 read 하고 그 뒤에 x에 write 하고
transaction2도 데이터 x를 read 하고 그 뒤에 x에 write 한다면
transaction1과 2가 실행되는 schedule은 아래처럼 다양할 수 있다
(1) r1(x) w1(x) r2(x) w2(x)
(2) r1(x) r2(x) w1(x) w2(x)
(3) r1(x) r2(x) w2(x) w1(x)
(4) r2(x) w2(x) r1(x) w1(x)
...
이 때 (1)과 (4)처럼 transaction이 하나 끝나면 다른 하나가 시작되는 형태의 schedule을 serial schedule이라고 한다
conflict operations ?
하나의 schedule에 존재하는 두 operations에 대해서 사용할 수 있는 개념이다
한 schedule 내에 있는 두 operations가 아래 세 가지 조건을 만족하면 '두 operations는 conflict하다'라고 말할 수 있다
1. 두 operation이 서로 다른 transaction에 속해 있다
2. 두 operation이 같은 데이터에 접근한다
3. 두 operation 중에 적어도 하나는 데이터를 쓴다(write)
conflict equivalent
두 개의 schedule에 대해서 사용될 수 있는 개념이다
두 개의 schedule이 아래의 두 가지 조건을 만족하면 '두 schedule은 conflict equivalent하다'라고 말할 수 있다
1. 두 schedule은 같은 transaction들을 가진다
2. 어떤(any) conflict operations의 순서도 양쪽 schedule이 모두 동일하다
conflict serializable
어느 한 schedule이 serial schedule과 conflict equivalent하다면, '이 schedule은 conflict serializable하다'라고 말할 수 있다
다르게 표현하자면,
두 개의 schedule이 conflict equivalent 할 때, 한 schedule이 serial schedule이라면, '다른 한 schedule은 conflict serializable하다'라고 말할 수 있다
보다 더 자세한 내용은 쉬운코드 영상으로 만나실 수 있습니다