2. Eventual consistency
- Eventual consistency는 항목이 새롭게 업데이트되지 않는다는 전제하에 항목의 모든 읽기 작업이 최종적으로는 마지막으로 업데이트된 값을 반환한다는 것을 이론적으로 보장합니다.
- 인터넷 DNS(도메인 이름 시스템)는 eventual consistency 모델이 사용된 시스템의 예로 잘 알려져 있습니 다.
- DNS 서버가 항상 최신의 값을 반영하는 것은 아니며, 이러한 값들은 인터넷상의 수많은 디렉터리에서 캐싱되고 복제됩니다.
- 수정된 값을 모든 DNS 클라이언트와 서버에 복제하려면 어느 정도의 시간이 소요됩니다.
- 하지만 DNS 시스템은 인터넷의 근간을 이루는 요소로 자리잡은 매우 성공적인 시스템입니다.
- DNS는 가용성이 매우 높으며 엄청난 확장성이 증명되었고, 인터넷 전체에서 수천만 대 기기의 이름 조회를 가능하게 하고 있습니다.
- 시스템의 가용성과 성능을 높이는 대신, 일시적인 데이터 불일치를 허용한다고 볼 수 있습니다.
2.1 예시

- 위 그림은 eventual consistency를 고려한 복제의 개념을 보여줍니다.
- 이 다이어그램에서 복제본을 읽는 것은 언제든 가능하지만 일부 복제본은 특정 시점에 상위 노드에 쓰여진 값과 일치하지 않을 수 있음을 볼 수 있습니다.
- 다이어그램에서 노드 A는 상위 노드이며 노드 B와 C는 복제본입니다.
3. strong consistency
- 반대로 기존의 관계형 데이터베이스는 즉각적 일관성이라도 하는 strong consistency 개념을 토대로 설계되었습니다.
- 즉, 업데이트 즉시 조회된 데이 터는 항목을 보는 모든 사용자에게 일관성 있게 표시됩니다.
- 따라서 모든 읽기 작업이 가장 최근의 쓰기 작업 결과를 반환하는 것을 보장합니다.
- 이러한 특성은 관계형 데이터를 사용하는 많은 개발자에게 기본적인 전제가 되어 왔습니다.
- 하지만 strong consistency를 얻기 위해서는 개발자가 애플리케이션의 확장성과 성능을 어느 정도 포기해야 합니다.
- 간단히 말해 업데이트 또는 복제 프로세스 도중에는 데이터를 잠금 설정하여 다른 프로세스에서 동일한 데이터를 업데이트하지 않도록 해야 합니다.
- 데이터의 정확성이 중요한 금융 거래나 재고 관리 시스템에서 주로 사용됩니다.
3.1 예시

- 위 그림은 strong consistency에서의 배포 토폴로지 및 복제 프로세스에 대한 개념적 묘사가 나와 있습니다.
- 이 다이어그램에서는 복제본이 항상 상위 노드와 일치하는 값을 가지지만 업데이트가 완료되기 전까지 이 값에 액세스할 수 없다는 점을 확인할 수 있습니다.
4. strong consistency와 eventual consistency 간 균형 유지