/

★ 레거시 DB 마이그레이션

★ RFP 우대사항 — 레거시 DB 마이그레이션

매핑 정의서 + 미해결 데이터 관리

레거시 ERP·CRM·문서 관리 시스템을 신규 B2B Cert Portal로 안전하게 이관하는 표준 5단계 작업 방식입니다. 발주처 담당자가 매핑 정의서를 직접 검토·사인오프하고, 매핑이 어려운 데이터는 별도로 모아 케이스별로 처리 방향을 함께 결정합니다. 마이그레이션은 RFP에 명시된 대로 본 사업 외 별도 협의 항목입니다.

표준 5단계 방법론

1W1~2

분석 (Analysis)

레거시 시스템 인벤토리 + 데이터 품질 진단 + 비즈니스 인터뷰

  • 시스템 인벤토리 (테이블·행 수·DBMS·운영 상태)
  • 데이터 품질 진단 리포트 (NULL·중복·참조 깨진 데이터·인코딩 이슈)
  • 발주처 담당자 인터뷰 메모 — 실제 사용 패턴 합의
2W3~4

★ 매핑 정의서 (Mapping Spec)

레거시 ↔ 신규 1:1 매핑 매트릭스. 변환 룰 6분류 + 발주처 담당자 사인오프.

  • 매핑 정의서 (DB 또는 화면 시각화)
  • 기준정보 통합 룰 (산업·국가·문서타입 동의어 사전)
  • 발주처 담당자 검토 사인오프 이력 (누가·언제 승인)
3W5~7

변환 (Transform)

ETL 스크립트 작성 + 단위 검증. 정제 룰 적용 (NULL 기본값·중복 통합·기준정보 매핑).

  • ETL 파이프라인 (SQL·Python·Spring Batch)
  • 단위 검증 스크립트
  • 변환 로그 (행 수 in/out·실패 사례)
4W8~9

적재·검증 (Load + Verify)

Stage 환경 사전 검증 후 운영 1회 일괄 이관 + 행 수·합계·표본 비교 + 발주처 담당자 표본 검수.

  • Stage 환경 사전 검증 (운영 데이터 복제본으로 신규 시스템 동작 확인)
  • 검증 리포트 (행 수·합계·표본 비교 100건)
  • 발주처 담당자 표본 검수 사인오프 후 운영 1회 일괄 cutover
5W10

★ 미해결 데이터 처리

매핑 불가 데이터 별도 보관 + 발주처 담당자 케이스별 결정. 결정 이력 영구 기록.

  • 미해결 데이터 관리 화면 (발주처 담당자 결정 인터페이스)
  • 케이스별 결정 이력 (폐기·수동 정정·보존만)
  • 마이그레이션 cutover 최종 보고서

레거시 시스템 인벤토리 (3)

매핑 정의서 (18)

★ 발주처 담당자 사인오프 기반 — 책임 구조 명확
필터
18건 매칭
ID레거시신규분류변환 룰 / 코멘트사인오프
M-001

tb_client.client_nm

NVARCHAR(100) · MS-SQL 2014

customers.name

varchar(100)

직접 매핑

오민호 (운영팀장)

2026-04-08

M-002

tb_client.biz_no

VARCHAR(20) · MS-SQL 2014

customers.biz_number

varchar(12)

변환

공백·하이픈 제거 후 10자리 정규화 → XXX-XX-XXXXX 표기 통일. 8자리 구식 사업자번호 47건은 발주처 담당자 확인 후 분기.

오민호 (운영팀장)

2026-04-08

M-003

tb_contact.contact_email

VARCHAR(80) · MS-SQL 2014

customers.contact_email

varchar(120)

변환

소문자 정규화 + 공백 trim. NULL 12건은 cert_db.tb_company.email 폴백 적용.

오민호 (운영팀장)

2026-04-08

M-004

tb_client.industry_cd

CHAR(4) · MS-SQL 2014

customers.industry

varchar(8)

변환

구식 4자리 산업코드 → 신규 ENUM 매핑 ('M001'→'MEDI', 'E002'→'ELEC' 등 7종). 매핑 불가 코드는 GARBAGE 버킷.

정수진 (영업팀)

2026-04-09

M-005

tb_employee.client_id

INT · MS-SQL 2014

customers.(employees count)

int

변환

tb_employee 행 수를 client_id로 GROUP BY → customers.employees 컬럼 적재.

오민호 (운영팀장)

2026-04-09

M-006

tb_cert_proj.proj_no

VARCHAR2(20) · Oracle 11g

projects.id

