Play Framework의 Evolustions를 사용해 보았습니다.
4602 단어 PlayFrameworkScala
운영 환경
OS OSX
Play Framework 2.3.8
데이터베이스 PostgreSQL 9.4.5
DB 마이그레이션 도구란?
DB 마이그레이션 도구는 데이터베이스 스키마의 CI(Continuous Integration)를 구현할 수 있는 도구입니다.
응용 프로그램을 배포 할 때마다 서버 측 데이터베이스에 연결하여 수동으로 데이터베이스 스키마를 구축하는 것은 매우 번거롭습니다.
DB 마이그레이션 툴을 이용하는 것으로, 어플리케이션을 배포했을 때에 데이터베이스의 스키마의 차이를 식별해, 자동적으로 스키마 구축을 실시할 수가 있게 됩니다.
에볼루션 스크립트 작성
먼저
conf/evolutions/default
에 1.sql
를 다음과 같이 작성합니다.# Usersテーブルを生成
# --- !Ups
CREATE TABLE users(id serial, name text);
# --- !Downs
DROP TABLE users;
1.sql
를 에볼루션 스크립트라고 합니다.스크립트는 다음 두 부분으로 구성됩니다.
데이터베이스 만들기
터미널에서 다음 명령을 실행하여 응용 프로그램에서 사용할 데이터베이스를 만듭니다.
$ createdb testdb;
application.conf 설정
conf/application.conf
에 연결할 데이터베이스의 설정을 설명합니다.db.default.driver = org.postgresql.Driver
db.default.url = "jdbc:postgresql://localhost/testdb"
build.sbt 편집
build.sbt에 PostgreSQL 드라이버를 추가합니다.
libraryDependencies += "org.postgresql" % "postgresql" % "9.4.1208.jre7"
에볼루션 스크립트 실행
Play Framewark를 시작하고 localhost:9000으로 이동합니다.
다음 화면이 표시되므로
Apply this script now!
라고 쓰여진 버튼을 클릭하면 Ups 파트에 기술된 CREATE TABLE users(id serial, name text);
가 실행되어 데이터베이스에 users 테이블이 자동으로 생성됩니다.데이터베이스의 스키마는 다음과 같습니다.
testdb=# \d
Schema | Name | Type | Owner
--------+-------------------+----------+----------
public | play_evolutions | table | hoge
public | users | table | hoge
public | users_user_id_seq | sequence | hoge
테이블의 스키마 변경
기존의 스키마를 새롭게 변경하고 싶은 경우는, 다음과 같이
2.sql
를 새롭게 작성해, 변경의 내용을 기술해 갑니다.# Usersテーブルにカラムを追加
# --- !Ups
ALTER TABLE users ADD COLUMN age INTEGER;
# --- !Downs
ALTER TABLE users DROP COLUMN age;
localhost:9000 로 이동합니다.
2.sql
가 적용되어 users 테이블에 age 열이 추가됩니다.testdb=# \d users
Table "public.users"
Column | Type | Modifiers
---------+---------+---------------------------------------------------------
user_id | integer | not null default nextval('users_user_id_seq'::regclass)
name | text |
age | integer |
Downs 파트의 역할에 대하여
1.sql
의 기술을 이하의 내용으로 변경해, localhost:9000 에 액세스 해 봅니다.# Usersテーブルを生成
# --- !Ups
# カラム名をid => user_id に変更する
CREATE TABLE users(user_id serial, name text);
# --- !Downs
DROP TABLE users;
Downs 파트는 기존의
x.sql
에 변경이 있을 경우에 실행됩니다.Downs 파트를 실행하면 특정 상태로 데이터베이스를 반환하고 Ups 파트를 실행하여
x.sql
의 변경 사항을 데이터베이스에 자동으로 적용 할 수 있습니다.이 경우에는
1.sql
가 업데이트되었으므로 1.sql
2.sql
, 1.sql
의 Ups 파트가 실행됩니다.스크립트 실행 확인을 원하지 않는 경우
application.conf에 다음을 추가하면 Play는 확인하지 않고 자동으로 에볼루션 스크립트를 실행합니다.
applyEvolutions.default = true # Ups パートを自動で実行する
-DapplyDownEvolutions.default = true # Downs パートを自動で実行する
공식 문서에서 다음과 같은 이유로
1.sql
application.conf에 작성하는 것은 권장되지 않습니다.Play에 의해 계산 된 에볼루션 스크립트가 DOWN 에볼루션 만 가지고 있고이 속성이 설정되어 있지 않으면 Play는이를 수행하지 않고 서버도 시작하지 않습니다.
참고문헌
Evolutions
htps //w w.ぁ yf 라메를 rk. 코 m/도쿠멘들 온/그럼/2.3. x / 에ゔ ぅ 치온 s
Reference
이 문제에 관하여(Play Framework의 Evolustions를 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/t-yng/items/bbeea4d8df7be5a356f7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)