본문 바로가기
Database

[DB] 분산 시스템을 선택하는 삼각형, CAP 이론

by EricJeong 2020. 3. 19.

CAP란

분산 시스템은 일관성(Consistency), 가용성(Availability), 분할 내성(Partition tolerance) 이라는 3가지중 최대 2가지만 만족할 수 있다는 이론입니다. RDBMS, NoSQL등 어떤 데이터베이스를 사용해야 하는지 선택할 때 해당 시스템의 특성에 따라 CAP 필요성에 대해 분석하고 그에 맞는 데이터베이스를 선택할 수 있습니다.

 

 

일관성(Consistency) - 모든 노드들이 동일 시간 동일 데이터를 사용자에게 보여줘야 하는 것

가용성(Availability) - 특정 노드에 장애가 발생해도 성공적으로 서비스를 지속하는 것

분할 내성(Partition tolerance) - 연결이 끊어져도 연속해서 동작하는 것

 

 

DBMS별 CAP

CAP 이론에 따르면 분산 시스템은 이중 2가지만 만족할 수 있습니다. 단지 특정 데이터베이스가 무조건 CA, CP등 확정되지는 않습니다.

 

RDBMS는 일반적으로 CA를 만족합니다. 그 중 MySQL은 Master - Slave관계를 사용할 때 CA를, 클러스터 구성을 할 때 CP를 만족합니다. Master - Slave관계를 사용한다면 Slave중 새로운 마스터를 선택할 때 파티션 허용 오차가 생길 수 있습니다. 클러스터 구성을 한다면 라이브 노드 개수가 적을 때 클러스터가 종료될 수 있습니다.

 

NoSQL은 CP, AP형태를 가질 수 있습니다. CP형태를 가지는 NoSQL은 MongoDB, Redis 등이 있습니다.

AP형태를 가지는 NoSQL은 cassandra와 CouchDB가 있습니다. 일관성을 포기하여 데이터의 동기를 보장하지 못하지만 비동기화된 대용량 데이터 처리에 유리할 수 있습니다.

 

그렇기 때문에 여러 데이터베이스에서 다양한 조합을 살펴보고 CAP 우선순위를 정하여 선택하는 것이 좋습니다. 

 

 

 

 

References

https://stackoverflow.com/questions/36404765/why-isnt-rdbms-partition-tolerant-in-cap-theorem-and-why-is-it-available

 

댓글