데이터브릭스의 시스템 테이블

GarionNachal·2025년 4월 19일
0

databricks

목록 보기
17/24

시스템 테이블이란?

데이터브릭스 시스템 테이블은 계정의 운영 데이터를 분석할 수 있는 Databricks에서 호스팅하는 분석 저장소입니다. 이 테이블들은 system 카탈로그에 위치하며, 계정 전체에서 이루어지는 다양한 활동과 리소스 사용에 대한 이력 정보를 제공합니다. 시스템 테이블을 통해 사용자는 계정 활동, 리소스 사용량, 비용, 쿼리 성능 등을 모니터링하고 분석할 수 있습니다.

시스템 테이블의 주요 특징은 다음과 같습니다:

  • 중앙 집중식 데이터 저장소: 계정 내 모든 워크스페이스의 운영 데이터가 중앙에서 관리됩니다.
  • 이력 관찰 가능성: 과거 활동 및 사용 패턴을 분석할 수 있습니다.
  • Unity Catalog 통합: 모든 시스템 테이블은 Unity Catalog를 통해 관리되며 접근됩니다.
  • 지역별 데이터 저장: 대부분의 데이터는 해당 지역(리전)에서만 접근 가능하지만, 일부 글로벌 데이터(예: 청구 정보)는 모든 지역에서 접근할 수 있습니다.

시스템 테이블의 종류

데이터브릭스는 다음과 같은 주요 시스템 테이블 스키마를 제공합니다:

스키마설명주요 테이블
access접근 및 감사 관련 데이터audittable_lineagecolumn_lineageassistant_eventsclean_room_eventsoutbound_network
billing비용 및 청구 관련 데이터usagelist_prices
compute컴퓨팅 리소스 관련 데이터clustersnode_timelinenode_typeswarehouseswarehouse_events
lakeflow작업 및 워크플로우 관련 데이터jobsjob_tasksjob_run_timelinejob_task_run_timeline
marketplace마켓플레이스 관련 데이터listing_funnel_eventslisting_access_events
query쿼리 실행 관련 데이터history
serving모델 서빙 관련 데이터endpoint_usageserved_entities
storage스토리지 최적화 관련 데이터predictive_optimization_operations_history

이중 일부 테이블은 기본적으로 활성화되어 있으며(billingcompute), 나머지는 계정 관리자가 수동으로 활성화해야 합니다.

주요 시스템 테이블 분석

감사 로그 (Audit Logs)

감사 로그 시스템 테이블(system.access.audit)은 계정 내에서 발생하는 모든 감사 이벤트를 기록합니다. 이를 통해 누가, 언제, 어떤 작업을 수행했는지 추적할 수 있습니다.

주요 컬럼:

account_id          - 계정 ID
workspace_id        - 워크스페이스 ID
event_time          - 이벤트 발생 시간
source_ip_address   - 요청 발생 IP 주소
user_identity       - 요청 사용자 정보
service_name        - 서비스 이름 (unityCatalog, notebook 등)
action_name         - 수행된 작업 (getTable, createTable 등)
request_params      - 요청 파라미터
response            - 응답 정보

활용 사례:

  • 특정 테이블에 접근한 사용자 추적
  • 권한 변경 내역 모니터링
  • 보안 감사 및 규정 준수 검증

쿼리 히스토리 (Query History)

쿼리 히스토리 테이블(system.query.history)은 SQL 웨어하우스나 서버리스 컴퓨팅에서 실행된 모든 쿼리에 대한 기록을 제공합니다.

주요 컬럼:

statement_id         - 쿼리 실행 고유 ID
executed_by          - 실행한 사용자 이메일/이름
statement_text       - SQL 문장 텍스트
statement_type       - 문장 타입 (SELECT, INSERT 등)
total_duration_ms    - 총 실행 시간(밀리초)
execution_duration_ms - 실행 단계 소요 시간
start_time           - 쿼리 시작 시간
end_time             - 쿼리 종료 시간
read_bytes           - 읽은 데이터 크기
read_rows            - 읽은 행 수
produced_rows        - 생성된 행 수

활용 사례:

  • 성능 최적화를 위한 쿼리 패턴 분석
  • 리소스 집약적 쿼리 식별
  • 사용자별 쿼리 행동 패턴 분석

작업 관련 테이블 (Jobs Tables)

작업 관련 시스템 테이블(system.lakeflow.*)은 데이터브릭스 작업의 생성, 실행, 성능에 대한 정보를 제공합니다.

주요 테이블:

  1. jobs: 모든 작업의 메타데이터

    job_id       - 작업 ID
    name         - 작업 이름
    creator_id   - 생성자 ID
    run_as       - 실행 권한 사용자
    
  2. job_tasks: 작업 내 태스크 정보

    job_id       - 작업 ID
    task_key     - 태스크 키
    depends_on_keys - 의존성 있는 태스크 키
    
  3. job_run_timeline: 작업 실행 타임라인

    run_id         - 실행 ID
    period_start_time - 실행 시작 시간
    period_end_time - 실행 종료 시간
    trigger_type   - 트리거 유형
    result_state   - 실행 결과 상태
    

