분산 데이터베이스가 있다고 가정 해 봅시다. 오레곤에 노드가 있고 캘리포니아에 노드가 있다고 가정 해 봅시다. CAP 이론에 따르면이 유형의 데이터베이스를 설정할 때 문제가 발생할 수 있습니다.
예를 들어 한 데이터베이스에서 데이터를 쿼리하는 경우 다른 데이터베이스의 데이터와 동일해야합니다. 이를 통해 한 데이터베이스에있는 모든 값이 다른 데이터베이스에있을 수 있습니다 ( CAP 이론의 일관성 ). 이렇게하면 한 데이터베이스의 데이터를 업데이트하고 다른 데이터베이스에서 쿼리하여 동일한 결과를 얻을 수 있습니다.
Oregon 노드에서 데이터를 업데이트하면 데이터베이스가 일관되도록 캘리포니아 노드로 데이터가 전송됩니다. 진정으로 일관성을 유지하려면 데이터를 실제로 저장하기 전에 두 데이터베이스 (업데이트 된 트랜잭션을 사용하는 2 단계 커밋)를 받기 전에 두 데이터베이스가 모두 업데이트되도록해야합니다. 즉, 캘리포니아 데이터베이스가 어떤 이유로 데이터를 저장할 수없는 경우 (예 : 하드 드라이브 오류) 오레곤의 데이터베이스는 데이터를 저장하지 않으며 트랜잭션에 실패합니다.
위와 같은 분산 트랜잭션의 문제는 고 가용성을 원할 때 발생합니다. 위의이 시나리오에서 두 데이터베이스를 동기화하려고하는 프로세스는 매우 느리게 진행됩니다. (오레곤에서 캘리포니아로 데이터를 보내야하고, 데이터가 도착했는지 확인하고, 두 데이터베이스 모두 데이터를 잠그는 등의 작업을 수행해야한다고 상상해보십시오.) 수요가 많은 시간. (이것은 CAP 정리 의 가용성 입니다.)
일반적으로 고 가용성을 보장하기 위해 분산 트랜잭션 대신 복제를 사용합니다. 캘리포니아가 데이터를 받아 들일 수 있도록하는 대신, 우리는 계속해서 오레곤 노드에 저장 한 다음 데이터가 도착하면 캘리포니아로 데이터를 보냅니다. 이는 캘리포니아가 데이터를 저장할 준비가되었는지 여부에 관계없이 항상 데이터를 저장할 수 있음을 보장합니다.
이렇게하면 가용성이 향상되지만 일관성이 저하됩니다. 누군가가 오레곤에서 데이터를 업데이트 한 다음 누군가가 캘리포니아에서 데이터를 읽는 경우 새 데이터를받지 못하고 데이터베이스는 더 이상 일관성이 없습니다. 사실, 오레곤이 데이터를 캘리포니아에 보낼 때까지 일관성이 없습니다!
이것이 바로 가용성과 일관성의 절충입니다.
Partition Tolerance 는 CAP 이론의 세 번째 측면입니다. 이와 관련하여 파티션은 데이터베이스 (또는 다른 분산 시스템)가 별도의 섹션으로 나뉘어 여전히 올바르게 작동 할 수 있다는 아이디어입니다.
문제는 두 데이터베이스가 모두 올바르게 실행되면 어떻게 되나 오레곤에서 캘리포니아로의 연결이 끊어 졌습니까?
오레곤에서 데이터베이스를 업데이트 할 경우, 데이터를 캘리포니아로 분산 분산 트랜잭션 또는 복제 방식으로 가져와야합니다. 그러나 둘 사이의 연결이 끊어지면 시스템이 분할되고 데이터베이스가 더 이상 서로 연결되지 않습니다.
이 경우 가용성 비용으로 업데이트 허용 (일관성 유지)을 중지하거나 일관성 비용으로 업데이트 허용 (가용성 유지)을 선택해야합니다.
보다시피, 분할 허용 오차는 일관성과 가용성 사이의 직접적인 균형을 만듭니다.
그것보다 분명히 많은 것이 있지만, 분산 시스템의 세 가지 주요 측면이 서로 어떻게 작동하는지에 대한 몇 가지 예입니다. CAP 이론에 대한 Julian Browne의 설명은 자세히 배울 수있는 훌륭한 장소입니다.