[DB] PACELC 정리

[verify$y]·2025년 7월 30일

CS핵심개념

목록 보기
6/35

PACELC

서론

  • CAP 정리를 확장한 개념으로 CAP 단점을 극복하기 위해 등장한 데이터베이스 이론
  • CAP이 네트워크 파티션이 발생했을 때의 선택지(Partition vs Availability/Consistency) 만 다루는 반면, PACELC는 파티션이 없을 때의 상황까지 포함하여 시스템의 트레이드오프를 설명합니다.
  • CAP 정리는 네트워크 파티션발생에서 일관성 가용성 2개의 특성을 가지고만 설명이 된다. 네트워크 파티션에서는 2개조합경우만 현실적으로 가능하다.
  • 분산시스템에서 네트워크 파티션을 전제로 두어 설계한다는 정리이다.
  • P가 발생했을때, 아닐때로 구분하여
    • P가 발생했을때 가용성avability, 일관성consistency 사이에서 선택하는 것
    • P가 발생하지 않을떄 지연성latency와 lossOfConsistency일관성손실사이에 두고 선택하는 것
  • 용어는 PAC + ELC 를 합친 것

CAP 간단한 소개

  • Consistency - 모든 동일한 요청에 대한 동일한 응답
  • Availability - 시스템 장애시에도 데이터 접근가능해야함
  • Partition Tolerance - 심지어 일부 노드가 장애시에도 시스템은 정상적으로 작동한다.



소개

PAC

  • CAP이론의 약자를 뒤집음, 왜냐하면 CAP은 현실에서는 절대 불가능한 정리라는 의미로 뒤집었다.
  • 순서를 뒤집은 이유는 P: Partition-Tolerance(분할허용내성) 상황에서 A : Avability를 선택할지, C: Consistency를 선택할지를 정하기 떄문이다.
  • CAP이론은 CP, AP를 고르는 것에 대한 약어이다.
  • 정리하자면, P에서 AP, CP 데이터베이스 결정하기라고 볼 수 있다.

ELC

  • E에서 L, C에서 정하기라고 보면된다.
  • if(Partition) { 데이터베이스 시스템의 A, C 수준을 결정 } else { L, C수준을 결정 }
  • L: Latency, C: Consistency, E: not Partition
  • 파티션발생하지 않는 정상상황에서 Latency와 Consistency중에 결정한다.

한줄로 설명

PACELC = 
If Partition occurs (P), 
	then choose between Availability (A) or Consistency (C); 
	
Else (E), even when no Partition, 
	choose between Latency (L) or Consistency (C); 



Latency vs Consistency Trade-Off

  • 만약 시스템이 완벽한 Consistency를 보장한다면 시스템은 Latency가 증가된다. 그 결과 네트워크 파티션이 발생해야만 시스템 정상 작동할 수 있다. 네트워크 파티션하지 않으면 가용성을 보장할 수 없다.
  • 파티션이 없다면 consistency와 availability 모두 보장가능하다. PACELC는 시스템이 데이터를 어떤방식으로 복제하는지에 대해 설명한다.
  • 데이터 저장이 원자적으로 일관성을 보장된다면, 읽기, 쓰기지연은 적어도 메시지지연밖에 없을겻이다. 하지만 실제로는 대부분의시슽메에서는 요청응답을 보장하기 위한 타임딜레이보다는 명료한 지식을 필요로 한다.
  • 일관성보장을위한 읽기 쓰기 메시지 지연을 요구한다.
  • 지연성이 낮은 시스템에서는 지연성을 낮추기위해서 대조적으로 일관성은 낮다.

Trade-Off 원칙

  • 일관성이 보장될수록, 시스템지연시간(Latency)는 증가
  • 그 이유는 모든 노드에 쓰기, 읽기 확인 메시지 전달이 완료되어야만 클라이언트에 응답할 수 있기 때문이다.
  • 반대로 지연을 줄이기 위해 일부 일관성을 포기한다.

상세설명

  • 시스템이 강한일관성을 보장하려면, 데이터변경시 모든 복제 노드에 데이터를 동기적으로 전파,응답을 기다려야 한다.
    • 이러면 쓰기 읽기 요청 지연(시간) 증가
    • 분산시스템에서 네트워크 지연이나 장애가 전체 지연을 의미하므로, 결국에 시스템체지연시간이 늘어나게 된다는 것
  • 따라서 지연성(지연시간증가)를 낮추고자 하는 시스템은 일반적으로 일관성 수준을 낮춘다.
    • 이것이 Eventually Consistency시스템
  • 또한 일부 시스템은 쓰기에는 강한 일관성을 보장하지만 읽기 시점에서 일관성 선택권을 부여해 사용자 선택을 가능하게 만드는 경우도 있다.
    • 이것은 Cassandra의 Tunable Consistency




PACELC 조합(4가지)

  1. PA - EL : 일관성보다는 가용성과 지연성을 우선

    • 네트워크 분할 상황에서는 가용성을 우선
    • 평상시에는 지연시간(속도)를 우선하여 일관성보다는 응답속도를 중시
    • 얘: Amazon DynamoDB, Casandra
  2. PA - EC : 파티션에서 가용성을 보장, 정상상황에서는 일관성 보장

    • 분할 시에는 가용성을 보장하지만
    • 평상시에는 일관성을 보장한다.
    • 예 : 일부 Eventually Consistent 시스템
  3. PC - EL : 파티션에서 일관성을 보장, 정상상황에서는 지연성 보장

    • 분할 시에는 일관성을 유지
    • 정상상황에서는 지연성을 줄이기 위해 일관성은 일부 표기
  4. PC - EC : 항상 일관성을 중시

    • 분할 여부와 상관없이 강한 일관성을 보장
    • 지연시간늘어나도 감수한다.
    • 예 : HBase, Zookeeper



정리

  • CAP : 분할 상황에서 가용성 vs 일관성
  • PACELC : 분할시, 정상상황에도 지연성(지연시간단축) vs 일관성 트레이드오프를 고려
  • 시스템설계자는 여러 조합에서 비즈니스 요구사항에 적절한 선택을 해야한다. (성능, 정확성, 실시간성)
profile
welcome

0개의 댓글