[데이터베이스] CAP 이론

DevHwan·2023년 4월 12일
0

트랜잭션 ACID에 이어서..

지난 데이터베이스 글에서 트랜잭션의 ACID 특성에 대해 알아보고, 데이터베이스가 가지는 격리수준에 대해 알아봤다. 이번 글에서는 데이터베이스 별로 나누는 CAP 성질에 대해 알아보도록하자.

CAP란?

CAP 이론은 이론적으로 데이터베이스가 CAP 세 가지 성질을 모두 만족시키는 것이 불가능하다는 것을 설명하는 이론이다. 세 가지 성질이라고 하면 다음과 같다.

  • Consistency, 일관성
    • 모든 클라이언트는 데이터베이스에서 동시에 같은 데이터를 접근해야 한다.
  • Availability, 가용성
    • 모든 클라이언트는 언제나 데이터에 접근할 수 있어야 한다.
  • Partition tolerance, 분할 내성
    • 시스템이 일시적으로 네트워크의 문제로 인하여 노드가 정지되거나 메시지 전송이 지연되는 상황에서 정상적인 동작을 유지할 수 있어야 한다.

여기서 가용성과 분할 내성은 비슷해 보이나 분산 시스템에서 각각 다른 개념이다. 둘 다 시스템의 신뢰성에 연관이 있다.

가용성은 시스템 동작이 얼마나 신뢰성을 갖는 지에 대한 척도 중 하나이다. 시스템에서 언제나 원하는 데이터를 빠르게 가져올 수 있는 지에 대한 내용이다. 서버의 가용성을 늘리기 위해서는 여러 서버를 동시에 운영하고 부하 분산 기술을 적용할 수 잇다.

분할 내성은 시스템이 얼마나 견고한지에 대한 특성이다. 시스템의 분할 내성을 높이려면, 분산 데이터베이스에서 데이터를 복제하여 다른 노드에서도 데이터에 접근할 수 있고, 복제복 일부가 손상되어도 또 다른 복제본으로 이를 대체할 수 있다.

ACID의 ‘C’와 CAP의 ‘C’는 같은 것을 의미하는가?

ACID의 C도 일관성, CAP의 C도 일관성을 의미한다. 그러나 각각 이론에서 세부적인 내용은 약간 다르다.

CAP이론에서의 C는 모든 클라이언트가 동시에 같은 데이터를 볼 수 있어야 한다는 것을 의미한다. 분산 시스템에서 데이터의 일관성을 보장하기 위해 다양한 방식의 복제 및 동기화 기술을 사용한다. 이를 통해 모든 클라이언트가 항상 동일한 데이터를 볼 수 있도록 한다. → 시스템 전체 구성에 대한 집중

ACID 이론에서의 C는 데이터베이스에서 데이터가 항상 일관된 상태를 유지한다는 것을 의미한다. 즉 트랜잭션의 시작이 끝나고 난 후에 데이터베이스의 상태가 항상 일치한다는 것을 의미한다. → 시스템 구성보다는 작업 이후에 상태에 집중

CAP 이론 Visual Guide

CAP을 이론적으로 모두 만족할 수 있는 데이터베이스는 없다고 한다. → 현실적으로 구현 가능한가는 다른이야기라고 하는데.. 조금 어렵다.

우리가 자주 사용하는 관계형 데이터베이스인 MySQL은 CA

또 key-value 데이터베이스로 자주 사용하는 mongodb나 redis는 CP

그리고 Column-Oriented으로 데이터를 저장하는 Cassandra의 경우에는 AP를 만족하는 데이터베이스로 분류된다.

정리

CA (Consistency, Availability)

  • 일관성과 가용성을 만족하는 데이터베이스 시스템이다.
  • 모든 노드가 일관된 데이터를 유지하고, 데이터 요청에 대해 즉각적인 응답을 보장한다.
  • 단, 네트워크 분할 등의 예기치 않은 장애 상황에서는 분할 내성을 보장하지 못한다.

CP (Consistency, Partition tolerance)

  • 일관성과 분할 내성을 모두 보장하는 데이터베이스 시스템이다.
  • 네트워크 분할이 일어나더라도 데이터의 일관성을 유지한다.
  • 단, 일부 노드의 장애로 인해 가용성을 보장하지 못할 수 있다.

AP (Availability, Partition tolerance)

  • 가용성과 분할 내성을 모두 보장하는 데이터베이스 시스템이다.
  • 모든 요청에 대해 즉각적인 응답을 보장하고, 네트워크 분할 상황에서도 응답을 보장한다.
  • 단, 데이터의 일관성이 보장되지 않을 수 있다.

자료 출처

https://blog.outsider.ne.kr/519

profile
달리기 시작한 치타

0개의 댓글