본문 바로가기

이론/DB

[DB] 데이터베이스 마이그레이션

인트로

안녕하세요. 오늘은 데이터베이스 마이그레이션에 대해 포스팅하겠습니다. 

목차
1. 마이그레이션이란? 
2. 데이터베이스 마이그레이션이란? 
3. PHP기반 라라벨 프레임워크의 MIGRATION

 

1. 마이그레이션이란? 

CRUD(Create, Read, Update, Delete)를 잘 수행하려면, 데이터 베이스 테이블 스키마가 잘 정의되어 있어야합니다.  
마이그레이션(migration)이란, 한 운영환경으로부터 다른 운영환경으로 옮기는 작업을 뜻합니다. (예, 윈도우 --> 리눅스)
 하드웨어, 소프트웨어, 네트워크 등 넓은 범위에서 마이그레이션의 개념이 사용되고 있습니다.  

2. 데이터베이스 마이그레이션이란? 

데이터베이스에서 데이터 마이그레이션이란, 데이터 베이스 스키마의 버전을 관리하기 위한 하나의 방법(데이터 전환)입니다.  
개발 시스템에는 데이터베이스 스키마가 변경되었지만, 운영시스템의 데이터베이스 스키마가 변경되지 않았을 경우 마이그레이션을 수행합니다. 작게는 프로젝트 상 테이블 생성 및 변경 작업부터, 하나의 애플리케이션 또는 시스템을 옮기는 것까지 마이그레이션입니다.  요구사항에 따라 애플리케이션과 스키마가 바뀌었지만 개발 과정에는 적용됐지만 운영환경에는 적용되지 않아 데이터베이스 전환 시 애를 먹는 경우가 있습니다. 데이터베이스 마이그레이션은 이러한 문제를 해결합니다. 

 

데이터베이스 마이그레이션은 개별 SQL 파일을 MySQL 콘솔 등에서 직접 실행하지 않고

프레임워크의 특정명령어를 통해 실행하고 이 결과를 별도의 테이블에 버전 관리를 하는 기법입니다.

 

3. PHP기반 라라벨 프레임워크의 MIGRATION

예를 들어, 라라벨 프레임워크에서 새로운 마이그레이션 생성은 php artisan make:migration create_table --create = tasks  으로 수행합니다.

1) --create  는 마이그레이션시 테이블 생성 여부 결정 옵션
2) --table  는 마이그레이션시 기존 스키마 변경시 관련 테이블 지정시 사용되는 옵션

 

다음은 라라벨 프레임워크에서 migration 명령어 입력시 생성되는 클래스 CreateTable입니다. 
아래 migration 함수에서, up() 은 마이그레이션 적용 수행 메서드(예, 테이블 생성), down() 은 rollback할 경우 수행되는 메서드(예, 테이블 삭제)이다.  만약 마이그레이션 롤백(rollback)시, php artisan rollback  으로 수행한다.

 

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('table_name', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('table_name');
    }
}
?>php

 

 
 

 

'이론 > DB' 카테고리의 다른 글

[DB] SQL - (2)  (0) 2019.04.19
[DB] 데이터베이스 스키마/카탈로그  (0) 2019.03.21
[DB] 정보와 데이터베이스, 개체/속성/관계  (3) 2019.03.08
[DB] DB 스키마  (0) 2019.02.18
[DB] 데이터베이스 정의, 등장배경  (0) 2019.02.18