---
title: 동기화
description: 일정, 증분 및 전체 읽기, 스키마 변화, 삭제, 병합 의미를 이해합니다.
species: concept
---
# 동기화

동기화는 소스 레코드를 읽고 레이크에 일관된 새 상태를 커밋합니다. 실행 중에도 이전 스냅샷을 쿼리할 수 있습니다. 읽기는 커밋이 성공한 후에만 새 스냅샷으로 전환됩니다.

## 수명 주기

1. Supernova는 소스 자격 증명으로 볼 수 있는 테이블과 열을 검색합니다.
2. 실행은 새로 생기거나 변경된 소스 레코드를 읽으며, 소스가 지원하면 저장된 위치에서 재개합니다.
3. 행은 소스 키로 병합됩니다. 같은 키의 나중 값이 이전 현재 값을 대체합니다.
4. 삭제 감지는 병합과 동일한 커밋에서 행에 `_deleted = true`를 표시합니다.
5. 커밋된 스냅샷은 새 쿼리에서 볼 수 있게 됩니다.

새 소스는 연결할 때 동기화합니다. 기본 반복 간격은 4시간입니다. 소스의 **동기화 기록** 탭은 각 실행과 결과를 보여줍니다.

## 증분 읽기와 전체 읽기

증분 소스는 업데이트 타임스탬프, 이벤트 ID, 페이지 토큰 같은 커서를 제공합니다. Supernova는 해당 데이터를 영구 저장한 뒤에만 그 위치를 저장합니다. 실행이 중단되면 다음 실행은 마지막으로 영구 저장된 위치에서 재개합니다.

전체 읽기는 소스를 다시 나열하고 레이크와 대조하여 조정합니다. 소스 요청은 더 많이 필요하지만 일부 API에서 삭제를 정확히 감지하는 유일한 방법입니다. Salesforce는 레이크별 조정 게이트가 활성화될 때까지 전체 읽기를 수행합니다. 이후에는 `SystemModstamp`를 우선 사용하고, 없으면 `LastModifiedDate`를, 두 필드 모두 없는 객체에는 `CreatedDate`를 사용합니다.

## 고정 스키마와 검색된 스키마

Stripe 같은 고정 스키마 소스는 Supernova에 테이블을 정의합니다. 새로운 소스 열은 코드 변경으로 이 계약에 추가됩니다.

PostgreSQL, Airtable, Salesforce 같은 스키마 검색 소스는 소스에 메타데이터를 요청합니다. 해당 **테이블** 탭은 연결된 계정의 정확한 참조 정보입니다. 새로 검색된 열은 종속 모델에 예상치 못한 영향을 주기 전에 스키마 변경 피드에 표시됩니다.

## 삭제

Supernova는 이력을 지우는 대신 소스에서 삭제된 행을 보존하고 `_deleted`를 설정합니다. 현재 상태를 조회하는 쿼리는 이를 명시해야 합니다.

```sql
select id, email, _synced_at
from titan.hubspot.contacts
where not _deleted
```

삭제 감지는 소스마다 다릅니다. 일부 API는 삭제 이벤트를 보내지만, 다른 API는 모든 키를 검사해야 합니다. 이런 제약이 있으면 해당 커넥터 페이지에 명시합니다.

## 일관성

테이블 1개의 커밋은 원자적입니다. 쿼리는 실행 전 스냅샷이나 실행 후 스냅샷 중 하나를 보며 둘을 반씩 섞어 보지 않습니다. 관련 테이블은 서로 다른 시점에 완료될 수 있으므로, 보고서에 공통 최신성 기준이 필요하면 각 테이블의 `_synced_at` 값을 사용하세요.
