스키마 비교

서로 다른 두 데이터베이스 스키마를 비교하고, 차이점을 동기화 DDL로 생성하여 한쪽 스키마를 다른 쪽에 맞춰 정렬하는 방법을 안내합니다.

개요

스키마 비교 기능은 Source(기준)와 Target(대상) 두 스키마의 메타데이터를 실시간으로 가져와 테이블, 컬럼, 기본키(PK), 외래키(FK), 인덱스, 테이블 속성(ENGINE, CHARSET 등) 단위로 차이를 식별합니다. 식별된 차이는 Target 스키마를 Source에 맞추는 동기화 DDL로 변환되며, 적용 전 미리보기로 확인할 수 있습니다.

🔍

실시간 메타데이터 비교

두 데이터베이스의 최신 스키마를 실시간으로 가져와 비교합니다. 스냅샷이 아닌 라이브 상태를 기준으로 동작합니다.

📋

상세 차이 표시

테이블 단위 요약과 함께 컬럼·인덱스·FK·PK·테이블 속성을 탭으로 나누어 Source/Target 값을 나란히 보여줍니다.

⚙️

동기화 DDL 생성

차이 항목을 선택하면 Target 스키마에 적용할 CREATE/ALTER/DROP DDL이 자동 생성되며 미리보기 후 실행할 수 있습니다.

참고: 비교는 동일한 DBMS 종류 간에만 지원되며(MySQL ↔ PostgreSQL과 같은 이종 비교는 미지원), VIEW는 비교 대상에서 제외됩니다.

실행 방법

좌측 사이드바의 스키마 노드에서 컨텍스트 메뉴를 통해 스키마 비교 모달을 열 수 있습니다.

1

단일 스키마 우클릭

사이드바에서 스키마 노드 하나를 우클릭한 후 "스키마 비교" 메뉴를 선택합니다. 선택한 스키마가 Source로 자동 채워지고, Target은 직접 선택합니다.

2

두 스키마 다중 선택

Ctrl(Cmd) + 클릭으로 두 개의 스키마를 선택한 뒤 우클릭 → "스키마 비교"를 실행하면 첫 번째 항목이 Source, 두 번째 항목이 Target으로 자동 매핑됩니다.

3

비교 실행

모달 상단에서 Source/Target 커넥션과 스키마를 확인한 뒤 "비교" 버튼을 클릭합니다. 진행 중에는 처리 중인 테이블 이름과 진행률이 실시간으로 표시됩니다.

Tip

Source와 Target을 잘못 지정한 경우 입력 칸 사이의 ↔ Swap 버튼을 클릭하여 두 스키마를 한 번에 교환할 수 있습니다.

비교 실행

비교 결과 화면

비교가 완료되면 모달이 좌우 패널로 나뉩니다. 좌측 패널은 차이가 있는 테이블 목록, 우측 패널은 선택한 테이블의 상세 정보를 보여줍니다.

요약 태그

비교 결과 상단에는 변경 분류별 카운트가 태그로 표시됩니다.

태그의미
+ AddedSource에는 존재하지만 Target에는 없는 테이블 (CREATE 대상)
- DeletedTarget에는 존재하지만 Source에는 없는 테이블 (DROP 대상)
~ Modified양쪽에 존재하지만 컬럼/인덱스/FK/속성이 다른 테이블 (ALTER 대상)
= Equal양쪽이 동일한 테이블

요약 태그 옆 "동일한 스키마 표시" 체크박스를 켜면 변경이 없는 테이블도 목록에 포함되어 전체 비교 상태를 한눈에 확인할 수 있습니다.

테이블 목록 (좌측 패널)

각 행에는 체크박스, 상태 태그, 테이블 이름이 표시되며 상태에 따라 색상이 다르게 나타납니다.

  • 녹색 — Added (신규)
  • 빨강 — Deleted (삭제)
  • 주황 — Modified (수정)
  • 회색 — Equal (동일)

체크박스로 DDL 생성 대상 테이블을 선택할 수 있으며, 선택된 테이블에 대해서만 동기화 DDL이 만들어집니다.

