-
Notifications
You must be signed in to change notification settings - Fork 0
[동시편집] CRDT ID 부여방식
wi-seong-cheol edited this page Dec 12, 2023
·
1 revision
CRDT에서 삽입과 삭제 등의 작업들을 할 때 위치를 파악해야 한다.
이 때 사용하는 것이 Identifier(ID)다.
ID는 상대적인 위치를 가리켜 노드를 탐색하여 위치를 찾는다.
다양한 CRDT 알고리즘이 존재하고, 이 중에서 성능과 구현 난이도를 비교하여 RGASplitTree
방식을 채택하였다.
우리는 ID를 다음과 같이 정의하여 사용하였다.
// RGA identifier
struct RGASS3Vector: Codable {
/// upstream peer ID
var sid: Int
/// sum of the upstream vector clock value during insertion
/// 식별자 A가 B를 선행한다고 말하면`(A < B)`, `sumA < sumB` 또는 `sumA = sumB ∧ sidA < sidB`이다.
var sum: Int
/// 최초로 삽입된 노드 내에서 오프셋
/// 기본 값은 0
var offset: Int
```
}
- [ADR] 아키텍처 의사 결정 기록: iOS 애플리케이션 아키텍처 채택하기
- [ADR] 아키텍처 의사 결정 기록: SwiftLint 채택
- [ADR] 아키텍처 의사 결정 기록: UI 영역에서 Combine 사용 결정
- [ADR] 아키텍처 의사 결정 기록: Presentation영역의 ViewModel에서 Input Output 패턴 도입 결정
- [ADR] 아키텍처 의사 결정 기록: 코디네이터 패턴 도입 결정
- [ADR] 아키텍처 의사 결정 기록: 로컬 스토리지로 코어 데이터 사용 결정
- [ADR] 아키텍처 의사 결정 기록: Custom Network Foundation 라이브러리 구현 및 모듈화 결정
- [ADR] 아키텍처 의사 결정 기록: 이미지캐셔 라이브러리 구현 및 모듈화 결정