ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION427 / 1500
분산 시스템난이도 중하5분 답변 목표 · 보강본

복제본 N개에서 R개를 읽고 W개를 쓰면 R+W>N이므로 항상 최신 값을 읽나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

읽기·쓰기 집합이 겹치는 것은 중요한 조건이지만 버전 선택·동시 쓰기·실패·동적 구성의 프로토콜 없이 선형화가 자동 생기지는 않습니다. 숫자 부등식과 실제 보장을 구분해야 합니다.

동작 원리와 전제

여러 복제본이 다른 버전을 반환하면 어떤 버전이 최신인지 비교 규칙이 필요합니다. 벽시계 기반 LWW는 시계 오차를 가질 수 있고 미완료 쓰기가 일부에만 남는 경우도 있습니다. sloppy quorum처럼 실제 참여 집합이 달라지면 단순 교집합 가정도 달라집니다.

선택과 실패 처리

read repair는 읽으면서 발견한 오래된 복제본을 갱신해 수렴을 돕지만 모든 키가 항상 읽히는 것은 아니므로 별도 anti-entropy가 필요할 수 있습니다. repair의 쓰기 부하와 충돌 정책도 관리합니다.

구체적인 사례와 검증

N=3,R=2,W=2면 읽기와 완료된 쓰기 집합은 겹칠 수 있지만 동시 쓰기가 서로 다른 버전을 남겼을 때 어떤 값을 선택할지 프로토콜이 필요합니다. 쓰기 실패라고 보고된 값이 일부 노드에 남아 읽기에서 관찰될 수도 있습니다. 응답의 버전 선택과 repair가 어떤 값을 전파하는지 명확해야 합니다. 단순히 가장 큰 timestamp를 고르면 시계 오차의 문제를 가져옵니다. 실제 제품이 제공하는 세션 보장·충돌 해결·읽기 일관성 모드를 확인하고 API별 요구에 맞춰 사용합니다. 수학적 교집합 조건을 전체 시스템의 선형화 증명으로 대체하지 않겠습니다.

동시 쓰기·부분 실패·분할·늦은 복제본·구성 변경을 시험합니다. 최신성·단조 읽기·선형화 등 요구를 명시하고 제품이 제공하는 계약을 확인합니다. quorum이라는 용어만으로 합의 기반 저장소와 동일하다고 설명하지 않겠습니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 핵심 구분: 읽기·쓰기 집합이 겹치는 것은 중요한 조건이지만 버전 선택·동시 쓰기·실패·동적 구성의 프로토콜 없이 선형화가 자동 생기지는 않습니다.
  • 선택 조건: read repair는 읽으면서 발견한 오래된 복제본을 갱신해 수렴을 돕지만 모든 키가 항상 읽히는 것은 아니므로 별도 anti-entropy가 필요할 수 있습니다.
  • 검증 기준: 동시 쓰기·부분 실패·분할·늦은 복제본·구성 변경을 시험합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • R+W>N 하나만으로 모든 장애·동시 쓰기에서 선형화가 자동 성립한다고 한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 완료된 쓰기 이후의 읽기와 동시에 겹친 읽기는 어떤 관찰 결과가 허용되나요?
  • 네트워크 분할 중 어느 읽기·쓰기를 성공시키고 어떤 불일치를 허용할지 어떻게 정하나요?
  • 가장 큰 시각으로 충돌을 해결할 때 시계 오차와 사라진 변경을 어떻게 관리하나요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기