본문 바로가기
Dev/유용한도구들

CRDT 기능 - Collaboration

by nakanara 2024. 10. 23.
반응형

Conflict-free Replicated Data Types (CRDTs)

Conflict-free Replicated Data Types (CRDTs)은 분산 시스템에서 데이터의 일관성을 유지하면서도 병렬적으로 수정할 수 있는 데이터 구조입니다. CRDT는 여러 사용자가 동시에 데이터를 수정할 때 발생할 수 있는 충돌을 자동으로 해결하여, 모든 노드가 동일한 최종 상태를 보장합니다. 이는 특히 실시간 협업 애플리케이션에서 중요한 역할을 합니다. CRDT는 상태 기반(state-based) 또는 변경 기반(operation-based)으로 구현될 수 있습니다.

Jira, MS Office의 웹 에디터에서 많이 사용되고 있습니다.

CRDT의 주요 기능

  • 병행성 지원: 여러 사용자가 동시에 데이터에 접근하고 수정할 수 있어 실시간 협업이 가능합니다.
  • 충돌 해결: 각 사용자에 의한 변경 사항이 자연스럽게 병합되어, 충돌 없이 데이터의 일관성을 유지합니다.
  • 최종 일관성: 모든 사용자에게 동일한 데이터 상태가 보장되어, 네트워크 지연이나 분리 상태에서도 일관성을 유지할 수 있습니다.
  • 분산 시스템 적합성: 여러 노드 간의 데이터 동기화가 필요 없는 구조로, 분산 시스템에 적합합니다.

Top 5 CRDT 오픈소스 라이브러리

  1. Yjs
    Yjs는 JavaScript로 작성된 CRDT 라이브러리로, 실시간 협업 애플리케이션에서 데이터를 관리하는 데 사용됩니다. Yjs는 문서 기반 CRDT로, 텍스트, 배열, 맵 등 다양한 데이터 구조를 지원합니다.
    Yjs GitHub
  2. Automerge
    Automerge는 JavaScript로 작성된 CRDT 라이브러리로, 간단한 API를 제공하여 데이터 구조를 자동으로 병합합니다. 이는 특히 오프라인에서 작업한 후 다시 연결할 때 유용합니다.
    Automerge GitHub
  3. RGA (Replicated Growable Array)
    RGA는 텍스트와 배열을 위해 설계된 CRDT로, 주로 문서 편집 애플리케이션에 사용됩니다. RGA는 각 요소의 삽입 및 삭제를 처리하여 충돌을 해결합니다.
    RGA GitHub
  4. CRDTs in Clojure (Clojure CRDT)
    Clojure 프로그래밍 언어를 위한 CRDT 구현으로, 데이터 구조의 동기화 및 충돌 해결을 지원합니다. Clojure의 불변성 개념과 잘 어우러집니다.
    Clojure CRDT GitHub
  5. DeltaCRDT
    DeltaCRDT는 데이터 구조의 변경 사항을 추적하는 방식으로, 효율적으로 CRDT를 구현합니다. 이 라이브러리는 성능을 최적화하며, 분산 시스템에서의 사용에 적합합니다.
    DeltaCRDT GitHub
반응형

'Dev > 유용한도구들' 카테고리의 다른 글

[NAS] TrueNAS  (0) 2023.07.24
[AI] 인공지능 PPT 제작 서비스 gamma app  (0) 2023.06.13
HAProxy  (0) 2023.05.04
Autodraw - AI 그림 그리기 도구  (0) 2023.04.28
Web DB Client - CloudBeaver  (0) 2023.04.26