yorkie의 편집 과정은 어떻게 이루어질까?
변경사항을 올리는 과정 -> push
변경사항을 클라이언트가 내려받기 ->pull
- 변경사항 순차 전달하는 일반 모드
- 변경사항이 임계점을 초과할 경우 문서 전체를 전달하는 스냅샷 모드
욜키
- 클라
- document
- 서버
그럼 pushpull은 언제 사용될까?
클라에서 문서에 연결하는 attach -> attachDocument에서 클라이언트에서 받아갈 문서 상태 동기화할 때 pushpull 사용
detach시 최종 상태를 동기화할 때도 pushpull 사용
스키마 검증 #
프로젝트 소유자가 원하는 데이터 유형을 강제할 수 있는 기능
- 사용자가 정의한 스키마에 맞는지 검증
- 사용자의 변경사항 검증
사용자가 정의한 스키마에 맞는지 검증할 때는 AST 사용
-> 이런 검증 동작이 부하가 좀 걸릴 거 같은데 언제 검증을 하는지?
pushpull에서 락을 통해서 같은 클라이언트가 동시에 변경사항을 반영하는 게 안된다고 했는데 그걸 해결하기 위해 crdt가 있는 게 아니엇나?