샘플 데이터 시딩
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 모델이 concretecatalog/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/ 디렉토리 삭제