varchar(32)

변환

구식 'CP2018-XXXX' 형식 → 신규 'prj-XXXXXXXX' UUID 변환. 매핑 테이블 보존.

오민호 (운영팀장)

2026-04-10

M-007

tb_cert_proj.client_id

VARCHAR2(20) · Oracle 11g

projects.customer_id

varchar(32)

통합

customer_crm.tb_client.client_id와 동일 ID 체계 가정 → JOIN 검증. 89건은 client_id 부재 (참조 끊김) → GARBAGE 버킷.

★ 두 시스템 client_id 체계가 통일되어 있다는 가정. 발주처 담당자 확인 필요.

오민호 (운영팀장)

2026-04-10

M-008

tb_cert_proj.stage_cd

CHAR(2) · Oracle 11g

projects.stage

varchar(16)

변환

5-stage 구식 코드(01~05) → 9-stage 신규 ENUM 매핑. '04 결정' 단계는 신규 'DECISION' + 'ISSUED' 두 단계로 SPLIT 가능 — 발주처 담당자 합의 후 분기.

신규 시스템은 9-stage. 레거시 5-stage는 정보 손실 없이 매핑 가능.

최경식 (심사관)

2026-04-11

M-009

tb_proj_history.history_dt

DATE · Oracle 11g

milestones.actual_at

timestamptz

분리

tb_cert_proj 1행 → milestones N행 분리. 단계별 history_dt를 stage 별 actual_at으로 분리.

최경식 (심사관)

2026-04-11

M-010

tb_cert_proj.deleted_yn

CHAR(1) · Oracle 11g

(없음).(없음)

폐기

신규 시스템은 soft delete 미사용. deleted_yn='Y' 행은 마이그레이션 제외.

대기
M-011

tb_review_log.review_text

CLOB · Oracle 11g

documents.feedback_text

text

변환

Oracle CLOB → PostgreSQL text. EUC-KR 인코딩 47건 → UTF-8 변환. 변환 실패 사례는 GARBAGE 버킷.

최경식 (심사관)

2026-04-11

M-012

tb_file_meta.file_path

VARCHAR(500) · MySQL 5.7 + NFS

documents.s3_key

varchar(512)

변환

NFS 파일 경로 (/mnt/nfs/...) → S3 key 변환. 파일 자체는 별도 배치로 S3 업로드 후 key 갱신. 한글 파일명 % 인코딩 정규화.

★ 5TB 파일 이관 — 무중단 dual-write 구간 필요. 검증 시 SHA-256 일치 확인.

오민호 (운영팀장)

2026-04-12

M-013

tb_file_meta.file_size

BIGINT · MySQL 5.7 + NFS

documents.file_size

bigint

직접 매핑

오민호 (운영팀장)

2026-04-12

M-014

tb_file_meta.doc_type_cd

CHAR(3) · MySQL 5.7 + NFS

documents.doc_type

varchar(64)

변환

구식 3자리 doc 코드 → 신규 한글 라벨 매핑 (예: 'PRD'→'제품 사양서', 'TST'→'시험성적서'). 미정의 코드 23건은 GARBAGE 버킷.

오민호 (운영팀장)

2026-04-12

M-015

tb_file_meta.review_grade

VARCHAR(20) · MySQL 5.7 + NFS

documents.review_status

varchar(16)

변환

자유 텍스트 ('통과', '재제출', '반려', '진행중', NULL 등) → ENUM 정규화 (APPROVED·RESUBMIT·REJECTED·PENDING). 매핑 불가 18건은 GARBAGE.

★ 자유 텍스트 → ENUM 정합화 — 발주처 담당자 룰 필요.

최경식 (심사관)

2026-04-13

M-016

tb_country_cd.country_cd

CHAR(3) · Oracle 11g

(ENUM).country

varchar(2)

통합

cert_db 3자리 ('KOR', 'USA', 'EUR' 등) + customer_crm 2자리 ('KR', 'US', 'EU' 등) → ISO 3166-1 alpha-2 통일. cert_db 비표준 'EU2', 'EU3' 등 4건은 발주처 담당자 합의.

두 시스템 국가 코드 체계 차이 — 통합 룰 합의 필요.

오민호 (운영팀장)

2026-04-14

M-017

tb_industry_cd.industry_nm

NVARCHAR(50) · MS-SQL 2014

(ENUM).category

varchar(8)

통합

자유 입력 산업명 ('의료기기', '전자', '의료', '메디컬' 등 표기 다양) → 7종 ENUM 통일. 동의어 사전 발주처 담당자 합의.

