scalaで行うマイグレーション ~flyway~

21
導入 Flyway 鈴木 雄登

Upload: yuto-suzuki

Post on 02-Aug-2015

244 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Scalaで行うマイグレーション ~Flyway~

導入 Flyway鈴木 雄登

Page 2: Scalaで行うマイグレーション ~Flyway~

自己紹介

• 鈴木 雄登

• Scala / Python / NLP

Page 3: Scalaで行うマイグレーション ~Flyway~

Flywayとは?

• DBのマイグレーションツール

• Javaと親和性が高い

Page 4: Scalaで行うマイグレーション ~Flyway~

マイグレーション?• DBのテーブル構成管理を行うツール

• SQLなどのソースコードレベルで管理できる

• 有名なものは、railsのActiveRecordsなど

• 大体、どの言語でも実装されている。GO, Python, PHP etc.

Page 5: Scalaで行うマイグレーション ~Flyway~

なぜ使う??

• データベースのテーブル構造に関する変更の差分のみを管理できる

• 簡単に同じテーブル構成を作成できる

• GitHubなどでDBの変更をソースとして管理できる。

Page 6: Scalaで行うマイグレーション ~Flyway~

Javaでの マイグレーション

Page 7: Scalaで行うマイグレーション ~Flyway~

Javaでのマイグレーション

• Flyway→SQLで管理。シンプル。

• Liquibase→XMLもしくは注釈(必須)付きSQLで管理。高機能。

Page 8: Scalaで行うマイグレーション ~Flyway~

Flywayの紹介

【紹介理由】

• 会社で利用が多いplay-frameworkのプラグインがある。

• シンプルなため理解しやすい。

Page 9: Scalaで行うマイグレーション ~Flyway~

Flywayでできること• migrate

• clean

• info

• validate

• baseline

• repair

Page 10: Scalaで行うマイグレーション ~Flyway~

migration

DBのバージョンを更新 現在のバージョンを確認し、差分だけ更新してくれる

Page 11: Scalaで行うマイグレーション ~Flyway~

clean

すっきり!!

Page 12: Scalaで行うマイグレーション ~Flyway~

info

Page 13: Scalaで行うマイグレーション ~Flyway~

validate

DBが正しく動くかSQLをチェック

Page 14: Scalaで行うマイグレーション ~Flyway~

baseline

あるバージョンをベースラインとして、 そこからクエリを投げるようにする。

Page 15: Scalaで行うマイグレーション ~Flyway~

repair

マイグレーションが失敗したことにより、 壊れたmetadataを修復

Page 16: Scalaで行うマイグレーション ~Flyway~

flywayで出来ないこと

• ロールバック:railsでは、当たり前のロールバックがありません。。

Page 17: Scalaで行うマイグレーション ~Flyway~

flywayの起動まで1,インストール

2,confのコピー

3,conf書き換え

Page 18: Scalaで行うマイグレーション ~Flyway~

flyway起動まで24,sql作成

5,マイグレーション!

デフォルトの読み込むconfがflyway.propertiesなので注意

Page 19: Scalaで行うマイグレーション ~Flyway~

実際に試してみる• 今回は、H2を利用。

• H2 • SQLiteのように使えるデータベースエンジン • インメモリデータベース • ファイルオープン中は同一セッション • ファイルを使うと、GUIで確認できる

Page 20: Scalaで行うマイグレーション ~Flyway~

実際に試してみる2

• play-flyway

• Playの起動時に、マイグレーションを実行してくれます。

• サンプルコードhttps://github.com/moc-yuto/test-playframework

Page 21: Scalaで行うマイグレーション ~Flyway~

おまけ

• h2のハマりどころ • 複数アプリケーションからは、開けない

• デフォルトでusersテーブルがある。自分でusersテーブルを作ると、失敗する