Skip to main content
이 문서는 데이터 웨어하우징 섹션의 일부입니다.

왜 테이블과 뷰의 구분이 필요한가?

데이터 웨어하우스에서 데이터를 저장하고 활용하는 방식은 크게 테이블(Table)뷰(View) 로 나뉩니다. 테이블은 데이터를 물리적으로 저장 하는 객체이고, 뷰는 데이터를 논리적으로 참조 하는 객체입니다.
💡 비유: 테이블은 도서관의 실제 책 이고, 뷰는 목차나 색인 과 같습니다. 책 자체를 복사하지 않고도, 목차를 통해 원하는 정보에 빠르게 접근할 수 있습니다.
이 구분이 중요한 이유는 비용, 성능, 보안, 유지보수 측면에서 각각 최적의 선택이 달라지기 때문입니다. 잘못된 선택은 불필요한 스토리지 비용 증가나 쿼리 성능 저하로 이어질 수 있습니다. 데이터 객체 분류

테이블 유형

관리형 테이블(Managed Table) vs 외부 테이블(External Table)

Databricks에서 생성하는 테이블은 크게 관리형 테이블외부 테이블 두 가지로 나뉩니다.
💡 관리형 테이블을 권장하는 이유: Unity Catalog가 데이터 라이프사이클을 완전히 관리하므로 거버넌스, 리니지 추적, 보안 측면에서 유리합니다. 외부 테이블은 다른 시스템과 동일한 데이터를 공유해야 하는 경우에만 사용하는 것이 좋습니다.

Delta 테이블의 내부 구조

Databricks에서 생성되는 모든 테이블은 기본적으로 Delta Lake 형식입니다. Delta 테이블은 Parquet 데이터 파일트랜잭션 로그(_delta_log) 로 구성됩니다. Delta Table 내부 구조
💡 트랜잭션 로그 덕분에 가능한 기능들: 타임 트래블(Time Travel), ACID 트랜잭션, 동시 읽기/쓰기, 스키마 변경 이력 추적이 모두 이 로그를 기반으로 동작합니다.

뷰(View) 유형

뷰는 데이터를 직접 저장하지 않고 SQL 쿼리를 이름으로 저장 하는 객체입니다. 복잡한 쿼리를 단순화하거나, 보안을 위해 특정 컬럼만 노출하는 데 유용합니다.

일반 뷰(View)

일반 뷰는 저장된 SQL 쿼리에 이름을 붙인 것입니다. 뷰를 조회할 때마다 내부 쿼리가 매번 실행 됩니다.
💡 뷰의 보안 활용: 민감한 컬럼(주민번호, 비밀번호 등)을 제외한 뷰를 만들면, 원본 테이블 접근 권한 없이도 필요한 데이터만 안전하게 공유할 수 있습니다.

임시 뷰(Temporary View)

세션(Session) 동안만 유효한 뷰입니다. 세션이 종료되면 자동으로 삭제됩니다. Notebook이나 SQL Editor에서 중간 결과를 임시로 저장할 때 유용합니다.

Materialized View(Materialized View)

Materialized View는 쿼리 결과를 물리적으로 미리 계산하여 저장 합니다. 원본 데이터가 변경되면 증분 방식으로 자동 갱신 됩니다.
⚠️ Materialized View는 SDP(선언적 파이프라인) 또는 SQL Warehouse에서만 생성 할 수 있습니다. All-Purpose Cluster에서는 생성할 수 없습니다.

스트리밍 테이블(Streaming Table)

스트리밍 테이블은 증분 데이터 처리(Incremental Processing) 에 최적화된 테이블입니다. 새로 추가된 데이터만 처리하여 효율적으로 테이블을 갱신합니다.

Materialized View vs Streaming Table 비교

이 두 가지는 모두 데이터를 물리적으로 저장하지만, 동작 방식이 근본적으로 다릅니다.
💡 선택 기준: “이미 존재하는 데이터를 요약/집계 하고 싶다” → Materialized View. “새로 들어오는 데이터를 계속 수집 하고 싶다” → Streaming Table.

파티셔닝 전략

대용량 테이블에서 쿼리 성능을 높이려면, 데이터를 효율적으로 분할(파티셔닝) 하는 전략이 필요합니다.

기존 파티셔닝 (Hive-style Partitioning)

전통적인 파티셔닝은 특정 컬럼 값에 따라 물리적으로 디렉토리를 나누는 방식입니다.
⚠️ 기존 파티셔닝의 고려사항: 파티션 키를 잘못 선택하면 소규모 파일 문제(Small File Problem) 가 발생합니다. 예를 들어 카디널리티가 너무 높은 컬럼(user_id 등)으로 파티셔닝하면 수백만 개의 작은 파일이 생성되어 오히려 성능이 나빠집니다.

Liquid Clustering (권장)

Liquid Clustering은 Databricks가 제공하는 차세대 데이터 레이아웃 최적화 기능입니다. 파티셔닝과 Z-Order를 대체하며, 데이터 분포에 따라 자동으로 최적의 레이아웃을 조정 합니다.

테이블 속성 설정 (TBLPROPERTIES)

테이블 속성을 통해 Delta 테이블의 동작을 세밀하게 제어할 수 있습니다.

테이블 생명주기 관리

테이블은 생성 → 수정 → 최적화 → 정리/삭제 순서로 관리합니다.
⚠️ VACUUM 주의사항: VACUUM은 보존 기간보다 오래된 파일을 영구 삭제합니다. 실행 후에는 해당 시점 이전으로 타임 트래블할 수 없으므로, 보존 기간을 신중하게 설정하셔야 합니다.

선택 가이드: 언제 어떤 타입을 쓸 것인가?


정리


참고 링크