상세 비교 (우측 패널)

좌측 목록에서 테이블을 선택하면 우측에 상세 정보가 표시됩니다. 상단에는 해당 테이블에 대한 DDL 인라인 미리보기가, 아래에는 항목별 탭이 나타납니다.

비교 항목
Columns컬럼명, 데이터 타입, NULL 허용, 기본값, Auto Increment, 코멘트를 Source/Target 값으로 나란히 표시
Indexes인덱스명, 구성 컬럼, UNIQUE 여부 비교
FK외래키명, 참조 컬럼, 참조 테이블 비교
PK기본키 컬럼 구성 비교
Extras테이블 속성(ENGINE, CHARSET, COLLATION 등) 비교

Rename 매칭

스키마 비교는 이름이 다른 항목을 기본적으로 "삭제 + 추가"로 인식합니다. 이 경우 실제 환경에서 데이터 손실이 발생할 수 있으므로, 이름이 변경된 항목은 Rename 매칭으로 명시하여 RENAME DDL이 생성되도록 할 수 있습니다.

테이블 이름 변경 매칭

좌측 목록에서 Deleted 상태인 테이블 행에 표시되는 매칭 셀렉트에서 Added 상태의 후보 테이블 중 하나를 선택하면, 해당 두 테이블이 동일한 테이블의 이름 변경으로 처리되어 DROP+CREATE 대신 RENAME으로 변환됩니다.

컬럼 이름 변경 매칭

Columns 탭의 삭제된 컬럼 행에서도 동일하게 추가된 컬럼 중 하나를 매칭 대상으로 선택할 수 있습니다. 매칭된 컬럼은 RENAME COLUMN DDL로 생성됩니다.

주의: Rename 매칭을 사용하지 않을 경우, 컬럼명/테이블명 변경은 삭제 후 재생성으로 표현되어 기존 데이터가 손실됩니다. 운영 환경에서는 매칭을 적극 활용하세요.

DDL 미리보기 및 적용

선택한 테이블에 대한 동기화 DDL을 미리 확인하고 Target 데이터베이스에 적용합니다.

1

대상 테이블 선택

좌측 목록의 체크박스로 동기화할 테이블을 선택합니다. 하나 이상 선택해야 하단의 "DDL 미리보기 및 적용" 버튼이 활성화됩니다.

2

DDL 미리보기 열기

버튼을 클릭하면 DDL 미리보기 모달이 열리며, Target 스키마에 적용될 CREATE/ALTER/DROP 스크립트와 변경 요약이 함께 표시됩니다.

3

실행

스크립트를 검토한 뒤 "실행" 버튼을 누르면 Target 데이터베이스에 트랜잭션으로 적용됩니다. 실패 시 전체가 롤백됩니다.

참고: 생성되는 DDL은 Target 커넥션의 DBMS Dialect에 맞춰 자동으로 변환됩니다. (식별자 인용, 자동 증가, 컬럼 순서 옵션 등은 엔지니어링 → DBMS별 DDL 생성 항목을 참고하세요.)

활용 시나리오

시나리오설명
개발 → 운영 동기화개발 환경의 최신 스키마 변경 사항을 운영 데이터베이스에 안전하게 반영합니다.
환경 간 검증스테이징과 운영 환경의 스키마가 일치하는지 정기적으로 검증합니다.
마이그레이션 검수마이그레이션 스크립트 적용 후 결과 스키마가 의도한 모습과 일치하는지 비교합니다.
샤드/멀티 테넌트 정합성여러 샤드 또는 테넌트 데이터베이스 간의 스키마 드리프트를 탐지합니다.

제약 사항

  • VIEW는 비교 대상에 포함되지 않으며 TABLE만 비교합니다.
  • 서로 다른 종류의 DBMS(MySQL ↔ PostgreSQL 등) 간 비교는 지원하지 않습니다.
  • PK 변경은 화면에 표시되지만 Dialect에 따라 자동 DDL 생성이 제한될 수 있습니다.
  • 비교 대상 스키마는 커넥션에 사전 매핑되어 있어야 합니다.