DB 마이그레이션 탐색기
DB Migration Explorer
Flyway와 Alembic이 스키마 마이그레이션을 어떻게 적용·추적·롤백하는지 인터랙티브하게 익혀보세요. 같은 5개의 마이그레이션을 두 방식으로 단계별 적용/롤백하며, 버전 SQL 파일 vs Python 리비전, flyway_schema_history vs alembic_version, 그리고 체크섬 드리프트 함정까지 확인합니다.
스키마 마이그레이션 도구가 어떻게 동작하는지 눈으로 익혀보세요. 같은 5개의 마이그레이션을 Flyway와 Alembic 두 방식으로 적용/롤백하면서, 스키마·이력 테이블·체크섬이 어떻게 변하는지 확인할 수 있습니다. 모든 것은 브라우저에서 시뮬레이션되며 실제 DB나 SQL 실행은 없습니다.
적용 / 롤백적용 상태: 0 중 5
아직 적용된 마이그레이션이 없습니다 (빈 데이터베이스).
마이그레이션 타임라인
노드를 클릭하면 해당 마이그레이션의 코드를 미리 볼 수 있습니다.V1__create_users.sql대기 중
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);마이그레이션 파일
🗄️ 현재 스키마
테이블이 없습니다. 마이그레이션을 적용해 보세요.
flyway_schema_history 테이블
| rank | version | description | type | checksum | success |
|---|---|---|---|---|---|
| (행 없음) | |||||
Flyway는 적용한 마이그레이션마다 한 행씩 append합니다. 버전 번호 순으로 정렬된 선형 이력이며, 각 행에 체크섬을 기록합니다.
체크섬 드리프트 데모 (Flyway의 대표적 함정)
이미 적용된 마이그레이션 파일을 나중에 "고치면" 어떻게 될까요? Flyway는 파일의 현재 체크섬과 이력에 기록된 체크섬을 비교하기 때문에, 적용된 파일을 수정하면 validate가 실패합니다.
이 데모를 보려면 최소한 V2까지 적용해 주세요.
Flyway vs Alembic 핵심 차이
| 항목 | 🐦 Flyway | ⚗️ Alembic |
|---|---|---|
| 버전 관리 | 파일 이름의 V1, V2, V3… 접두사 (선형) | 각 파일이 down_revision으로 부모를 가리키는 그래프 |
| 이력 테이블 | flyway_schema_history — 적용마다 한 행 | alembic_version — 현재 리비전 한 행뿐 |
| 작성 언어 | 순수 SQL 파일 (Java 마이그레이션도 가능) | Python — upgrade() / downgrade() 함수 |
| 롤백 | 기본은 전진 전용 (Undo는 유료 Teams) — 보정 마이그레이션 작성 | downgrade()가 기본 내장 — alembic downgrade -1 |
| 체크섬 검증 | 있음 — 적용된 파일을 수정하면 validate 실패 | 없음 — 적용된 리비전 수정도 감지 못함 |
| 순서 결정 | 버전 번호로 정렬 | down_revision 링크를 따라가며 결정 |
모든 마이그레이션은 구조화된 데이터로 표현되며, 브라우저에서 시뮬레이션됩니다.