Consistency,Availablity,Partition Tolerance 중 분산 데이터베이스 시스템에서는 2개의 속성만을 제공할 수 있다는 이론이다.
이는 모든 클라이언트의 요청에 따라서 어느 db든 같은 데이터를 주어야한다는 것이다.
분산 데이터베이스 시스템에서는 장애나,stateful한 설계로 인해서, db사이의 정보가 다를 수 있다.
이 때는 이 일관성을 어기게된 것이다.
한 db에 문제가 발생해도 모든 요청을 정상적으로 주어야한다는 것이다.
물론 한 db에 문제가 생긴 경우에 쓰기 작업을 하면 위의 Consistency는 보장하지 않을 것이다.
db사이에 통신이 불가능한 상황(파티션)에서도 시스템이 계속 동작해야한다는 의미이다.
분할내션의 중요한 포인트는 네트워크가 끊어졌어도, 각 파티션이 독립적으로 동작해야한다는 의미이다.
가용성은 시스템이 정상적으로 동작되었을 때의 얘기다. 이 때는 모든 요청이 정상적으로 되어야한다는 것이다.
네트워크의 통신 장애는 거의 피할 수 없다
따라서 Partition Tolerance는 무조건 가져가야하므로, CP,AP등의 조합이 가능하다.
가용성을 포기하고, 일관성과 분할 내성을 챙기는 속성이다.
네트워크 장애로 인해서 발생하는 파티션이 일어날 때, 다른 데이터베이스에 쓰기작업 혹은 다른 연산을 수행하지 않는 것을 의미한다.
이렇게 되면 네트워크 장애가 일어났을 때도 시스템이 잘 동작해서 분할 내성을 챙길 수 있고, 쓰기 작업을 하지 않기 때문에, 일관성을 챙길 수 있다.
앞에서 쓰기 작업등을 포기해야하므로, 가용성은 포기하게 되는 것이다.
일관성을 포기하고, 가용성과 분할내성을 챙기는 속성이다.
모든 작업을 수행하는데, 네트워크 장애가 생겨 파티션이 발생할 때는 db의 일관성을 지킬 수 있다.

