스냅샷

스냅샷 (edge-edge-api-snapshots)

스냅샷(Snapshots)은 Edge 샤드와 Qdrant 서버 컬렉션 사이에서 데이터를 이동해요. 이 섹션에서는 메서드들을 다루고, 이들을 어떻게 조합하는지는 데이터 동기화 패턴을 참고하세요.

출처: Qdrant 공식 문서

unpack_snapshot

디스크에 있는 스냅샷 아카이브를 풀어서(언팩) 샤드로 로드할 수 있게 만들어요. Python에서는 static 메서드, Rust에서는 associated 함수라서 샤드 인스턴스가 필요 없어요.

@staticmethod
def unpack_snapshot(snapshot_path: str, target_path: str) -> None
pub fn unpack_snapshot(snapshot_path: &Path, target_path: &Path) -> OperationResult<()>
파라미터 설명
snapshot_path 다운로드한 스냅샷 파일의 경로예요.
target_path 언팩할 디렉토리예요.

snapshot_manifest

샤드의 **스냅샷 매니페스트(manifest)**를 반환해요. 매니페스트는 샤드의 세그먼트들과 그 메타데이터를 설명해요. 부분 스냅샷(partial snapshot)을 요청할 때 서버에 전달해서, 서버가 변경된 세그먼트만 보내게 해요.

def snapshot_manifest(self) -> Any
pub fn snapshot_manifest(&self) -> OperationResult<SnapshotManifest>

반환값은 Python에서는 JSON과 유사한 값, Rust에서는 SnapshotManifest예요.

스냅샷 적용하기 (Apply a Snapshot)

이미 데이터를 보유한 샤드에 스냅샷을 적용해요. 이 부분은 두 언어의 형태가 조금 달라요.

def update_from_snapshot(
    self,
    snapshot_path: str,
    tmp_dir: Optional[str] = None,
) -> None

Python은 열려 있는 샤드에 스냅샷을 **제자리(in place)**에서 적용하고, 선택적으로 tmp_dir을 통해 추출해요. Rust는 샤드의 경로와 두 매니페스트를 받아 병합 결과로 EdgeShard를 반환해요. 그래서 기존 인스턴스를 먼저 drop해야 해요.

파라미터 설명
snapshot_path 적용할 스냅샷의 경로예요.
tmp_dir 추출할 디렉토리. Python 전용이에요.
shard_path 업데이트할 샤드의 경로. Rust 전용이에요.
snapshot_manifest 들어오는 스냅샷의 매니페스트. Rust 전용이에요.

스냅샷 적용은 샤드 디렉토리의 파일을 다시 써요(rewrite). 그 동안에는 쓰기를 일시 중지하거나 버퍼링하고, 대기 중인 업데이트가 이미 서버에 도달했는지 확인해서 로컬 변경이 손실되지 않게 하세요. 서버와 동기화하기를 참고하세요.

더 알아보기 (Learn more)