활용 사례:

  • 작업 실행 성능 모니터링
  • 실패한 작업 식별 및 문제 해결
  • 리소스 사용량 최적화

비용 관련 테이블 (Billing Tables)

청구 사용량 테이블(system.billing.usage)은 계정의 모든 청구 가능한 사용량에 대한 정보를 제공합니다.

주요 컬럼:

sku_name         - SKU 이름
usage_start_time - 사용 시작 시간
usage_end_time   - 사용 종료 시간
usage_quantity   - 사용량
usage_unit       - 사용 단위 (DBU 등)
usage_metadata   - 사용 메타데이터 (cluster_id, job_id 등)
identity_metadata - 실행 주체 정보
record_type      - 레코드 타입 (원본, 수정 등)
billing_origin_product - 사용 제품(JOBS, DLT, SQL 등)

활용 사례:

  • 비용 모니터링 및 최적화
  • 부서별/프로젝트별 비용 할당
  • 비정상적인 사용량 패턴 감지

시스템 테이블 활성화 및 접근 방법

시스템 테이블을 사용하려면 Unity Catalog가 활성화된 워크스페이스가 필요합니다. 다음 절차에 따라 시스템 테이블을 활성화하고 접근할 수 있습니다:

1. 시스템 스키마 활성화

시스템 테이블은 스키마 레벨에서 활성화됩니다. billing 및 compute 스키마는 기본적으로 활성화되어 있으며, 다른 스키마는 계정 관리자가 수동으로 활성화해야 합니다.

Databricks CLI를 사용한 활성화 방법:

Copy# 사용 가능한 시스템 스키마 목록 확인
databricks system-schemas list METASTORE_ID

# 시스템 스키마 활성화
databricks system-schemas enable METASTORE_ID SCHEMA_NAME

2. 테이블 접근 권한 부여

시스템 테이블에 대한 접근 권한은 Unity Catalog를 통해 관리됩니다. 메타스토어 관리자이자 계정 관리자인 사용자가 적절한 권한을 부여해야 합니다.

Copy-- 특정 사용자에게 감사 로그 접근 권한 부여
GRANT USE ON SCHEMA system.access TO `user@example.com`;
GRANT SELECT ON TABLE system.access.audit TO `user@example.com`;

-- 특정 그룹에게 청구 데이터 접근 권한 부여
GRANT USE ON SCHEMA system.billing TO `finance-group`;
GRANT SELECT ON TABLE system.billing.usage TO `finance-group`;

3. 카탈로그 탐색기에서 테이블 찾기

Unity Catalog 활성화된 워크스페이스의 카탈로그 탐색기에서 system 카탈로그를 통해 시스템 테이블에 접근할 수 있습니다.

데이터 분석을 위한 샘플 쿼리

테이블 접근 내역 조회

Copy-- 지난 7일간 특정 테이블에 접근한 사용자 목록
SELECT
  user_identity.email as `User`,
  IFNULL(
    request_params.full_name_arg,
    request_params.name
  ) AS `Table`,
  action_name AS `Type of Access`,
  event_time AS `Time of Access`
FROM
  system.access.audit
WHERE
  (
    request_params.full_name_arg = 'catalog_name.schema_name.table_name'
    OR (
      request_params.name = 'table_name'
      AND request_params.schema_name = 'schema_name'
    )
  )
  AND action_name IN ('createTable', 'getTable', 'deleteTable')
  AND event_date > now() - interval 7 day
ORDER BY
  event_date DESC

작업 실행 성능 모니터링

Copy-- 작업별 평균 실행 시간(초) 및 95 퍼센타일 조회
WITH job_run_duration AS (
    SELECT
        workspace_id,
        job_id,
        run_id,
        CAST(SUM(period_end_time - period_start_time) AS LONG) as duration
    FROM
        system.lakeflow.job_run_timeline
    WHERE
      period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
    GROUP BY ALL
)
SELECT
    t1.workspace_id,
    t1.job_id,
    COUNT(DISTINCT t1.run_id) as runs,
    MEAN(t1.duration) as mean_seconds,
    AVG(t1.duration) as avg_seconds,
    PERCENTILE(t1.duration, 0.9) as p90_seconds,
    PERCENTILE(t1.duration, 0.95) as p95_seconds
FROM
    job_run_duration t1
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100

리소스 사용량 및 비용 분석

