본문 바로가기

IT/Data

데이터에서 최종 일관성이란?

안녕하세요. 잇킹 시도르입니다.
작년부터 업무로 인해서  AWS 사이트에서 서비스 설명이나 개발자 안내서를 주로 참고하고 있습니다.  그러다 보니 간혹 이해가 잘 되지 않는 개념들이 있어서 글을 남기려 합니다.

AWS S3 데이터 일관성 모델의 특징을 보면 
"Amazon S3은 모든 리전의 S3 버킷에 있는 새 객체의 PUT에 대해 한 가지 주의 사항을 제시함으로써 읽기 후 쓰기 일관성을 제공합니다. 주의할 점은 객체를 만들기 전에 (객체가 있는지 찾기 위해) 키 이름에 HEAD 또는 GET 요청을 하는 경우 Amazon S3가 읽기 후 쓰기에 대한 최종 일관성을 제공하는 것입니다.
Amazon S3은 모든 리전의 덮어쓰기 PUT 및 DELETE에 대한 최종 일관성을 제공합니다."
라고 설명하고 있습니다.

여기에서 최종 일관성은 일관성이 어떻게 된다는 것인가?


기존의 RDB(관계형 데이터베이스)는 동시성이라고 해서 같은 시간에 조회하는 데이터는 항상 동일한 데이터임을 보증하는걸 기본으로 합니다.
그런데 NoSQL이 쓰이게 되면서 동시성을 더 이상 보장하기가 힘들어지게 되죠. NoSQL은 분산 노드를 이용하여 빅데이터에 대해 빠른 데이터 처리가 주 목적이기 때문입니다.

그래서 데이터 변경이 발생했을때, 시간이 지남에 따라 여러 노드에 전파되면서 당장은 아니지만 최종적으로 일관성이 유지되는 것을 최종 일관성이라고 합니다.
말장난 같긴 한데, 결국은  동시성을 제공하지 않고 결과적으로 일관성을 가지게 된다는것입니다.

그러므로 덮어쓰기 PUT 및 DELETE에 대한 최종일관성을 가지는 S3는 객체를 처음 생성 후 가져올 시에는 일관성 있는 데이터를 제공하나, 삭제 후 가져올시에는 일관성 없는 결과를 리턴할 수 있다는 특징을 가집니다.

이상입니다!