본문 바로가기
컴퓨터 활용/노년에 즐기는 코딩

[Django] 장고에서 마이그레이션이란?

by easyfly 2024. 3. 19.
반응형

장고에서 마이그레이션이란?

장고(Django)에서 마이그레이션(migration)은 모델(데이터베이스 스키마)의 변경사항을 버전 관리하는 시스템입니다. 마이그레이션을 통해 개발자는 데이터베이스 스키마를 안전하게 변경하고, 이러한 변경사항을 코드 형태로 관리할 수 있습니다. 이 시스템은 장고의 ORM(Object-Relational Mapping)을 통해 데이터베이스와 상호작용하는 모델의 변경사항을 추적하고, 이 변경사항을 데이터베이스에 적용하는 과정을 자동화합니다.

마이그레이션의 주요 기능

  1. 스키마 생성: 새로운 모델을 추가하고 makemigrations 명령을 실행하면, 장고는 이 모델을 표현하는 데이터베이스 테이블을 생성하는 마이그레이션 파일을 만듭니다.
  2. 스키마 변경: 모델에 필드를 추가, 삭제, 변경하는 등의 작업을 하고 makemigrations 명령을 실행하면, 장고는 이 변경사항을 반영하는 마이그레이션 파일을 생성합니다.
  3. 데이터 마이그레이션: 데이터의 변환 또는 기본값 설정과 같은 데이터베이스의 데이터를 변경하는 작업도 마이그레이션을 통해 수행할 수 있습니다.
  4. 버전 관리: 마이그레이션 파일은 데이터베이스 스키마의 변경 이력을 코드로 관리할 수 있게 해 줍니다. 이를 통해 어느 시점의 데이터베이스 상태로도 쉽게 되돌릴 수 있습니다.

마이그레이션 과정

  1. 마이그레이션 파일 생성: 모델에 변경사항이 있을 때, python manage.py makemigrations 명령을 실행하여 마이그레이션 파일을 생성합니다. 이 파일은 모델의 변경사항을 담고 있습니다.
  2. 마이그레이션 적용: python manage.py migrate 명령을 실행하여 마이그레이션 파일에 기록된 변경사항을 실제 데이터베이스에 적용합니다. 이 과정을 통해 데이터베이스 스키마가 최신 상태로 유지됩니다.
  3. 마이그레이션 롤백: 필요한 경우, 특정 마이그레이션까지 되돌리거나 특정 마이그레이션을 취소할 수 있습니다. 이는 데이터베이스 스키마 변경 과정에서 안전망 역할을 합니다.

마이그레이션 결과

마이그레이션의 장점

데이터베이스 독립성

장고의 마이그레이션 시스템은 다양한 데이터베이스 엔진을 지원합니다. 이를 통해 데이터베이스에 구애받지 않고, 스키마 변경을 쉽게 할 수 있습니다.

협업 용이성

마이그레이션 파일을 통해 팀 내에서 모델의 변경사항을 쉽게 공유하고, 프로젝트의 데이터베이스 스키마를 일관되게 유지할 수 있습니다.

변경 이력 관리

마이그레이션을 통해 데이터베이스 스키마의 변경 이력을 추적하고 관리할 수 있습니다. 이는 데이터베이스의 버전 관리와 유사한 개념으로, 프로젝트의 안정성을 높여줍니다.

정리

장고의 마이그레이션 시스템은 데이터베이스 스키마 관리를 위한 강력한 도구입니다. 개발 과정에서 데이터베이스 스키마의 변경이 빈번히 발생하는 경우, 마이그레이션을 통해 이러한 변경사항을 체계적으로 관리할 수 있습니다.

반응형

댓글