1. 왜 시스템 테이블이 필요한가
관찰가능성 (Observability) 부재 문제
데이터 플랫폼을 운영하다 보면 다음과 같은 질문이 반복적으로 생깁니다.- “이번 달 클라우드 비용이 갑자기 왜 늘었지?”
- “누가 프로덕션 테이블을 실수로 삭제했을까?”
- “이 파이프라인 Job이 점점 느려지는 것 같은데, 언제부터였지?”
- “우리 팀에서 실제로 사용하지 않는 클러스터가 얼마나 되지?”
system 카탈로그 아래의 표준 테이블로 제공하여, 익숙한 SQL 한 줄로 플랫폼 전반을 관찰할 수 있게 합니다.
시스템 테이블로 해결하는 주요 과제
| 과제 | 기존 방식 | 시스템 테이블 방식 |
|---|---|---|
| 클라우드 비용 관리 | AWS Cost Explorer + 수동 태깅 | system.billing.usage SQL 분석 |
| 보안 감사 (Security Audit) | CloudTrail JSON 파싱 | system.access.audit 직접 조회 |
| 사용량 분석 | 워크스페이스별 개별 확인 | 계정 전체 통합 뷰 |
| 성능 / SLA 모니터링 | Job 로그 수동 확인 | system.lakeflow.job_run_timeline 집계 |
| 데이터 리니지 (Lineage) | 별도 메타데이터 도구 | system.lineage.table_lineage |
2. 시스템 테이블 개요
system 카탈로그 구조
활성화 방법
시스템 테이블은 Unity Catalog 가 활성화된 계정에서만 사용할 수 있습니다. 대부분의 테이블은 자동으로 활성화되지만, 일부 스키마는 Account Admin이 명시적으로 활성화해야 합니다. Account Console → Settings → System tables 메뉴에서 각 스키마를 활성화합니다. 또는 REST API로도 가능합니다.참고: System tables - Databricks Documentation
데이터 보존 기간 (Data Retention)
| 스키마 | 보존 기간 |
|---|---|
system.billing.usage | 365일 |
system.access.audit | 365일 |
system.compute.clusters | 365일 |
system.lakeflow.* | 365일 |
system.lineage.* | 90일 |
system.storage.* | 365일 |
주의: 보존 기간은 Databricks 정책에 따라 변경될 수 있습니다. 장기 보관이 필요하다면 별도 테이블로 복사하는 파이프라인 구축을 권장합니다.
3. 주요 시스템 테이블 상세
3-1. system.billing.usage — 비용 분석
system.billing.usage 는 Databricks의 모든 워크로드에서 소비한 DBU (Databricks Unit) 사용량을 행 단위로 기록합니다. 클러스터, SQL Warehouse, Jobs, Serverless, DLT 파이프라인 등 모든 제품의 사용량이 포함됩니다.
주요 컬럼
| 컬럼 | 설명 |
|---|---|
usage_date | 사용 날짜 |
sku_name | SKU 이름 (예: STANDARD_ALL_PURPOSE_COMPUTE) |
billing_origin_product | 제품 유형 (JOBS, SQL, ALL_PURPOSE, DLT 등) |
usage_quantity | 소비한 DBU 수량 |
usage_metadata.cluster_id | 관련 클러스터 ID |
usage_metadata.warehouse_id | 관련 웨어하우스 ID |
usage_metadata.job_id | 관련 Job ID |
identity_metadata.run_as | 실행한 사용자 이메일 |
custom_tags | 워크로드에 붙은 커스텀 태그 |
system.billing.list_prices 를 조인하면 DBU를 실제 USD 비용으로 변환할 수 있습니다.
3-2. system.access.audit — 감사 로그
system.access.audit 는 Databricks 플랫폼에서 발생하는 모든 사용자 활동 을 기록합니다. 테이블 조회, 클러스터 생성, 권한 변경, 토큰 발급 등 모든 API 호출이 포함됩니다. 보안 감사(Security Audit), GDPR/규정 준수, 내부 보안 정책 이행 증빙에 핵심적으로 사용됩니다.
주요 컬럼
| 컬럼 | 설명 |
|---|---|
event_time | 이벤트 발생 시각 (UTC) |
event_date | 이벤트 날짜 |
workspace_id | 워크스페이스 ID |
action_name | 수행된 액션 (예: getTable, createCluster, deletePermissions) |
user_identity.email | 행위자 이메일 |
source_ip_address | 요청 발생 IP |
request_params | 요청 파라미터 (JSON) |
response.status_code | 응답 상태 코드 |
service_name | 서비스 이름 (예: clusters, unityCatalog) |
3-3. system.compute.clusters — 클러스터 사용 현황
system.compute.clusters 는 계정 내 모든 클러스터의 설정, 상태, 이벤트 이력 을 제공합니다. 비용 누수(자동 종료 미설정, 과도한 노드 수)를 발견하고, 클러스터 사용 패턴을 최적화하는 데 활용합니다.
주요 컬럼
| 컬럼 | 설명 |
|---|---|
cluster_id | 클러스터 고유 ID |
cluster_name | 클러스터 이름 |
cluster_source | 생성 주체 (UI, JOB, API) |
driver_node_type | 드라이버 노드 타입 |
node_type_id | 워커 노드 타입 |
autoscale | 오토스케일 설정 (min/max 워커 수) |
autotermination_minutes | 자동 종료까지의 유휴 시간(분) |
state | 현재 상태 (RUNNING, TERMINATED, PENDING) |
state_start_time | 상태 시작 시각 |
owned_by | 클러스터 소유자 |
custom_tags | 커스텀 태그 |