Copy-- 작업별 월간 비용 분석
WITH jobs_usage AS (
  SELECT
    *,
    usage_metadata.job_id,
    usage_metadata.job_run_id as run_id,
    identity_metadata.run_as as run_as
  FROM system.billing.usage
  WHERE
    billing_origin_product="JOBS"
    AND MONTH(usage_date) = MONTH(CURRENT_DATE)
    AND YEAR(usage_date) = YEAR(CURRENT_DATE)
),
jobs_usage_with_usd AS (
  SELECT
    jobs_usage.*,
    usage_quantity * pricing.default as usage_usd
  FROM jobs_usage
    LEFT JOIN system.billing.list_prices pricing ON
      jobs_usage.sku_name = pricing.sku_name
      AND pricing.price_start_time <= jobs_usage.usage_start_time
      AND (pricing.price_end_time >= jobs_usage.usage_start_time OR pricing.price_end_time IS NULL)
      AND pricing.currency_code="USD"
)
SELECT
  workspace_id,
  job_id,
  FIRST(run_as, TRUE) as run_as,
  sku_name,
  SUM(usage_usd) as usage_usd,
  SUM(usage_quantity) as usage_quantity
FROM jobs_usage_with_usd
GROUP BY ALL
ORDER BY usage_usd DESC
LIMIT 20

사용자별 쿼리 성능 분석

Copy-- 사용자별 평균 쿼리 실행 시간 및 처리된 데이터 양
SELECT
  executed_by,
  COUNT(*) AS query_count,
  AVG(total_duration_ms) / 1000 AS avg_duration_seconds,
  SUM(read_bytes) / POWER(1024, 3) AS total_data_read_gb,
  SUM(read_rows) AS total_rows_read
FROM
  system.query.history
WHERE
  start_time >= DATE_ADD(CURRENT_DATE(), -30)
  AND execution_status = 'FINISHED'
GROUP BY
  executed_by
ORDER BY
  avg_duration_seconds DESC
LIMIT 20

시스템 테이블 활용 전략

데이터브릭스 시스템 테이블을 효과적으로 활용하기 위한 전략은 다음과 같습니다:

1. 보안 및 규정 준수 강화

  • 감사 로그 분석: 정기적으로 system.access.audit 테이블을 분석하여 비정상적인 접근 패턴이나 권한 변경을 모니터링합니다.
  • 데이터 계보 추적system.access.table_lineage와 system.access.column_lineage를 활용하여 데이터 흐름을 추적하고 규정 준수 요구사항을 충족합니다.
  • 제로 트러스트 아키텍처 구현: 시스템 테이블을 활용하여 누가, 언제, 어떤 데이터에 접근했는지 모니터링함으로써 제로 트러스트 보안 정책을 구현합니다.

2. 비용 최적화 및 리소스 관리

  • 청구 데이터 분석system.billing.usage 테이블을 사용하여 비용 동향을 분석하고 예산을 초과하는 워크로드를 식별합니다.
  • 리소스 활용도 평가system.compute.clusters 및 system.compute.node_timeline 테이블을 통해 컴퓨팅 리소스 활용도를 평가하고 최적화 기회를 찾습니다.
  • 태그 기반 비용 할당: 태그를 활용하여 부서 또는 프로젝트별 비용을 할당하고 추적합니다.

3. 성능 최적화

  • 쿼리 성능 분석system.query.history 테이블을 사용하여 느린 쿼리를 식별하고 최적화 기회를 찾습니다.
  • 작업 실행 모니터링system.lakeflow.job_run_timeline 및 system.lakeflow.job_task_run_timeline 테이블을 통해 작업 실행 성능을 모니터링하고 병목 현상을 식별합니다.
  • 데이터 액세스 패턴 분석: 테이블 계보(lineage) 정보를 분석하여 자주 접근하는 데이터를 식별하고 최적화합니다.

4. 운영 인텔리전스 강화

  • 대시보드 구축: 시스템 테이블 데이터를 기반으로 한 운영 대시보드를 구축하여 실시간 모니터링 및 알림을 설정합니다.
  • 맞춤형 뷰 생성: 시스템 테이블을 기반으로 한 맞춤형 뷰를 생성하여 특정 유형의 분석을 간소화합니다.
  • 정기적인 보고서 자동화: 정기적인 비용, 성능 및 보안 보고서를 자동화하여 운영 인텔리전스를 강화합니다.

정리

데이터브릭스 시스템 테이블은 계정 활동을 모니터링하고 분석하기 위한 강력한 도구입니다. 이 테이블들은 보안, 비용 관리, 성능 최적화 및 운영 인텔리전스를 위한 귀중한 통찰력을 제공합니다.

주요 시스템 테이블을 활용하여 다음과 같은 이점을 얻을 수 있습니다:

  • 계정 전체의 활동에 대한 가시성 확보
  • 리소스 사용량 및 비용에 대한 심층적인 이해
  • 보안 및 규정 준수 강화
  • 성능 문제 및 최적화 기회 식별
  • 데이터 기반 의사 결정 지원

데이터브릭스 시스템 테이블의 효과적인 활용은 레이크하우스 플랫폼의 보안, 효율성 및 비용 효과성을 향상시키는 데 중요한 역할을 합니다. 시스템 테이블 데이터를 정기적으로 분석하고 모니터링하여 데이터 플랫폼에 대한 통찰력을 지속적으로 개선하세요.


참고 자료:

profile
AI를 꿈꾸는 BackEnd개발자

0개의 댓글