holyspirit-lee 님의 블로그

데이터베이스 이관을 점검하기 위해 현행 시스템과 목표 시스템의 데이터베이스를 비교 분석 본문

카테고리 없음

데이터베이스 이관을 점검하기 위해 현행 시스템과 목표 시스템의 데이터베이스를 비교 분석

holyspirit-lee 2025. 1. 5. 14:10

데이터베이스 이관

데이터베이스 이관을 점검하기 위해 현행 시스템과 목표 시스템의 데이터베이스를 비교 분석하는 작업은 매우 중요한 단계이다. 이를 효과적으로 수행하기 위한 주요 단계는 다음과 같다.

데이터베이스 이관

 

데이터베이스 구조 비교

a. 스키마 비교

- 테이블 구조 비교 : 각 테이블의 칼럼 수, 이름, 데이터 타입, 제약 조건(Primary Key, Foreign Key 등)을 비교

- 인덱스 비교 : 인덱스의 존재 여부, 유형(단일, 복합), 인덱싱 된 칼럼 등을 비교

- 뷰(View) 비교 : 뷰의 정의와 사용 목적이 동일한지 확인

b. 관계 및 제약 조건 비교

- 관계 정의 : 테이블 간의 관계(ERD, 엔터티 관계 다이어그램)를 비교하여 관계의 일관성을 확인

- 제약 조건 : UNIQUE, NOT NULL, CHECK 등의 제약 조건이 동일하게 설정되어 있는지 확인

데이터 비교

a. 데이터 품질 점검

- 데이터 일관성 : 데이터의 일관성과 무결성을 점검합니다. 예를 들어, 참조 무결성 제약이 지켜지고 있는지 확인

- 데이터 형식 및 범위 : 데이터 형식 및 값의 범위가 일치하는지 확인

b. 데이터 양 비교

- 레코드 수 : 각 테이블의 레코드 수를 비교하여 데이터가 모두 이관되었는지 확인

- 샘플 데이터 비교 : 샘플 데이터를 추출하여 데이터의 정확성을 비교

데이터 변환 및 매핑 점검

a. 변환 규칙 검토

- 데이터 변환 규칙(예: 날짜 형식 변환, 단위 변환 등)을 검토하여 변환이 올바르게 이루어졌는지 확인

- 데이터 매핑 문서를 검토하여 각 필드가 올바르게 매핑되었는지 확인

b. 변환 테스트

- 변환 스크립트 검토 : 데이터 변환을 위한 스크립트를 검토하여 오류가 없는지 확인

- 테스트 이관 : 일부 데이터를 테스트로 이관하여 변환 결과를 검토

성능 비교

a. 쿼리 성능 분석

- 주요 쿼리의 실행 계획을 분석하여 성능 차이를 비교

- 쿼리 실행 시간, 자원 사용량(CPU, 메모리 등)을 비교

b. 시스템 부하 테스트

- 부하 테스트를 통해 두 시스템의 성능을 비교

- 동시 사용자 수, 트랜잭션 처리 능력 등을 측정

보안 및 권한 비교

a. 사용자 및 권한

- 사용자 계정 및 권한이 동일하게 설정되어 있는지 비교

- 각 테이블 및 컬럼에 대한 접근 권한을 검토

b. 보안 정책

- 데이터 암호화, 접근 제어, 감사 로그 등의 보안 정책이 일치하는지 검토

자동화 도구 활용

a. 데이터베이스 비교 도구

- 데이터베이스 스키마와 데이터를 비교할 수 있는 도구를 활. 예: Redgate SQL Compare, DB Solo, Toad 등. 이러한 도구를 사용하면 비교 작업이 더 정확하고 빠르게 진행될 수 있다.

b. 스크립트 및 쿼리

- SQL 스크립트와 쿼리를 작성하여 데이터와 스키마를 비교

- 반복적인 비교 작업을 자동화하여 인적 오류를 최소화

보고서 작성 및 검토

a. 비교 결과 보고서

- 비교 분석 결과를 문서화하여 보고서를 작성

- 주요 차이점, 문제점, 해결 방안을 명확히 기술

b. 검토 회의

- 관련 이해관계자와의 검토 회의를 통해 비교 분석 결과를 공유하고, 필요한 조치를 논의

예시: 데이터베이스 스키마 비교 쿼리

아래는 두 데이터베이스의 테이블 구조를 비교하는 예시 쿼리이다. 이 쿼리는 MySQL에서 사용될 수 있다.

a. 현재 시스템 데이터베이스 스키마 가져오기

SELECT table_name, column_name, data_type

FROM information_schema.columns

WHERE table_schema = 'current_database'

ORDER BY table_name, column_name;

b. 목표 시스템 데이터베이스 스키마 가져오기

SELECT table_name, column_name, data_type

FROM information_schema.columns

WHERE table_schema = 'target_database'

ORDER BY table_name, column_name;

 

상기 가져온 데이를 기준으로 테이블 이름, 컬럼 이름, 데이터 타입 비교하면 된다.