잘못될 수 있는 것과 잘못될 수 없는 것 사이의 주된 차이점은 잘못될 수 없는 것이 잘못됐을 때는 잘못을 파악하거나 고치는 것은 거의 불가능하다는 점이다.
해당 챕터의 주제인 복제라는 키워드는 네트워크로 연결된 여러 장비에 동일한 데이터의 복사본을 유지한다는 의미다. 즉 Catsbi
라는 데이터를 네트워크의 연결된 device1, device2, device3,… deviceN 에서 모두 복사본을 가지고 있다는 의미이다.
어째서 이런 데이터 복제가 필요한 것일까?
지연 시간
지리적으로 클라이언트와 데이터가 가까히 있을수록 지연시간을 줄일 수 있다.
고가용성
기존의 연결되던 서버에 장애가 발생해도 지속적으로 동작을 할 수 있도록 가용성을 높힌다.
읽기 질의 처리량
읽기 질의를 제공하는 장비가 요청하는 질의보다 적을 경우 위와 같은 병목(bottleneck)현상이 발생할 수 있다. 이를 장비의 수를 늘려서 읽기 처리량을 늘릴 수 있다.
복제중인 데이터가 시간이 지나도 변경되지 않는 데이터(immutable)라면 그냥 모든 노드에 데이터를 복사하면 끝이다.
하지만, 데이터가 변경될 수 있는 데이터(mutable)일 경우 복제된 데이터의 변경 처리도 책임져야 하는데 이는 복제의 큰 어려움이라 할 수 있고 노드 간 변경을 복제하기 위해 인기있는 세 가지 알고리즘을 알아 볼 것이다. 대부분의 분산 데이터베이스는 이 세 가지 방법 중 하나를 사용한다.