본문으로 건너뛰기

샘플 데이터 시딩

GenD 플랫폼에 데모 데이터를 적재하는 방법입니다. 3-Layer 시드 시스템을 사용합니다.

개요

GenD는 scripts/seed_demo.py 스크립트로 3개 레이어(Data, AI, Metadata)의 샘플 데이터를 적재합니다. 시드 규모(tiny/demo/perf)를 선택할 수 있으며, 128개 테스트로 데이터 무결성을 검증합니다.

시드 규모

규모소요 시간용도
tiny~10초CI/테스트 최소 데이터
demo~2분일반 데모/개발
perf~30분성능 벤치마크

Makefile 타겟

make seed-demo # 전체 데모 데이터 (~2분)
make seed-demo-tiny # 최소 데이터 (~10초)
make seed-demo-perf # 벤치마크 대용량 (~30분)

make seed-data # Data 레이어만 (Parquet 파일)
make seed-ai # AI 레이어만 (ArangoDB + Weaviate)
make seed-metadata # Metadata 레이어만 (PII, DQ, 정책)

make seed-validate # 시드 데이터 검증
make seed-clean # 시드 데이터 삭제

3-Layer 구조

Layer 1: Data

Parquet 파일 생성 및 Iceberg 테이블 적재. Trino와 SeaweedFS/Ceph에 저장됩니다.

Layer 2: AI

ArangoDB 그래프 데이터, Weaviate 벡터 문서, 용어 사전을 적재합니다.

Layer 3: Metadata

GenD API를 통해 거버넌스 메타데이터(PII 컬럼, 데이터 품질 규칙, Retention 정책)를 등록합니다.

Access Policy 시드 부분 적용

Access Policy 시드는 _explode_policy() 가 정책 문서를 row-level enforcement (row_filter / column_mask) 로 변환하여 일부만 등록됩니다 (access_policies: M/N (exploded from K policy docs)). 다음 경우는 의도적으로 skip:

  • action: "deny" — GRANT/DENY 는 DataGrant 테이블이 deny-by-default 로 처리
  • resource: "*" — DB 모델이 concrete catalog/schema/table 요구
  • row_filter: ":user_id" 등 placeholder — 런타임 binding 필요 (별도 설계)
  • columns: [...] 만 (mask/filter 없음) — DataGrant 영역

mask SQL fragment 는 MaskFunctionRegistry (mask_function_registry.py) 에서 관리됩니다 (redact/partial/hash).

사전 조건

시드 실행 전 다음 서비스가 Running 상태여야 합니다:

  • PostgreSQL (메타데이터 DB)
  • Trino (SQL 엔진)
  • SeaweedFS (오브젝트 스토리지)
  • Hive Metastore (카탈로그)
  • GenD API (메타데이터 API)

시드 데이터 검증

# pytest 기반 검증 (128개 테스트)
make seed-validate

# 또는 직접 실행
cd apps/api && .venv/bin/python -m pytest ../../scripts/test_seed.py -v

데이터 초기화

make seed-clean # scripts/data/card_demo/ 디렉토리 삭제

관련 문서