Quorum
Quorum
Quorum이란
분산 시스템에서 작업을 수행하기 위해 트랜잭션이 획득해야 하는 최소 투표 수. 이를 이용해 분산 시스템에서 일관된 작업을 수행 가능.
분산 DB에서 Quorum을 사용하는 법
- 여러 위치에서 트랜잭션이 실행된 경우.
- 여러 복제본이 존재할 때 읽기 및 쓰기를 하는 경우.
여러 사이트에서 트랜잭션이 실행된 경우
- 분산 DB에서는 트랜잭션이 여러 위치에서 연산을 수행할 수 있음.
- 각 트랜잭션은 모든 위치에서 같은 결과(실행 혹은 중단 여부)를 가져야 함.
- 각 위치끼리는 통신할 수 없을 수도 있기 때문에, quorum을 통해 다수의 결과를 따르게 됨.
- 각 위치에서 트랜잭션이 실행되면 투표에 참여하고 다음과 같은 규칙을 따름.
- 트랜잭션 커밋에 필요한 quorum을 Vc, 중단에 필요한 quorum을 Va, 총 투표 수를 V라고 명명.
- Vc + Va > V, 0 < Vc, Va <= V
- 커밋에 투표한 사이트가 Vc 이상이면 커밋.
- 중단에 투표한 사이트가 Va 이상이면 중단.
2번 때문에 3, 4번이 동시에 수행될 수 없음.
여러 복제본의 읽기 및 쓰기 행위
- DB는 복사본을 여러 사이트에 만들어 둘 수 있음.
- 동시에 두 트랜잭션이 읽거나 쓰는 행위를 막기 위해 quorum 사용.
- 각 복사본은 투표에 참여하고 다음과 같은 규칙을 따름.
- 읽기에 필요한 quorum을 Vr, 쓰기에 필요한 quorum을 Vw, 총 투표 수를 V라고 명명.
- Vr + Vw > V
- Vw > V/2
- Vr 이나 Vw의 투표를 얻으면 읽거나 쓸 수 있음.
2번 때문에 읽고 쓰는 두 트랜잭션이 동시에 수행되지 않음. 마찬가지로 3번 때문에 서로 다른 쓰기 연산이 동시에 수행되지 않음.