데이터베이스 기초
여러 서버에 데이터의 복제본을 두는 분산 데이터베이스에 대한 CAP 정리의 설명으로 적절한 것은?
- A서버 간 네트워크가 분단되었을 때는 어느 서버에서 읽어도 최신 값이 반환되는 일관성과 모든 요청에 응답하는 가용성을 동시에 완전히 만족할 수 없다
- B일관성, 가용성, 분단 내성의 세 가지는 적절히 설계하면 항상 동시에 만족할 수 있다
- C분단 내성이란 서버 간 네트워크가 분단되지 않도록 회선을 이중화하는 것을 말한다
정답과 해설 보기
정답: A. 서버 간 네트워크가 분단되었을 때는 어느 서버에서 읽어도 최신 값이 반환되는 일관성과 모든 요청에 응답하는 가용성을 동시에 완전히 만족할 수 없다
CAP 정리는 분산된 데이터베이스가 일관성(Consistency: 어느 서버에서 읽어도 최신 쓰기의 결과가 반환된다), 가용성(Availability: 고장 나지 않은 서버는 모든 요청에 응답을 반환한다), 분단 내성(Partition tolerance: 서버 간 통신이 끊겨도 시스템으로서 계속 동작한다)의 세 가지를 동시에 모두 완전하게는 만족할 수 없음을 보인 것입니다. 네트워크 분단은 현실에서 피할 수 없으므로, 요점은 분단이 일어났을 때 일관성을 우선하여 일부 요청에 대한 응답을 멈출지, 가용성을 우선하여 오래된 값을 반환하는 것을 허용하고 응답을 계속할지를 골라야 한다는 것입니다. 분단이 일어나지 않았을 때는 일관성과 가용성을 둘 다 만족할 수 있습니다. NoSQL 제품 중에는 가용성을 우선하여 시간이 지나면 복제본이 맞춰지는 결과적 일관성을 채택한 것이 많습니다. 분단 내성은 회선을 이중화하는 것이 아니라 분단이 일어나도 동작을 계속하는 성질입니다.