Datatrans · Technical Playbook

Consistent De-Identification

정합성 유지 비식별화

CONSISTENT rule을 같은 기준 값에 적용해 테이블 간 대응 가능성을 유지하고, 참조 무결성은 별도로 검증합니다.

DatatransSCRAMBLING04 STEPS
  1. 01
    관계 컬럼 분석테이블 간 같은 값을 쓰는 컬럼과 input 식별
  2. 02
    규칙 설계도메인 규칙과 sets 설정 정의
  3. 03
    스크램블링같은 domain·input의 CONSISTENT 변환 수행
  4. 04
    검증Target constraint와 업무 query로 관계 확인
Technical playbook · conceptual sequence
ConsistencyPK/FKDe-Identification

Overview

같은 원본 값이 여러 테이블에 나눠져 있을 때 서로 다른 변환 값을 쓰면 업무 조회와 테스트가 깨질 수 있습니다. Datatrans assignment에서는 같은 domain과 기준 input에 `sets: CONSISTENT`를 적용하는 방식을 구성할 수 있습니다.

CONSISTENT는 같은 input에 대한 변환 일관성을 위한 설정입니다. PK/FK 무결성을 자동 보장한다고 간주하지 말고, 관계 컬럼에 같은 rule·input 설계를 적용한 뒤 Target constraint와 업무 query로 검증해야 합니다.

What You'll Accomplish

같은 domain·input에 대한 CONSISTENT 변환 구성
UNIQUE와 CONSISTENT의 엄격한 배타 검증
실제 Target owner 기준 assignment routing
변환 후 Target constraint와 업무 query 검증

Instructions

1

Assignment YAML 작성

columns는 결과를 저장할 Target 컬럼, rules는 rule_define.yaml의 domain rule입니다. sets=CONSISTENT로 흩어진 동일 데이터를 일관된 가상값으로 변환합니다. UNIQUE와 CONSISTENT는 동시에 사용할 수 없습니다.

yaml
# /secure/rules/customer.yaml
TGT_USER.CUSTOMER:
  - columns: EMAIL
    rules: SC_EMAIL
    args: EMAIL
    sets: CONSISTENT
TGT_USER.ORDERS:
  - columns: CONTACT_EMAIL
    rules: SC_EMAIL
    args: CONTACT_EMAIL
    sets: CONSISTENT
2

스크램블링 이관 실행

scrambles로 assignment 파일을 지정합니다. 여러 파일은 입력 순서대로 병합됩니다. assignment가 없는 테이블은 변경 없이 이관되며, 파일 하나라도 읽기·UTF-8·YAML parsing에 실패하면 일부 정상 규칙만 적용하지 않고 중단합니다.

bash
datatrans source=SRC_USER/password@host:1521/SRCDB \
  target=TGT_USER/password@host:1521/TGTDB \
  tables=SRC_USER.CUSTOMER,SRC_USER.ORDERS \
  remap_schema=SRC_USER:TGT_USER \
  scrambles=/secure/rules/customer.yaml \
  table_action=APPEND \
  jobname=CUSTOMER_MASKED
3

Preflight 결과 확인

SCRAMBLING PREFLIGHT에서 Covered tables, 경고·오류를 확인합니다. PASSED WITH WARNINGS면 경고를 검토한 후 계속 진행됩니다. UNSCRAMBLED_TABLE 정보로 변경 없이 이관되는 테이블을 확인합니다.

bash
datatrans
# DATATRANS> STATUS=CUSTOMER_MASKED
4

참조 무결성 검증

이관 후 PK/FK 관계와 업무 규칙이 유지되는지 애플리케이션 테스트로 검증합니다.

sql
-- 타겟에서 고객-주문 참조 무결성 확인
SELECT COUNT(*) AS orphan_orders
FROM TGT_USER.ORDERS o
WHERE NOT EXISTS (
  SELECT 1 FROM TGT_USER.CUSTOMER c
  WHERE c.EMAIL = o.CONTACT_EMAIL
);

How It Works

1

관계 컬럼 분석

테이블 간 같은 값을 쓰는 컬럼과 input 식별

2

규칙 설계

도메인 규칙과 sets 설정 정의

3

스크램블링

같은 domain·input의 CONSISTENT 변환 수행

4

검증

Target constraint와 업무 query로 관계 확인