1-3. (PostgreSQL Only) 데이터베이스 메타데이터 작성 메뉴 상세 분석

메뉴명

3. (PostgreSQL Only) 데이터베이스 메타데이터 작성

목적

PostgreSQL은 Bind 변수의 type에 민감하기 때문에 CAST 작업의 정확도를 올리기 위해서 MetaData를 구성하여 참조하는 목적으로 PostgreSQL 타겟 데이터베이스의 스키마 메타데이터를 추출하여 SQL 변환 작업 시 정확한 데이터 타입 변환 및 CAST 처리를 위한 참조 정보를 생성

실행 흐름

initOMA.sh 
  → execute_postgresql_meta() 
    → q chat --trust-all-tools --no-interactive < $APP_TOOLS_FOLDER/genPostgreSqlMeta.md

상세 분석

1. execute_postgresql_meta() 함수

# 위치: initOMA.sh (538-560행)
# 직접 실행: q chat --trust-all-tools --no-interactive < $APP_TOOLS_FOLDER/genPostgreSqlMeta.md

2. genPostgreSqlMeta.md (핵심 메타데이터 추출 파일)

# 위치: $APP_TOOLS_FOLDER/genPostgreSqlMeta.md
# 환경변수: APP_TOOLS_FOLDER (애플리케이션 도구 폴더)

3. 주요 환경변수 매핑

# PostgreSQL 데이터베이스 연결 정보
PGHOST                     # PostgreSQL 호스트 주소
PGPORT                     # PostgreSQL 포트 번호 (기본: 5432)
PGDATABASE                 # PostgreSQL 데이터베이스 이름
PGUSER                     # PostgreSQL 사용자 이름
PGPASSWORD                 # PostgreSQL 사용자 비밀번호

# 기타 설정
APPLICATION_NAME           # 프로젝트/애플리케이션 이름
APP_TOOLS_FOLDER          # OMA 애플리케이션 도구 및 스크립트 디렉토리

4. 메타데이터 추출 작업

4.1 데이터베이스 연결 확인

# PostgreSQL 연결 테스트
psql -c "SELECT version();"

4.2 메타데이터 추출 쿼리 실행

SELECT 
    table_schema,
    table_name,
    column_name,
    data_type
FROM information_schema.columns 
WHERE table_schema NOT IN (
    'information_schema', 
    'pg_catalog', 
    'pg_toast',
    'aws_commons',
    'aws_oracle_context',
    'aws_oracle_data', 
    'aws_oracle_ext',
    'public'
)
ORDER BY table_schema, table_name, ordinal_position;

4.3 추출 대상

  • 테이블 (Tables): 실제 데이터가 저장되는 테이블
  • 뷰 (Views): 가상 테이블 (SELECT 쿼리 기반)
  • 머티리얼라이즈드 뷰 (Materialized Views): 물리적으로 저장된 뷰

4.4 제외 스키마

  • information_schema: PostgreSQL 정보 스키마
  • pg_catalog: PostgreSQL 시스템 카탈로그
  • pg_toast: PostgreSQL TOAST 테이블
  • aws_commons: AWS 공통 함수
  • aws_oracle_context: AWS Oracle 컨텍스트
  • aws_oracle_data: AWS Oracle 데이터
  • aws_oracle_ext: AWS Oracle 확장
  • public: 기본 public 스키마

5. 추출되는 메타데이터 정보

  • table_schema: 스키마명
  • table_name: 테이블/뷰명
  • column_name: 컬럼명
  • data_type: 데이터 타입

결과 파일

메타데이터 파일

# 출력 경로: /tmp/oma_metadata.txt

# 파일 형식: 탭 구분 텍스트 파일
# 컬럼 순서: table_schema | table_name | column_name | data_type

메타데이터 파일 예시

itsm_app    tb_user         user_id         varchar
itsm_app    tb_user         user_name       varchar
itsm_app    tb_user         email           varchar
itsm_app    tb_user         created_date    timestamp
itsm_inf    tb_system       system_id       varchar
itsm_inf    tb_system       system_name     varchar

사용 목적

PostgreSQL Bind 변수 타입 민감성 대응

  • 정확한 CAST 처리: PostgreSQL의 엄격한 타입 체크에 대응하기 위한 정확한 CAST 구문 생성
  • Bind 변수 타입 매칭: 파라미터 바인딩 시 정확한 데이터 타입 매칭을 위한 참조 정보
  • 타입 변환 정확도 향상: Oracle → PostgreSQL 변환 시 데이터 타입 호환성 보장

SQL 변환 시 참조

  • 데이터 타입 매핑: Oracle → PostgreSQL 데이터 타입 변환 시 참조
  • 스키마 구조 확인: 타겟 데이터베이스의 실제 구조와 비교
  • 컬럼 존재 여부 확인: 변환된 SQL의 컬럼명 유효성 검증

변환 검증

  • 구조 일치성 검증: 소스와 타겟 간의 스키마 구조 비교
  • 데이터 타입 호환성: 변환된 SQL의 데이터 타입 호환성 확인

환경 변수 의존성

필수 환경변수

  • 데이터베이스 연결: PGHOST, PGPORT, PGDATABASE, PGUSER, PGPASSWORD
  • 도구 경로: APP_TOOLS_FOLDER

선택적 환경변수

  • 프로젝트 정보: APPLICATION_NAME

사전 조건

PostgreSQL 연결 가능

  • 타겟 PostgreSQL 데이터베이스에 연결 가능해야 함
  • 메타데이터 조회 권한이 있는 사용자 계정 필요

psql 클라이언트 설치

  • PostgreSQL 클라이언트 도구 (psql)가 설치되어 있어야 함

다음 단계

이 단계에서 생성된 메타데이터는 다음 단계들에서 활용됩니다:

  • 2-1. 애플리케이션 SQL 변환 작업: 변환 시 타겟 스키마 구조 참조 및 정확한 CAST 처리
  • 3-2. 애플리케이션 SQL Unit Test: 테스트 시 스키마 검증

주요 특징

  • PostgreSQL 전용: PostgreSQL을 타겟 DBMS로 하는 경우에만 실행
  • 타입 민감성 대응: PostgreSQL의 Bind 변수 타입 민감성에 대응하기 위한 정확한 메타데이터 제공
  • CAST 정확도 향상: 정확한 데이터 타입 정보를 통한 CAST 작업의 정확도 향상
  • 실시간 메타데이터: 현재 데이터베이스 상태의 실시간 메타데이터 추출
  • 비즈니스 스키마 중심: 시스템 스키마 제외, 비즈니스 관련 스키마만 추출
  • 표준 형식: SQL 변환 도구에서 활용하기 쉬운 표준 형식으로 출력

Back to top

Copyright © 2024 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.