키 - 값 저장소는 비 관계형 데이터베이스이다.

문제 이해 및 설계 범위 확정

다음 특성을 갖는 키-값 저장소를 설계해본다.

  1. 키-값 쌍의 크기는 10KB 이하이다.
  2. 큰 데이터를 저장할 수 있어야 한다.
  3. 높은 가용성을 제공해야 한다. 시스템이 장애가 있더라도 빨리 응답해야 한다.
  4. 높은 규모 확장성을 제공해야 한다. 따라서 트래픽 양에 따라 자동적으로 서버 증설/삭제가 이루어져야 한다.
  5. 데이터 일관성 수준은 조정이 가능해야 한다.
  6. 응답 지연시간이 짧아야 한다.

단일 서버 키-값 저장소

한 대 서버만 사용하는 키-값 저장소를 설계하는 직관적인 방법은 키-값 쌍 전부를 메모리에 해시 테이블로 저장하는 것이다. 이 방법은 빠른 속도를 보장하지만 모든 데이터를 메모리 안에 두는 것은 불가능할 수도 있다는 약점이 있다. 이 문제를 해결하기 위해 두가지의 개선책이 있다.

  1. 데이터 압축
  2. 자주 쓰이는 데이터만 메모리에 두고 나머지는 디스크에 저장

분산 키-값 저장소

분산 키-값 저장소는 분산 해시 테이블이라고도 불린다.

CAP 정리

CAP 정리는 데이터 일관성, 가용성, 파티션 감내라는 세 가지 요구사항을 동시에 만족하는 분산 시스템을 설계하는 것은 불가능하다는 정리다. 이 세가지 중 어떤 두 가지를 충족하려면 나머지 하나는 반드시 희생되어야 한다는 것을 의미한다.