Databricks 데이터 엔지니어

Databricks 데이터 엔지니어 3강

[Associate] 관계형 엔티티 — Managed vs External

이번 강은 데이터베이스·테이블·뷰 같은 관계형 엔티티와 저장 방식을 다룬다.

Databricks 3강 개념도

Databricks에서 테이블을 만드는 방법은 여러 가지이고, 특히 관리형(Managed)과 외부(External) 테이블의 차이는 시험에 자주 나온다.

이 강의 목표는 다음과 같다.

  • 메타스토어·카탈로그·스키마·테이블 계층을 안다.
  • Managed와 External 테이블의 차이를 이해한다.
  • 뷰·임시뷰·CTE를 구분해 쓴다.

1. 엔티티 계층

카탈로그 → 스키마(데이터베이스) → 테이블/뷰 순서로 이름이 붙는다. Unity Catalog에서는 카탈로그.스키마.테이블 3단 이름을 쓴다.

CREATE SCHEMA IF NOT EXISTS sales_db;
USE sales_db;

2. Managed 테이블

  • 메타데이터와 데이터 파일 모두 Databricks가 관리한다.
  • 기본 저장 위치에 데이터가 놓인다.
  • DROP 하면 데이터까지 삭제된다.
CREATE TABLE orders (id INT, amt DOUBLE);   -- LOCATION 없음 → Managed

3. External 테이블

  • LOCATION으로 외부 경로를 지정한다. 데이터는 그 경로에 있다.
  • DROP 해도 데이터는 남는다 (메타데이터만 제거).
  • 여러 도구가 같은 데이터를 공유하거나, 데이터 수명을 테이블과 분리하고 싶을 때 쓴다.
CREATE TABLE ext_orders (id INT, amt DOUBLE)
LOCATION 's3://bucket/orders';              -- External

4. 뷰 · 임시뷰 · CTE

종류 특징
뷰(VIEW) 저장된 쿼리. 데이터 없음. 카탈로그에 영속
임시뷰(TEMP VIEW) 현재 세션에서만 유효
CTE(WITH) 단일 쿼리 안에서만 쓰는 임시 결과
CREATE VIEW vip AS SELECT * FROM orders WHERE amt > 1000;

예제

예제) 데이터 레이크의 원본 파일은 다른 팀도 쓰므로, 테이블을 지워도 파일은 보존돼야 한다. 어떤 테이블을 만들어야 하나?

해설) External 테이블을 만든다. LOCATION으로 공유 경로를 지정하면, 나중에 DROP TABLE 해도 메타데이터만 지워지고 실제 데이터 파일은 그대로 남아 다른 팀이 계속 쓸 수 있다.

샘플 문제

문) Managed 테이블에 대한 설명으로 옳은 것은?

  • (A) DROP 해도 데이터 파일이 남는다
  • (B) 반드시 LOCATION을 지정해야 한다
  • (C) DROP 하면 메타데이터와 데이터가 모두 삭제된다
  • (D) 뷰의 한 종류다

정답: (C). Managed 테이블은 데이터까지 Databricks가 소유하므로 DROP 시 데이터도 삭제된다. LOCATION을 주면 External이 된다.

정리

  • 계층: 카탈로그 → 스키마 → 테이블/뷰 (Unity Catalog는 3단 이름).
  • Managed: 데이터까지 관리, DROP 시 데이터 삭제.
  • External: LOCATION 지정, DROP 해도 데이터 보존.
  • 뷰=영속 쿼리, 임시뷰=세션 한정, CTE=쿼리 내 임시.

다음 강에서는 Spark SQL로 데이터를 추출·변환하는 ELT를 시작한다.

댓글 0