---
title: Titan의 레이크 카탈로그 관리 방식
description: 조직당 1개 레이크의 격리, Iceberg 메타데이터, 스냅샷, 브랜치, 자격 증명 발급, 안전한 커밋을 알아봅니다.
species: concept
---
# Titan의 레이크 카탈로그 관리 방식

Titan은 조직 레이크의 카탈로그를 관리하는 권한 주체입니다. 테이블 이름을 Iceberg 메타데이터에 연결하고, 새 스냅샷을 게시하며, 단기 스토리지 접근 권한을 발급하고, 어떤 파일이 여전히 도달 가능한지 확인합니다.

## 조직당 1개 레이크

요청 경로와 bearer 신원은 모두 하나의 레이크를 지정합니다. 레이크 bearer는 다른 레이크로 자신의 권한을 확장할 수 없으며, 스토리지 자격 증명은 해당 레이크의 루트로 범위가 제한됩니다. 물리적 레이크 ID는 SQL에 나타나지 않습니다. 쿼리에서 사용하는 `titan` 이름은 연결된 별칭일 뿐입니다.

## 테이블 로드

권한이 있는 로드 요청은 유효기간이 있는 스토리지 자격 증명과 함께 Iceberg 메타데이터를 응답 본문으로 반환합니다. 자격 증명 등급은 작업에 맞게 정해집니다. 일반 테이블 읽기, 결과 읽기, 아카이브가 하나의 광범위한 토큰을 공유하지 않습니다.

현재 레이크 규모에는 한도가 있으므로 네임스페이스 및 테이블 목록은 의도적으로 페이지를 나누지 않습니다. 메타데이터가 계속해서 기준 정보가 됩니다. 어떤 목록도 스토리지에 흩어져 있는 객체를 보고 테이블을 추정하지 않습니다.

## 안전한 커밋

각 변경 작업은 현재 테이블 상태를 기준으로 요구 사항을 검증하고, 비교 후 교환 방식의 조정을 통해 새 메타데이터 포인터를 게시합니다.

`409`는 요청된 커밋이 충돌에서 패했다는 사실을 Titan이 확인했다는 뜻입니다. 결과를 알 수 없으면 `504 CommitStateUnknownException`을 반환하므로 호출자는 준비된 파일을 보존하고 상태를 확인합니다. 불확실한 결과를 `409`로 보고하면 성공했을 수 있는 커밋의 데이터가 정리 과정에서 삭제될 수 있습니다.

오류에는 Iceberg 형식 `{"error":{"message","type","code"}}`을 사용하고, 거부 시 안정적인 기계 판독용 `reason`을 추가합니다.

## 스냅샷과 보존

커밋마다 변경 불가능한 스냅샷을 추가합니다. 시간 여행은 카탈로그 메타데이터를 통해 해석됩니다. 보존 정책은 사용 중인 테이블, 활성 브랜치, 임대, 보호된 스냅샷이 더는 참조하지 않는 경우에만 이력을 제거합니다.

가비지 수집은 검증된 도달 가능성을 따라갑니다. 개별 파일이 참조되지 않는 것처럼 보인다는 사실만으로 삭제가 안전하다고 판단하지 않습니다.

## 브랜치

브랜치는 부모와 제한된 깊이를 가진, 경로에 안전한 등록된 이름입니다. 첫 쓰기 전에는 부모의 현재 상태를 따릅니다. 첫 번째로 수락된 쓰기가 계보를 고정하고 브랜치 전용 포인터를 게시합니다.

기본 브랜치가 아닌 브랜치에는 유효기간과 스냅샷 보존의 기본값을 지정할 수 있습니다. 읽기에는 동일한 레이크 범위의 권한 경계가 적용됩니다. 쓰기에는 읽기·쓰기 레이크 bearer가 필요하며, 내부 소스 작업은 기본 브랜치로 제한됩니다. `main`으로의 암묵적인 병합은 없습니다.

## 모호함 없는 가용성

상태 및 준비 여부 확인은 프로세스가 살아 있는 것과 권위 있는 카탈로그 상태를 제공할 수 있는 것을 구분합니다. 카탈로그가 안전한 응답임을 입증할 수 없으면 요청을 거부하거나 알 수 없는 상태를 보고합니다. 가용성을 확보하려고 메타데이터를 만들어내지 않습니다.
