궁극적 일관성

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

궁극적 일관성은 분산 데이터 시스템에서 여러 복제본 간의 일관성을 유지하기 위한 개념으로, 충돌 해결과 강력한 최종 일관성(SEC)을 포함한다. 충돌 해결은 데이터 버전 교환(안티 엔트로피)과 동시 업데이트 시 최종 상태 선택(조정)으로 구성되며, "최종 작성자 우선", 사용자 지정 충돌 처리기, 타임스탬프, 벡터 시계 등을 활용한다. 조정은 읽기, 쓰기, 비동기 복구 시점에 수행될 수 있다. SEC는 동일한 업데이트 집합을 받은 노드들이 동일한 상태가 되도록 보장하며, 단조성을 통해 롤백을 방지한다. SEC는 충돌 없는 복제 데이터 유형(CRDT)을 통해 구현될 수 있다.

궁극적 일관성
일반 정보

이미지 준비중입니다.

Eventually consistent
유형일관성 모델
특징
장점낮은 지연 시간
높은 가용성
분할 내성
단점읽기 일관성 보장 없음
충돌 해결 필요
관련 개념
관련 개념ACID
반대 개념강한 일관성
사용 사례
예시DNS
이메일 시스템
사용 시스템Amazon DynamoDB
Apache Cassandra
Couchbase
Riak
추가 정보
참고 자료Vogels, W. (2009). Eventually consistent. Communications of the ACM, 52(1), 40–44.
Vogels, W. (2008). Eventually Consistent. Queue, 6(6), 14–19.
Terry, D. B., Theimer, M. M., Petersen, K., Demers, A. J., Spreitzer, M. J., & Hauser, C. H. (1995). Managing update conflicts in Bayou, a weakly connected replicated storage system. Proceedings of the fifteenth ACM symposium on Operating systems principles - SOSP '95, 172.
Petersen, K.,
📚 더 읽어볼만한 페이지
  • 일관성 모델 - 원자성
    원자성은 분자를 구성하는 원자 수로, 분자는 원자성에 따라 단원자, 이원자, 삼원자 분자 등으로 나뉘며, 금속이나 탄소는 원자성이 2로 간주되고 단원자 분자의 원자성은 분자량을 원자량으로 나누어 계산한다.
  • 일관성 모델 - 캐시 일관성
    캐시 일관성은 다중 프로세서 시스템에서 공유 메모리 데이터의 일관성을 유지하기 위해 읽기 및 쓰기 동작을 정의하며, 스누핑, 디렉터리 기반 방식 등의 메커니즘과 다양한 모델 및 프로토콜이 사용된다.

2. 충돌 해결 (Conflict Resolution)

분산 시스템에서 복제본의 일관성을 유지하기 위해서는 여러 복제본 간의 데이터 차이를 조정해야 한다. 이 과정을 조정이라고 하며, 안티 엔트로피와 함께 복제본 일관성을 보장하는 핵심 요소이다.

조정 방식은 응용 프로그램에 따라 달라지는데, "최종 작성자 우선", 사용자 지정 충돌 처리기 호출, 타임스탬프벡터 시계를 이용한 동시성 감지 등의 방법이 사용된다. "최종 작성자 우선" 방식이 허용되지 않을 때는 "최초 작성자 우선" 방식을 사용하기도 한다.

동시 쓰기 조정은 다음 읽기 전에 수행되어야 하며, 읽기 복구, 쓰기 복구, 비동기 복구 등의 시점에 예약될 수 있다.

2.1. 안티 엔트로피 (Anti-entropy)

복제본의 일관성을 보장하기 위해 시스템은 분산된 데이터의 여러 사본 간의 차이점을 조정해야 한다. 이는 다음 두 부분으로 구성된다.

* 서버 간 데이터의 버전 또는 업데이트를 교환하는 것 (종종 안티 엔트로피라고 함)
* 동시 업데이트가 발생했을 때 적절한 최종 상태를 선택하는 것 (이를 조정이라고 한다)

2.2. 조정 (Reconciliation)

복제본의 일관성을 보장하기 위해 시스템은 분산 데이터의 여러 사본 간의 차이점을 조정해야 한다. 이는 서버 간 데이터의 버전 또는 업데이트를 교환하는 것(안티 엔트로피)과 동시 업데이트가 발생했을 때 적절한 최종 상태를 선택하는 과정으로 구성된다.

2.2.1. 조정 방식

조정에 가장 적합한 접근 방식은 응용 프로그램에 따라 다르다. 널리 사용되는 접근 방식은 "최종 작성자 우선"이다. 또 다른 방법은 사용자가 지정한 충돌 처리기를 호출하는 것이다. 타임스탬프벡터 시계는 업데이트 간의 동시성을 감지하는 데 자주 사용된다. 일부 사람들은 "최종 작성자 우선"이 용납될 수 없는 상황에서 "최초 작성자 우선"을 사용한다.

2.2.2. 조정 시점

동시 쓰기의 조정은 다음 읽기 전에 수행되어야 하며, 다른 시점에 예약될 수 있다.

* 읽기 복구: 읽기에서 불일치가 발견될 때 복구를 수행한다. 읽기 작업이 느려질 수 있다.
* 쓰기 복구: 쓰기 작업 중에 복구를 수행한다. 쓰기 작업이 느려질 수 있다.
* 비동기 복구: 읽기 또는 쓰기 작업과 별개로 복구를 수행한다.

3. 강력한 최종 일관성 (Strong Eventual Consistency)

강력한 최종 일관성(Strong Eventual Consistency, SEC)은 생존성 보장(업데이트는 결국 관측됨)에 더해, 동일한 (순서가 지정되지 않은) 업데이트 집합을 수신한 두 노드가 동일한 상태가 된다는 안전성 보장을 추가한다.

3.1. 특징

동일한 업데이트 집합을 수신한 모든 노드는 결국 동일한 상태에 도달한다. 시스템이 단조성을 가질 경우, 애플리케이션은 롤백을 겪지 않는다. 이러한 특징을 보장하기 위한 일반적인 접근 방식은 충돌 없는 복제 데이터 유형이다.

3.2. 구현

결국 일관성은 단지 생존성 보장(업데이트는 결국 관찰될 것임)일 뿐이지만, 강력한 최종 일관성(Strong Eventual Consistency, SEC)은 동일한 (순서가 없는) 업데이트 집합을 수신한 두 노드는 동일한 상태가 될 것이라는 안전성 보장을 추가한다. 또한 시스템이 단조성을 가진다면, 애플리케이션은 롤백을 겪지 않을 것이다. SEC를 보장하는 일반적인 접근 방식은 충돌 없는 복제 데이터 유형이다.