데이터베이스 기초

여러 서버에 데이터의 복제본을 두는 분산 데이터베이스에 대한 CAP 정리의 설명으로 적절한 것은?

  1. A서버 간 네트워크가 분단되었을 때는 어느 서버에서 읽어도 최신 값이 반환되는 일관성과 모든 요청에 응답하는 가용성을 동시에 완전히 만족할 수 없다
  2. B일관성, 가용성, 분단 내성의 세 가지는 적절히 설계하면 항상 동시에 만족할 수 있다
  3. C분단 내성이란 서버 간 네트워크가 분단되지 않도록 회선을 이중화하는 것을 말한다
정답과 해설 보기

정답: A. 서버 간 네트워크가 분단되었을 때는 어느 서버에서 읽어도 최신 값이 반환되는 일관성과 모든 요청에 응답하는 가용성을 동시에 완전히 만족할 수 없다

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

이 분야 연습하기 분야로 돌아가기

데이터베이스 기초의 다른 문제

  1. 관계형 데이터베이스의 용어에서 표(릴레이션)의 한 행에 해당하는 것은?
  2. 관계형 데이터베이스의 표에서 기본 키로 지정하는 열(또는 열의 조합)이 반드시 만족해야 하는 조건은?
  3. 사원 표(사원번호, 이메일주소, 이름, 부서)에서 사원번호와 이메일주소는 둘 다 사원마다 다르며 NULL이 되지 않는다. 이름과 부서는 다른 사원과 같아질 수 있다. 이 표의 후보 키를 모두 든 것은?
  4. 수강 표(학생번호, 과목번호, 성적)는 어느 학생이 어느 과목을 수강하여 어떤 성적을 받았는지를 기록한다. 한 학생은 여러 과목을 수강하고, 한 과목은 여러 학생이 수강한다. 같은 학생이 같은 과목을 두 번 등록하는 일은 없을 때, 이 표의 기본 키로 적절한 것은?
  5. 고객 표(고객ID, 이름)의 기본 키는 고객ID이며, 주문 표(주문ID, 고객ID)의 고객ID는 고객 표의 고객ID를 참조하는 외래 키로 정의되어 있다. 고객 표에는 고객ID가 'C1'과 'C2'인 행만 있다. 이 상태에서 INSERT INTO 주문 VALUES ('O9', 'C5')를 실행했을 때의 결과로 올바른 것은?