Conflict Resolution
여러 클라이언트가 동시에 변경할 때 Turso 동기화가 어떻게 처리하는지 설명하는 문서예요. 핵심 규칙부터 풀 동기화 동작까지 순서대로 살펴볼게요.
출처: 문서
본문
이 사용법은 로컬 Turso 데이터베이스를 동기화하기 위해 Turso Cloud를 사용하며, 계정이 있다고 가정해요.Last Push Wins
Turso 동기화는 last push wins(마지막 푸시가 이긴다) 전략을 사용해요. 두 클라이언트가 같은 데이터를 수정하고 푸시하면, 마지막 푸시가 원격의 최종 상태를 결정해요.
| Time | Client A | Client B |
|---|---|---|
| T1 | UPDATE users SET name='Alice' WHERE id=1 |
|
| T2 | UPDATE users SET name='Bob' WHERE id=1 |
|
| T3 | push() |
|
| T4 | push() |
결과: Client B가 마지막에 푸시했기 때문에 이름은 'Bob'이 돼요.
What Happens During Pull
푸시하지 않은 로컬 변경이 있는 상태에서 풀을 하면 이런 순서로 진행돼요.
- 로컬 데이터베이스가 마지막 동기화 상태로 롤백돼요
- 원격 변경이 적용돼요
- 푸시하지 않은 로컬 변경이 그 위에 **재생(replay)**돼요
이 롤백-재플레이는 원자적으로 일어나요. 무언가 실패하면 데이터베이스는 이전 상태 그대로 유지돼요.
더 알아보기 (Learn more)
- Usage - 동기화 사용법 전체
- Checkpoint - 로컬 WAL 압축하기
- Local Sync Server - 로컬 동기화 서버 운영
- Partial Sync - 부분 동기화