IT/CS

[CS] CRDT

어린이개발자 2024. 12. 11. 11:25

CRDT(Conflict-free Replicated Data Type) 는 분산 시스템에서 데이터 복제를 처리하기 위한 구조다.
 
1. 주요 특징
- 충돌 없는 병합
  > 각 노드에서 독립적으로 데이터를 수정한 후, 병합 시 충돌 없이 자동으로 일관된 상태 보장
- 최종 일관성
  > 네트워크 분리 또는 지연 상황에서도, 모든 노드는 결국 동일한 상태로 수렴
- 병합 및 독립 수정 허용
  > 여러 노드에서 병렬로 데이터를 수정할 수 있으며, 수정된 데이터는 병합 시 자동으로 조화
 
2. 종류 (데이터 병합 방식에 따라 나뉨)
- 2.1. State-Based CRDT
  > 각 노드는 데이터의 전체 상태를 주기적으로 다른 노드와 동기화
  > 병합 연산자는 결합 연산자를 사용하며, 연산의 순서와 상관없이 동일한 결과 획득
- 2.2. Operation-Based CRDT
  > 데이터의 상태가 아닌 각 연산을 다른 노드에 전파
  > 전파된 연산은 수신 노드에서 재적용되어 최종 일관성 보장
 
3. 예시
- 3.1. G-Counter(Grow-only Counter)
  > 오직 증가만 가능한 카운터
  > 각 노드에서 숫자를 독립적으로 증가시킨 후, 병합 시 각 노드의 값을 더함
- 3.2. LWW-Register(Last-Write-Wins Register)
  > 마지막에 기록된 값이 승리하는 데이터 타입
  > 타임스탬프를 기반으로 병합 시 최신 값 유지
- 3.3. RGA(Replicated Growable Array)
  > 분산 환경에서 리스트 관리
  > 실시간 협업 문서 편집기에 사용
 
4. 사용 사례
- 분산 데이터베이스, 실시간 협업 애플리케이션, 오프라인 동기화 시스템

'IT > CS' 카테고리의 다른 글

[CS] .so 파일과 .a 파일 비교  (1) 2024.12.11
[CS] 사용자 패스워드 전송/보관 방법  (0) 2024.12.11
[CS] Base64 인코딩  (1) 2024.12.11
[CS] System Call  (1) 2024.12.09
[CS] 예외 처리  (0) 2024.03.24