컴퓨터 공학

👉 [DB] Migration

bitcodic 2022. 11. 12. 18:47

https://www.appseconnect.com/data-migration-tools-to-grow-e-business/

마이그레이션(migration)은 일반적으로 데이터베이스에서 스키마를 변경하거나 업데이트할 때 사용하는 작업이다. 이 과정에서 데이터 무결성을 보장하기 위해 여러 가지 방법을 사용할 수 있다.

 

 기존에 마이그레이션 툴을 이용하지 않고, 수작업으로  계속해서 버전을 관리한 경험이 있는데 덕분에 오류를 만나게 되었다. 무엇이든지 자동화하는 것은 큰 메리트가 있는 것 같다.

 

 데이터베이스 마이그레이션은 (1)데이터의 무결성을 보장하고, (2)데이터 유실을 방지하며, (3)데이터베이스 구조를 유지 보수하는 데에 매우 중요하다.

 

Python에서는 Flask-Migrate, Alembic 등의 마이그레이션 도구가 있고, Java 에서는 Flyway 가 있다!

 

데이터베이스 스키마를 변경하는 경우, 스키마 변경에 따른 데이터 일관성 유지를 보장하기 위해 마이그레이션을 수행한다. 마이그레이션은 스키마 변경 작업에 따라 데이터베이스 스키마를 수정하고, 이전 버전의 데이터를 새로운 스키마에 맞게 변환하여 데이터 일관성을 보장한다.

 

 또한, 마이그레이션 작업은 데이터베이스 테이블 간의 관계를 유지하기 위해 사용된다. 테이블 간의 관계가 변경되면 데이터 일관성이 깨질 수 있으므로, 마이그레이션 작업을 통해 이전 데이터를 새로운 테이블 구조에 맞게 변환하여 일관성을 보장한다.

 

 데이터 무결성을 보장하기 위해 마이그레이션 작업 전에는 데이터베이스 백업을 수행하여, 마이그레이션 작업 중 데이터 손실이나 손상을 방지할 수 있다. 또한, 마이그레이션 작업 중 트랜잭션을 사용하여, 작업 중 하나라도 실패할 경우 이전 상태로 롤백하여 데이터 일관성을 보장할 수 있다.

 

Alembic

Alembic은 SQLAlchemy와 함께 사용할 수 있으므로 SQLAlchemy ORM을 사용하는 애플리케이션과 호환성이 높다. 또한, Alembic은 다양한 데이터베이스 관리 시스템과 호환되며, 대부분의 데이터베이스에서 사용할 수 있다.

 

flask-migrate

Flask-Migrate는 Flask 애플리케이션에서 사용되는 SQLAlchemy ORM과 함께 작동하며, SQLAlchemy의 데이터베이스 추상화 계층을 사용하여 다양한 데이터베이스 관리 시스템에서 작동한다.

 

Flask-Migrate는 Flask-Script, Flask-CLI 또는 Flask 애플리케이션 자체의 명령줄 인터페이스를 사용하여 데이터베이스 마이그레이션을 관리할 수 있다. 데이터베이스 마이그레이션 스크립트는 Alembic 마이그레이션 스크립트와 유사한 Python 파일로 작성된다. 스크립트는 Flask-Migrate에서 자동으로 생성해준다!

 

flyway

Flyway는 다양한 데이터베이스 관리 시스템에서 사용할 수 있으며, 자바 기반 애플리케이션과 함께 사용하기 적합. Flyway는 스프링 프레임워크와 통합되어 있으며, 스프링 부트에서는 쉽게 사용할 수 있다.