★ 동의어 통합 — '의료기기'·'의료'·'메디컬' 모두 MEDI로. 발주처 담당자 합의 사인오프.

정수진 (영업팀)

2026-04-14

M-018

tb_etc_field.memo_etc

VARCHAR2(2000) · Oracle 11g

(없음).(없음)

별도 보관

비정형 자유 텍스트 — 일관성 부재. 신규 시스템 미수용. 별도 archive.legacy_memo 보관 (참조용).

★ 7,800건 모두 발주처 담당자 검토 불필요로 합의. 보존만.

오민호 (운영팀장)

2026-04-15

★ 미해결 데이터 — 케이스별 결정 (7)

영향 행 8,036건 · 결정 대기 1

매핑이 어려운 데이터는 손실 방지를 위해 별도로 모아 보관합니다. 발주처 담당자가 케이스별로 폐기 / 수동 정정 / 보존만 중에서 결정하며, 결정 이력은 영구 기록되어 마이그레이션 마무리 보고서에 첨부됩니다.

  • GBG-001NULL 데이터47· customer_crm (영업 CRM) · tb_client수동 정정

    사업자번호 NULL — 영업 초기 시스템 도입 전 등록된 고객사. 신규 시스템 NOT NULL 제약.

    47건 모두 영업팀에 사업자등록증 재요청 진행 중. 마이그 cutover 전 47건 입력 완료 합의.

    결정 · 오민호 (운영팀장) · 2026-04-12

  • GBG-002중복 등록12· customer_crm (영업 CRM) · tb_client수동 정정

    동일 사업자번호 중복 등록 (예: '메디진단' 3건, '청솔테크놀로지' 2건). 영업 담당자 다른 행에 별도 등록.

    최신 행을 master로 선정 + 나머지 자식 데이터(프로젝트·문서) FK 재배치. 운영팀 1:1 검토 후 통합.

    결정 · 오민호 (운영팀장) · 2026-04-13

  • GBG-003참조 끊김89· cert_db (인증 관리 ERP) · tb_cert_proj보존만

    client_id 참조 대상 customer_crm.tb_client에 부재. 영업 CRM에서 삭제됐으나 인증 ERP에는 잔존.

    프로젝트 완료(ISSUED) 87건 + 진행중 2건. 진행중 2건만 가상 customer_id 발급 후 발주처 담당자 후속 정리. 87건은 archive 보존만.

    결정 · 최경식 (심사관) · 2026-04-13

  • GBG-004비정형 포맷47· cert_db (인증 관리 ERP) · tb_review_log결정 대기

    EUC-KR 인코딩 깨진 CLOB. UTF-8 변환 시 ?·□ 문자 다수 발생.

    심사관 표본 10건 확인 결과 80% 복원 가능. 5월 1주차 일괄 복원 작업 예정.

  • GBG-005비정형 포맷23· doc_store (문서 관리) · tb_file_meta폐기

    doc_type_cd 미정의 코드 ('XX1', 'OLD', '???' 등). 시스템 도입 초기 임시 코드 잔존.

    23건 모두 2018년 이전 등록. 비즈니스 가치 없음. 운영팀 합의 후 폐기.

    결정 · 오민호 (운영팀장) · 2026-04-14

  • GBG-006코드 불일치18· doc_store (문서 관리) · tb_file_meta수동 정정

    review_grade 자유 텍스트 — '대기', '검토중', '확인중', 'pending', 'PENDING' 등 5가지 표기 동시 존재.

    5가지 모두 PENDING으로 통합 합의. 통합 룰 mapping table 영구 보관.

    결정 · 최경식 (심사관) · 2026-04-14

  • GBG-007비정형 포맷7,800· cert_db (인증 관리 ERP) · tb_etc_field보존만

    비정형 메모 필드 — 영업담당자 자유 입력. 참조용 가치는 있으나 신규 시스템 정형 저장 불가.

    archive.legacy_memo 테이블에 (project_id, memo_text) 그대로 보존. 신규 화면에서 READ-ONLY 검색만 제공.

    결정 · 오민호 (운영팀장) · 2026-04-15

RFP 정합 안내

본 매핑 정의서와 미해결 데이터 관리 절차는 RFP 우대사항인 "레거시 DB 마이그레이션 경험"에 대한 본 팀의 표준 작업 방식입니다. 실제 마이그레이션 작업은 RFP에 명시된 대로 본 사업과는 별도 협의 항목이며, 발주처 실제 데이터를 함께 분석한 후 정확한 견적을 산출해 드립니다.