ERD(v23.1) 기반 더미 데이터 생성기. 실시간 가족 데이터 통합 관리 시스템의 현재 스키마를 기준으로 FK 무결성이 보장된 대규모 더미 데이터를 생성합니다.
| 테이블 | 기본 건수 | 설명 |
|---|---|---|
customer |
1,000,000 | 시스템 사용자 (가족 구성원) |
admin |
100 | 백오피스 운영자 |
policy |
4 (타입별 1개) | 정책 템플릿 |
family |
250,000 | 가족 메타 정보 |
family_quota |
250,000 | 가족 월별 quota/usage 스냅샷 |
family_member |
~1,000,000 | 가족-사용자 매핑 (가족당 2~10명) |
customer_quota |
~1,000,000 | 구성원별 월별 할당량 |
usage_record |
5,000,000 | 데이터 사용 이력 |
policy_assignment |
500,000 | 정책 적용 매핑 |
notification_log |
2,000,000 | 알림 발송 이력 |
이외에도 reward, mission, appeal, recap 계열 테이블을 함께 생성합니다.
Python 3.10+ 필요
# sudo apt install python3.12-venv -y # venv 설치가 안 되어 있는 경우
python3 -m venv .venv
source .venv/bin/activate
pip install .Windows (CMD / PowerShell):
python -m venv .venv
.venv\Scripts\activate
pip install ../run.bat --scale 0.01 --mode csv./run.sh --scale 0.01 --mode csv# Bash
PYTHONPATH=src python -m generator --scale 0.01 --mode csv
# PowerShell
$env:PYTHONPATH="src"; python -m generator --scale 0.01 --mode csv| 옵션 | 설명 | 기본값 |
|---|---|---|
--mode {csv,db,both} |
출력 모드 | csv |
--scale FACTOR |
전체 스케일 배율 (0.001 = 0.1%, 1.0 = 100%) | 1.0 |
--output-dir PATH |
CSV 출력 디렉토리 | ./output |
--config PATH |
설정 파일 경로 | config/default.yaml |
--seed N |
랜덤 시드 (재현성) | 42 |
--tables T1,T2,... |
특정 테이블만 생성 | 전체 |
--skip-tables T1,T2,... |
특정 테이블 제외 | - |
--schema-only |
DDL만 출력 | - |
--dry-run |
설정 검증만 수행 | - |
--verbose |
상세 로깅 | - |
| 옵션 | 기본값 |
|---|---|
--db-host |
localhost |
--db-port |
3306 |
--db-user |
root |
--db-password |
(빈 문자열) |
--db-name |
family_data |
--batch-size |
1000 |
# 소규모 테스트 (0.1% = 고객 1,000명)
./run.bat --scale 0.001
# 1% 스케일 (고객 10,000명) - 개발 환경 추천
./run.bat --scale 0.01
# 풀 스케일 (고객 1,000,000명)
./run.bat
# DB에 직접 삽입
./run.bat --mode db --db-host localhost --db-name family_data
# CSV + DB 동시
./run.bat --mode both
# 특정 테이블만 생성
./run.bat --tables customer,family,family_member
# usage_record 제외 (빠른 테스트)
./run.bat --skip-tables usage_record
# 여러 테이블 제외
./run.bat --skip-tables usage_record,notification_log
# 설정만 확인
./run.bat --dry-run --scale 0.1output/ 디렉토리에 테이블당 1개 CSV 파일 + DDL 생성:
output/
├── schema.sql # CREATE TABLE DDL
├── customer.csv
├── admin.csv
├── policy.csv
├── family.csv
├── family_quota.csv
├── family_member.csv
├── customer_quota.csv
├── usage_record.csv
├── policy_assignment.csv
├── notification_log.csv
└── ... (활성 생성기별 CSV)
- NULL 값은
\N으로 표기 (MySQLLOAD DATA INFILE호환) - JSON 필드는 이스케이핑된 문자열로 저장
-- 1) DDL 실행
source output/schema.sql;
-- 2) CSV 적재 (테이블별)
LOAD DATA LOCAL INFILE 'output/customer.csv'
INTO TABLE customer
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;MySQL에 직접 배치 INSERT. FOREIGN_KEY_CHECKS=0으로 빠르게 적재합니다.
config/default.yaml에서 상세 설정 가능:
- scale: 테이블별 건수 (policy 제외 - 타입별 자동 생성)
- family: 가족 구성원 수 (min/max/avg)
- data: soft delete 비율, 할당량 초과 비율, 날짜 범위 등
- output: 출력 모드, CSV/DB 설정
- performance: 배치 크기, 시드
- 한국어: 이름, 가족명, 알림 메시지 등 한국어 데이터 (Faker ko_KR)
- FK 무결성: 토폴로지 순서로 생성하여 모든 외래키 참조 보장
- family_quota ↔ customer_quota 정합성:
family_quota.used_bytes= 구성원monthly_used_bytes합계MONTHLY_LIMIT_EXCEEDED차단 = 실제 사용량 >= 한도일 때만FAMILY_QUOTA_EXCEEDED차단 = 가족 할당량 실제 초과 시만- ~5% 가족은 할당량 초과 상태 (
over_quota_ratio설정)
- 정책 템플릿:
policy는 타입별 1개 템플릿,policy_assignment가 다양성 담당 - OWNER 보장: 모든 가족에 최소 1명의 OWNER 존재
- Soft Delete: 5% 레코드에
deleted_at설정 - 재현성:
--seed옵션으로 동일 데이터 재생성 가능 - 비밀번호: 전체 사용자 동일 BCrypt 해시 (
password123)
.generator-dummy/
├── config/default.yaml # 기본 설정
├── schema/ # Flyway 마이그레이션 DDL + 로컬 헬퍼
├── src/generator/
│ ├── __main__.py # 진입점
│ ├── cli.py # CLI 파서
│ ├── config.py # 설정 로딩
│ ├── constants.py # 상수 (ENUM, 메시지 등)
│ ├── context.py # 생성기 간 공유 상태
│ ├── pipeline.py # 오케스트레이터
│ ├── generators/ # 전체 테이블 생성기
│ ├── writers/ # CSV / DB Writer
│ └── utils/ # Faker, 진행률 유틸
├── run.bat # Windows 실행 스크립트
└── run.sh # Bash 실행 스크립트