목차

개요


잘못될 수 있는 것과 잘못될 수 없는 것 사이의 주된 차이점은 잘못될 수 없는 것이 잘못됐을 때는 잘못을 파악하거나 고치는 것은 거의 불가능하다는 점이다.

해당 챕터의 주제인 복제라는 키워드는 네트워크로 연결된 여러 장비에 동일한 데이터의 복사본을 유지한다는 의미다. 즉 Catsbi라는 데이터를 네트워크의 연결된 device1, device2, device3,… deviceN 에서 모두 복사본을 가지고 있다는 의미이다.

어째서 이런 데이터 복제가 필요한 것일까?

  1. 지연 시간

    Untitled

    지리적으로 클라이언트와 데이터가 가까히 있을수록 지연시간을 줄일 수 있다.

  2. 고가용성

    Untitled

    기존의 연결되던 서버에 장애가 발생해도 지속적으로 동작을 할 수 있도록 가용성을 높힌다.

  3. 읽기 질의 처리량

    Untitled

    읽기 질의를 제공하는 장비가 요청하는 질의보다 적을 경우 위와 같은 병목(bottleneck)현상이 발생할 수 있다. 이를 장비의 수를 늘려서 읽기 처리량을 늘릴 수 있다.

불변 데이터의 복제는 쉽다. 하지만…

복제중인 데이터가 시간이 지나도 변경되지 않는 데이터(immutable)라면 그냥 모든 노드에 데이터를 복사하면 끝이다.

하지만, 데이터가 변경될 수 있는 데이터(mutable)일 경우 복제된 데이터의 변경 처리도 책임져야 하는데 이는 복제의 큰 어려움이라 할 수 있고 노드 간 변경을 복제하기 위해 인기있는 세 가지 알고리즘을 알아 볼 것이다. 대부분의 분산 데이터베이스는 이 세 가지 방법 중 하나를 사용한다.