2002년 경에 에릭 브루어(Eric Brewer)가 주창한 이론으로, CAP정리(CAP Theorem), 혹은 브루어 정리(Brewer’s theorem) 등으로 불리운다. 주요 내용은 분산 컴퓨터 시스템에서, 분산된 시스템이 가지는 세가지 특성을 동시에 충족시키는 것은 불가능하며, 이 중 두가지만을 취할 수 있다는 것을 정리한 내용이다.
나온지는 꽤 된 정리이지만, 관계형 데이터베이스 시스템(RDBMS)의 일관적인 활용에서 벗어난NoSQL 사용이 증가하면서 많이 언급되기 시작했다. 주로 RDBMS가 가지는 문제점인 분단가용성 부족으로 인한 수평적 확장(Horizontal Scalability)의 어려움을 벗어나기 위해서 NoSQL이 대두되게 되었는데, 여기서 당위성 설명을 위해 CAP 정리를 사용해 RDBMS가 치우친 면을 설명하고 그것을 벗어나기 위한 방법으로 NoSQL이 추구하는 방향성을 제시하는 경우가 많다.
분산 시스템이 추구하는 데이터의 특성 세가지에 대해서 알아보자.
잘 이해가 되지 않는다면 서버에서 저장된 스토리지를 기준으로 생각하면 된다. 분산 시스템의 경우 대부분 저장소가 분산되어 있음으로서 생기는 동기화 지연이나 액세스 실패 등의 문제에 있어서 위의 방향성을 추구함으로서 해결 가능한 부분이 있다는 것을 대입시키면 쉽게 이해가 될 것이다.
CAP정리에 따르면 분산 시스템이 추구하는 데이터의 특성은 세 가지 중 두가지만 보장할 수 있다. 오른쪽의 그림은 이러한 특성을 삼각형으로 정리하고 각 데이터 베이스가 가지는 특성에 따라서 어느 방향에 놓여지는 가를 분류한 도표이다.
용어를 알아듣기 쉽게 분석하기 위해서 C= 동일성, A= 독립성, P=생존성 이라고 비유해보면,