개요
초기 단계의 간단한 프로젝트의 경우에는 데이터베이스 구조가 자주 변하지 않거나, 작업자가 히스토리를 잘 아는 경우
직접 SQL 쿼리를 실행하거나, ORM을 사용해 수작업으로 데이터베이스를 업데이트하는 방법으로 DB Migration을 관리 할 수 있다.
하지만 여러 명의 개발자가 동시에 작업하거나, 빈번한 스키마 변경(모델 자주 수정, 새로운 테이블 등 추가), 다양한 환경(개발, 스테이징, 프로덕션 등)에서 데이터베이스를 관리해야 하는 경우, DB Migration 히스토리를 관리하는 것은 DB 상태를 관리하는데 중요하다.
이를 잘 관리하기 위해 다양한 마이그레이션 도구가 존재한다.
마이그레이션 도구 사용시 장점
1. 스키마(모델) 자동 관리
- 테이블, 컬럼, 인덱스, 키 등의 추가, 수정, 삭제 같은 스키마 변경 작업 자동화
2. 버전 관리
- 데이터베이스 변경 내역을 버전별로 관리하여 팀원 간 작업 충돌을 방지, 변경 사항을 쉽게 추적 가능
3. 롤백 및 복구
- 변경 작업 실패 시 이전 상태로 되돌릴 수 있는 기능을 제공
4. 다중 환경 지원
- 개발, 테스트, 프로덕션 등의 환경에 맞는 마이그레이션 적용을 쉽게 관리할 수 있습니다.
마이그레이션 도구
데이터베이스의 스키마와 데이터를 효율적으로 관리하고 변경하기 위해 다음과 같은 DB 마이그레이션 도구들이 사용된다. 이 도구들의 사용이 필수는 아니지만, 데이터베이스 변경의 추적, 관리, 복구 등이 필요시, 몇몇 프레임워크에서 마이그레이션 도구들을 지원하기도 한다.
1. Django ORM (링크)
- Python의 Django 프레임워크에서 제공.
- ORM 모델 변경 사항을 자동으로 마이그레이션 파일로 생성
2. Alembic (링크)
- Python 기반 SQLAlchemy ORM과 연동.
- 데이터베이스 스키마의 변경 작업을 관리.
3. Flyway (링크)
- Java 애플리케이션과 잘 통합됨
- API / CLI 외에 GUI도 제공
4. Liquibase (링크)
- XML, YAML, JSON 또는 SQL로 변경 사항을 정의 및 관리
- 데이터베이스 상태를 쉽게 비교하고 동기화 가능
- 다양한 플러그인과 연동 기능이 강력.
5. Active Record Migrations (링크)
- Ruby on Rails에서 제공.
- Ruby 코드로 데이터베이스 변경 사항을 관리.
'DB > 이론' 카테고리의 다른 글
[DB] Postgresql 과 MySQL schema 구분 차이 (0) | 2024.12.21 |
---|---|
[MQ] 메시지 지향 미들웨어 (by. RabbitMQ, Redis) (0) | 2022.11.26 |
[Cache] Memcached vs Redis 차이 (2) | 2022.11.22 |
[DB] Clustering, Sharding, Replication 차이 (0) | 2022.10.03 |
[DB] Replication 이란? (Feat. Mysql, Mongo) (0) | 2022.10.03 |