스키마 비교
서로 다른 두 데이터베이스 스키마를 비교하고, 차이점을 동기화 DDL로 생성하여 한쪽 스키마를 다른 쪽에 맞춰 정렬하는 방법을 안내합니다.
개요
스키마 비교 기능은 Source(기준)와 Target(대상) 두 스키마의 메타데이터를 실시간으로 가져와 테이블, 컬럼, 기본키(PK), 외래키(FK), 인덱스, 테이블 속성(ENGINE, CHARSET 등) 단위로 차이를 식별합니다. 식별된 차이는 Target 스키마를 Source에 맞추는 동기화 DDL로 변환되며, 적용 전 미리보기로 확인할 수 있습니다.
실시간 메타데이터 비교
두 데이터베이스의 최신 스키마를 실시간으로 가져와 비교합니다. 스냅샷이 아닌 라이브 상태를 기준으로 동작합니다.
상세 차이 표시
테이블 단위 요약과 함께 컬럼·인덱스·FK·PK·테이블 속성을 탭으로 나누어 Source/Target 값을 나란히 보여줍니다.
동기화 DDL 생성
차이 항목을 선택하면 Target 스키마에 적용할 CREATE/ALTER/DROP DDL이 자동 생성되며 미리보기 후 실행할 수 있습니다.
참고: 비교는 동일한 DBMS 종류 간에만 지원되며(MySQL ↔ PostgreSQL과 같은 이종 비교는 미지원), VIEW는 비교 대상에서 제외됩니다.
실행 방법
좌측 사이드바의 스키마 노드에서 컨텍스트 메뉴를 통해 스키마 비교 모달을 열 수 있습니다.
단일 스키마 우클릭
사이드바에서 스키마 노드 하나를 우클릭한 후 "스키마 비교" 메뉴를 선택합니다. 선택한 스키마가 Source로 자동 채워지고, Target은 직접 선택합니다.
두 스키마 다중 선택
Ctrl(Cmd) + 클릭으로 두 개의 스키마를 선택한 뒤 우클릭 → "스키마 비교"를 실행하면 첫 번째 항목이 Source, 두 번째 항목이 Target으로 자동 매핑됩니다.
비교 실행
모달 상단에서 Source/Target 커넥션과 스키마를 확인한 뒤 "비교" 버튼을 클릭합니다. 진행 중에는 처리 중인 테이블 이름과 진행률이 실시간으로 표시됩니다.
Source와 Target을 잘못 지정한 경우 입력 칸 사이의 ↔ Swap 버튼을 클릭하여 두 스키마를 한 번에 교환할 수 있습니다.

비교 결과 화면
비교가 완료되면 모달이 좌우 패널로 나뉩니다. 좌측 패널은 차이가 있는 테이블 목록, 우측 패널은 선택한 테이블의 상세 정보를 보여줍니다.
테이블 목록 (좌측 패널)
각 행에는 체크박스, 상태 태그, 테이블 이름이 표시되며 상태에 따라 색상이 다르게 나타납니다.
- 녹색 — 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 데이터베이스에 적용합니다.
대상 테이블 선택
좌측 목록의 체크박스로 동기화할 테이블을 선택합니다. 하나 이상 선택해야 하단의 "DDL 미리보기 및 적용" 버튼이 활성화됩니다.
DDL 미리보기 열기
버튼을 클릭하면 DDL 미리보기 모달이 열리며, Target 스키마에 적용될 CREATE/ALTER/DROP 스크립트와 변경 요약이 함께 표시됩니다.
실행
스크립트를 검토한 뒤 "실행" 버튼을 누르면 Target 데이터베이스에 트랜잭션으로 적용됩니다. 실패 시 전체가 롤백됩니다.
참고: 생성되는 DDL은 Target 커넥션의 DBMS Dialect에 맞춰 자동으로 변환됩니다. (식별자 인용, 자동 증가, 컬럼 순서 옵션 등은 엔지니어링 → DBMS별 DDL 생성 항목을 참고하세요.)
활용 시나리오
| 시나리오 | 설명 |
|---|---|
| 개발 → 운영 동기화 | 개발 환경의 최신 스키마 변경 사항을 운영 데이터베이스에 안전하게 반영합니다. |
| 환경 간 검증 | 스테이징과 운영 환경의 스키마가 일치하는지 정기적으로 검증합니다. |
| 마이그레이션 검수 | 마이그레이션 스크립트 적용 후 결과 스키마가 의도한 모습과 일치하는지 비교합니다. |
| 샤드/멀티 테넌트 정합성 | 여러 샤드 또는 테넌트 데이터베이스 간의 스키마 드리프트를 탐지합니다. |
제약 사항
- VIEW는 비교 대상에 포함되지 않으며 TABLE만 비교합니다.
- 서로 다른 종류의 DBMS(MySQL ↔ PostgreSQL 등) 간 비교는 지원하지 않습니다.
- PK 변경은 화면에 표시되지만 Dialect에 따라 자동 DDL 생성이 제한될 수 있습니다.
- 비교 대상 스키마는 커넥션에 사전 매핑되어 있어야 합니다.
