반응형

CAP

CAP은 Consistency, Availability, Partition tolerance의 약자로 , 분산 시스템의 데이터베이스 시스템의 성능과 안정성을 설명하는 세 가지 중요한 속성을 나타냅니다. 이 용어는 컴퓨터 과학자인 Eric Brewer에 의해 제안되었으며, 이를 통해 분산 시스템을 설계하고 이해하는 데 도움이 됩니다. 분산 데이터베이스는 방대한 데이터를 다루기에 유용한 시스템입니다. 분산 데이터베이스는 수평 확장할 수 있기 때문에 트래픽이 증가하더라도 낮은 지연 시간을 유지할 수 있고, 일부 노드 장애에 적절히 대응할 수 있습니다.

  1. CA : 일관성과 가용성을 모두 보장하려면 분할 내구성을 희생해야 합니다. 이는 데이터 일관성을 유지하는 것을 우선시하고, 네트워크 분할로 인한 가용성 문제를 감수하는 것을 의미합니다.
  2. CP : 일관성과 분할 내구성을 모두 보장하려면 가용성을 희생해야 합니다. 이는 데이터 일관성을 유지하고, 네트워크 분할로 인해 일시적으로 시스템이 응답할지 않을 수 있음을 의미합니다.

AP : 가용성과 분할 내구성을 모두 보장하려면 일관성을 희생해야 합니다. 이는 시스템이 항상 응답 가능하고, 데이터의 일관성을 보장하기 위해 분할 내구성 문제를 어느 정도 허용하는 것을 의미합니다.

[출처] Big Data: Lambda Architecture in a nutshell

일관성

데이터베이스 시스템이 분산되어 있는 경우에도 모두 클라이언트가 동일한 데이터를 읽을 때 언제나 동일한 결과를 반환하는 속성을 의미합니다. 이것은 데이터베이스 시스템에서 다음과 같은 상황에서 발생할 수 있는 문제를 방지하기 위한 개념입니다.

  • 갱신 이슈 : 하나의 클라이언트가 데이터를 갱산한 후 다른 클라이언트가 동일한 데이터를 읽는 경우, 일관성이 없으면 예기치 않은 결과가 발생할 수 있습니다.
  • 다중 복제본 이슈 : 데이터베이스 시스템이 여러 복제본을 가지고 있을 때, 이 복제본 간의 데이터가 불일치하면 일관성 문제가 발생합니다.
  • 트랜잭션 이슈 : 여러 작업 또는 트랜잭션이 동시에 실행되는 경우, 이러한 작업 간에 데이터의 일관성을 유지해야합니다.

데이터베이스 시스템이 일관성을 보장하려면 모든 복제본이 갱신된 데이터를 동일하게 반영하고, 클라이언트가 데이터를 읽을 때 항상 최신 데이터를 제공해야 합니다. 이를 위해 분산 데이터베이스 시스템은 다양한 일관성 모델을 사용하며, 이러한 모델은 시스템의 요구 사항과 성능 목표에 따라 선택됩니다.

가용성

데이터베이스 시스템이 항상 응답 가능한 상태여야 한다는 속성을 의미합니다. 이것은 클라이언트가 시스템 요청을 보내면, 시스템은 적절한 응답을 반환해야 한다는 것을 나타냅니다.

  • 고가용성 : 데이터베이스 시스템이 중단되거나 사용 불가능한 상태로 빠지면 비즈니스 연속성에 영향을 미칠 수 있습니다. 따라서 비즈니스 운영을 지속적으로 유지하기 위해서는 가용성이 보장되어야 합니다.
  • 서비스 품질 유지 : 사용자 또는 클라이언트가 항상 서비스에 접근할 수 있도록 하는 것은 고객 만족도를 높이고 서비스 품질을 유지하는 데 중요합니다.
  • 분산 시스템에서의 신뢰성 : 분산 데이터베이스나 분산 시스템에서는 여러 노드 간의 통신이 발생하므로 특정 노드 또는 네트워크 장애로 인한 문제를 최소화하기 위해 가용성이 중요합니다.

분할 내구성

분산 시스템에서의 데이터베이스 시스템의 중요한 속성 중 하나입니다. 이는 네트워크 분할로 인해 시스템 내의 일부 노드 간의 통신이 끊어져도 시스템이 계속해서 작동해야 한다는 원칙을 나타냅니다. 이것은 다음과 같은 상황에서 중요합니다.

  1. 네트워크 장애 : 분산 시스템은 여러 노드 간에 데이터를 교환하고 통신해야 합니다. 하지만 네트워크 문제로 인해 노드 간의 통신이 중단될 수 있습니다. 이러한 상황에서도 시스템은 작동해야 하며 데이터 일관성과 가용성을 유지해야 합니다.
  2. 분할 허용성 : 분산 시스템은 지리적으로 떨어진 여러 데이터 센터 또는 노드에 배포될 수 있으며, 이로 인해 네트워크 분할이 발생할 가능성이 있습니다. 이러한 상황에서도 시스템은 각 노드 간의 데이터 일관성을 유지하고 가용성을 유지해야 합니다.
728x90

'BackEnd > 더 깊은 데이터베이스 지식' 카테고리의 다른 글

샤딩 전략  (1) 2023.08.31
데이터 레플리케이션  (0) 2023.08.27
인덱스와 그 작동원리  (1) 2023.08.23