SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
今からでも遅くない
DBマイグレーション
- Flyway と SchemaSpy の紹介 -
2021-11-12 社内勉強会
onozaty
DBマイグレーション
• 本スライドでのDBマイグレーションとは、データベースのスキーマ
やデータを変更する作業
• アプリケーションのコードと同じように、データベースも変化して
いくので、データベースの構造もバージョン管理していく必要があ
る
• 様々な環境(本番環境、開発者個人のローカル環境、CI環境など)に対して、
同じように変更が適用できるように
• 現在どのような状態になっているのかが明確になるように
DBマイグレーションで利用されるライブラリ
• フレームワーク自体でDBマイグレーションの仕組みが提供されてい
るものも多い
• Ruby on Rails、Laravel、Django など
• フレームワークに依存せず単独で使えるライブラリ/ツールもあり
• Flyway、LiquiBase、golang-migrate など
DBマイグレーションの仕組み
• マイグレーションのためのSQLやコードをバージョン毎に管理
• それらを順次実行していくことでマイグレーションを実現
• 積み重ねた後のものが、現在の状態を表すものになる
CREATE TABLE products
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
description text,
created_at timestamp NOT NULL,
updated_at timestamp NOT NULL
);
class CreateProducts < ActiveRecord::Migration[5.0]
def change
create_table :products do |t|
t.string :name
t.text :description
t.timestamps
end
end
end
DBマイグレーションに何を使うか
• フレームワークに用意されているものがあればそれを使う
• フレームワーク自体に無くても、フレームワークと組み合わせて便
利に使えそうなものがあればそれを
• なければCLIとして使える好きなものを
Flyway
Flyway
• Javaで実装されたマイグレーションツール
• SQLまたはJavaでマイグレーションを記述する
• Javaでのマイグレーションは、SQLで書くのが難しいようなときに
• JavaのメジャーなフレームワークのSpring Bootでは、依存関係とし
てFlywayを追加するだけで、アプリケーション起動時にマイグレー
ションを行ってくれるようになる
• クラスパスからマイグレーションを拾ってくれる
• 単独のCLIツールとしても使える
Flywayの使い方 (CLI)
1. Flywayをダウンロード
2. DB接続先を設定
3. マイグレーションで実行するSQLファイルを作成
4. マイグレーション実行
1. Flywayをダウンロード
下記から利用プラットフォームに応じたものをダウンロードする。
• https://flywaydb.org/download/community
$ wget https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/8.0.2/flyway-commandline-8.0.2-linux-
x64.tar.gz
$ tar zxvf flyway-commandline-8.0.2-linux-x64.tar.gz
$ ls -l flyway-8.0.2/
total 40
drwxrwxr-x 2 vagrant vagrant 4096 Oct 30 00:10 conf
drwxrwxr-x 3 vagrant vagrant 4096 Oct 30 00:10 drivers
-rwxr--r-- 1 vagrant vagrant 4044 Oct 20 15:38 flyway
-rw-r--r-- 1 vagrant vagrant 3869 Oct 20 15:40 flyway.cmd
drwxrwxr-x 2 vagrant vagrant 4096 Oct 30 00:10 jars
drwxr-xr-x 7 vagrant vagrant 4096 Oct 20 15:40 jre
drwxrwxr-x 6 vagrant vagrant 4096 Oct 30 00:10 lib
drwxrwxr-x 2 vagrant vagrant 4096 Oct 30 00:10 licenses
-rw-r--r-- 1 vagrant vagrant 699 Oct 20 15:38 README.txt
drwxrwxr-x 2 vagrant vagrant 4096 Oct 30 00:10 sql
実行に必要なもの(Javaのランタイムや主要なJDBCドライバ)も同梱されているので、追加で何かインストールしたり
ダウンロードする必要なし
2. DB接続先を設定
conf/flyway.conf にDB接続先を設定。
~/flyway-8.0.2$ vi conf/flyway.conf
flyway.url=jdbc:postgresql://192.168.33.10:5432/testdb
flyway.user=user1
flyway.password=password1
conf/flyway.conf
3. マイグレーションで実行するSQLファイルを作成
sql/ 配下にSQLファイルを作成。
~/flyway-8.0.2$ vi sql/V1__create_initial_tables.sql
CREATE TABLE customers (
customer_id serial PRIMARY KEY,
name text NOT NULL,
mail_address text NOT NULL
);
sql/V1__create_initial_tables.sql
V1__create_initial_tables.sql
Prefix
Version
Separator Suffix
Description
4. マイグレーション実行
flyway migrate でマイグレーション実行。
~/flyway-8.0.2$ ./flyway migrate
Flyway Teams Edition 8.0.2 by Redgate
Database: jdbc:postgresql://192.168.33.10:5432/testdb (PostgreSQL 13.4)
Successfully validated 1 migration (execution time 00:00.025s)
Creating Schema History table "public"."flyway_schema_history" ...
Current version of schema "public": << Empty Schema >>
Migrating schema "public" to version "1 - create initial tables"
Successfully applied 1 migration to schema "public", now at version v1 (execution time 00:00.061s)
4. マイグレーション実行
テーブルが作成されていることを確認。
~/flyway-8.0.2$ psql -U user1 testdb
psql (13.4)
Type "help" for help.
testdb=> ¥d customers
Table "public.customers"
Column | Type | Collation | Nullable | Default
--------------+---------+-----------+----------+------------------------------------------------
customer_id | integer | | not null | nextval('customers_customer_id_seq'::regclass)
name | text | | not null |
mail_address | text | | not null |
Indexes:
"customers_pkey" PRIMARY KEY, btree (customer_id)
testdb=>
マイグレーションを追加
新しいバージョンのファイルを追加することで、マイグレーションが
追加される。
試しにバージョン2としてカラム(phone_number)を追加するSQLファ
イルを追加してみる。
~/flyway-8.0.2$ vi sql/V2__add_phone_number.sql
ALTER TABLE customers ADD COLUMN phone_number VARCHAR(20);
sql/V2__add_phone_number.sql
マイグレーションを追加
flyway migrate で再度マイグレーション実行。
~/flyway-8.0.2$ ./flyway migrate
Flyway Teams Edition 8.0.2 by Redgate
Database: jdbc:postgresql://192.168.33.10:5432/testdb (PostgreSQL 13.4)
Successfully validated 2 migrations (execution time 00:00.054s)
Current version of schema "public": 1
Migrating schema "public" to version "2 - add phone number“
Successfully applied 1 migration to schema "public", now at version v2 (execution time 00:00.083s)
マイグレーションを追加
カラム(phone_number)が追加されていることを確認。
~/flyway-8.0.2$ psql -U user1 testdb
psql (13.4)
Type "help" for help.
testdb=> ¥d customers
Table "public.customers"
Column | Type | Collation | Nullable | Default
--------------+-----------------------+-----------+----------+------------------------------------------------
customer_id | integer | | not null | nextval('customers_customer_id_seq'::regclass)
name | text | | not null |
mail_address | text | | not null |
phone_number | character varying(20) | | |
Indexes:
"customers_pkey" PRIMARY KEY, btree (customer_id)
testdb=>
マイグレーション実行状況の確認
マイグレーションの実行状況は flyway info で確認できる。
※ flyway_schema_historyというテーブルがFlywayにより作成され、そこで情報が管理されている
~/flyway-8.0.2$ ./flyway info
Flyway Teams Edition 8.0.2 by Redgate
Database: jdbc:postgresql://192.168.33.10:5432/testdb (PostgreSQL 13.4)
Schema version: 2
+-----------+---------+-----------------------+------+---------------------+---------+----------+
| Category | Version | Description | Type | Installed On | State | Undoable |
+-----------+---------+-----------------------+------+---------------------+---------+----------+
| Versioned | 1 | create initial tables | SQL | 2021-10-30 01:26:12 | Success | No |
| Versioned | 2 | add phone number | SQL | 2021-10-30 05:20:02 | Success | No |
+-----------+---------+-----------------------+------+---------------------+---------+----------+
DBマイグレーションを途中から導入
• Flywayはスキーマ内に既にテーブルがある状態でマイグレーション
を開始するとエラーになる
• 空の状態から始めることを前提としており、既にテーブルがある=状態が
おかしいとみなされる
• 既に運用されているDBに対して途中からマイグレーションを導入す
る方法として、baseline という機能が用意されている
• 現在のDBのバージョンをFlywayに教えて、そのバージョン以前のマイグ
レーションは、既に適用済みとして管理する
バージョン1を適用済みとした場合
baselineとしてバージョン1を指定する。
現在のバージョンが1となり、バージョン2以降が適用対象となる。
~/flyway-8.0.2$ ./flyway baseline -baselineVersion=1
Flyway Teams Edition 8.0.2 by Redgate
Database: jdbc:postgresql://192.168.33.10:5432/testdb (PostgreSQL 13.4)
Creating Schema History table "public"."flyway_schema_history" with baseline ...
Successfully baselined schema with version: 1
~/flyway-8.0.2$ ./flyway info
Flyway Teams Edition 8.0.2 by Redgate
Database: jdbc:postgresql://192.168.33.10:5432/testdb (PostgreSQL 13.4)
Schema version: 1
+-----------+---------+-----------------------+----------+---------------------+----------+----------+
| Category | Version | Description | Type | Installed On | State | Undoable |
+-----------+---------+-----------------------+----------+---------------------+----------+----------+
| | 1 | << Flyway Baseline >> | BASELINE | 2021-10-30 08:01:12 | Baseline | No |
| Versioned | 2 | add phone number | SQL | | Pending | No |
+-----------+---------+-----------------------+----------+---------------------+----------+----------+
バージョン1を適用済みとした場合
この状態でflyway migrateを行うと、バージョン2から適用される。
~/flyway-8.0.2$ ./flyway migrate
Flyway Teams Edition 8.0.2 by Redgate
Database: jdbc:postgresql://192.168.33.10:5432/testdb (PostgreSQL 13.4)
Successfully validated 2 migrations (execution time 00:00.054s)
Current version of schema "public": 1
Migrating schema "public" to version "2 - add phone number"
Successfully applied 1 migration to schema "public", now at version v2 (execution time 00:00.075s)
~/flyway-8.0.2$ ./flyway info
Flyway Teams Edition 8.0.2 by Redgate
Database: jdbc:postgresql://192.168.33.10:5432/testdb (PostgreSQL 13.4)
Schema version: 2
+-----------+---------+-----------------------+----------+---------------------+----------+----------+
| Category | Version | Description | Type | Installed On | State | Undoable |
+-----------+---------+-----------------------+----------+---------------------+----------+----------+
| | 1 | << Flyway Baseline >> | BASELINE | 2021-10-30 08:01:12 | Baseline | No |
| Versioned | 2 | add phone number | SQL | 2021-10-30 08:17:45 | Success | No |
+-----------+---------+-----------------------+----------+---------------------+----------+----------+
DBマイグレーションを途中から導入
• プロジェクトに途中から導入する場合、現在のDBの状態をバージョ
ン1として一つのSQLファイルにし、baselineとしてバージョン1を
設定すればすぐに始められる
• 初期化用のDDLあれば、それをそのままバージョン1のSQLとして入れる
• 万が一DDLが無くてDBしかない場合には、dumpなどでDLL吐き出していれ
るなど
ちょっと話変わって
DBマイグレーションとER図
DBマイグレーションとER図
• ER図やテーブル定義書みたいなものを、DBマイグレーションと別
に管理するのは難しい
• DBマイグレーションによって出来上がるものと、ER図やテーブル定義書が
アンマッチになりかねない
• DBマイグレーション後のDBから、ER図やテーブル定義書を作るこ
とでアンマッチを防ぐ
SchemaSpy
SchemaSpy
• DBの情報を元に、ER図やテーブル、カラム一覧などの情報をHTML
形式のドキュメントとして出力するツール
• DBの構造を確認するのにとても便利
どんなものが出来上がるのかは、下記
サンプルが参考になる
• https://schemaspy.org/sample/index.html
SchemaSpyの使い方
• 事前準備
• 設定
• 実行
細かい説明は下記の記事にまとめているので参考に
• https://zenn.dev/onozaty/articles/schema-spy-er
SchemaSpy – 事前準備
各種ファイルのダウンロード+インストールを実施。
• https://schemaspy.readthedocs.io/en/latest/installation.html
• SchemaSpyのjarファイル入手
• Java8以降のインストール
• 対象のDBに応じたJDBCドライバの入手
• Graphvizのインストール(オプション)
事前準備はそこまで面倒じゃないが、Docker Imageが提供されていて、
そちらを使うことで事前準備が省略できるのでおススメ。
• https://hub.docker.com/r/schemaspy/schemaspy/
SchemaSpy – 設定
設定ファイルを作成。
# type of database. Run with -dbhelp for details
schemaspy.t=pgsql11
# optional path to alternative jdbc drivers.
schemaspy.dp=drivers
# database properties: host, port number, name user, password
schemaspy.host=192.168.33.10
schemaspy.port=5432
schemaspy.db=testdb
schemaspy.u=user1
schemaspy.p=password1
# output dir to save generated files
schemaspy.o=output
# db scheme for which generate diagrams
schemaspy.s=public
schemaspy.properties
SchemaSpy – 実行
実行。
Docker Image利用時は下記のように実行。
~$ ls -1R
.:
drivers
schemaspy-6.1.0.jar
schemaspy.properties
./drivers:
postgresql-42.2.23.jar
~$ java -jar schemaspy-6.1.0.jar
~$ sudo docker run -v "$PWD/output:/output" -v "$PWD/schemaspy.properties:/schemaspy.properties" ¥
schemaspy/schemaspy:latest
参考サイト
• Flyway公式サイトのドキュメント
(ここ読めば全部書いてある)
• https://flywaydb.org/documentation/
• SchemaSpy公式サイトのドキュメント
(ここ読めばほとんど書いてある)
• https://schemaspy.readthedocs.io/en/latest/
• SchemaSpyのDocker Imageの利用方法
• https://hub.docker.com/r/schemaspy/schemaspy/

Contenu connexe

Tendances

DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと土岐 孝平
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜Yoshiki Nakagawa
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMPYusuke Kagata
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界Yoshinori Nakanishi
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5Takahiro YAMADA
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~Miki Shimogai
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来についてshinjiigarashi
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 

Tendances (20)

DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 

Similaire à 今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -

PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説Masahiko Sawada
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張Shigeru Hanada
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5Toshi Harada
 
MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較Shinya Sugiyama
 
MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理Shinya Sugiyama
 
MySQL clients
MySQL clientsMySQL clients
MySQL clientsyoku0825
 
OSC ver : MariaDB ColumnStore ベンチマークしちゃいませんか?
OSC ver : MariaDB ColumnStore ベンチマークしちゃいませんか?OSC ver : MariaDB ColumnStore ベンチマークしちゃいませんか?
OSC ver : MariaDB ColumnStore ベンチマークしちゃいませんか?KAWANO KAZUYUKI
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Masayuki Ozawa
 
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!yoyamasaki
 
Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編IBM Analytics Japan
 
Snowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceSnowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceMineaki Motohashi
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~Naoki (Neo) SATO
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)yoyamasaki
 
Flyway使いたい
Flyway使いたいFlyway使いたい
Flyway使いたいfourside
 
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーションRyusuke Kajiyama
 
とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)Kazuhiro Yoshikawa
 
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1Hideki Saito
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報dstn
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubToshi Harada
 

Similaire à 今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 - (20)

PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張外部データラッパによる PostgreSQL の拡張
外部データラッパによる PostgreSQL の拡張
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
 
MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較MySQLとPostgreSQLの基本的なパラメータ比較
MySQLとPostgreSQLの基本的なパラメータ比較
 
MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理MySQLとPostgreSQLにおける基本的なアカウント管理
MySQLとPostgreSQLにおける基本的なアカウント管理
 
MySQL clients
MySQL clientsMySQL clients
MySQL clients
 
OSC ver : MariaDB ColumnStore ベンチマークしちゃいませんか?
OSC ver : MariaDB ColumnStore ベンチマークしちゃいませんか?OSC ver : MariaDB ColumnStore ベンチマークしちゃいませんか?
OSC ver : MariaDB ColumnStore ベンチマークしちゃいませんか?
 
Rubykansai 81
Rubykansai 81Rubykansai 81
Rubykansai 81
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
 
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
 
Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編Db2 Warehouse Spark利用ガイド データ操作編
Db2 Warehouse Spark利用ガイド データ操作編
 
Snowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a ServiceSnowflake Elastic Data Warehouse as a Service
Snowflake Elastic Data Warehouse as a Service
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)
 
Flyway使いたい
Flyway使いたいFlyway使いたい
Flyway使いたい
 
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
第20回 中国地方DB勉強会 in 岡山 MySQLレプリケーション
 
とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)
 
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
 
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報20120822_dstn技術交流会_dstnのご紹介と最新技術情報
20120822_dstn技術交流会_dstnのご紹介と最新技術情報
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
 

Plus de onozaty

チームで開発するための環境を整える
チームで開発するための環境を整えるチームで開発するための環境を整える
チームで開発するための環境を整えるonozaty
 
Selenium入門(2023年版)
Selenium入門(2023年版)Selenium入門(2023年版)
Selenium入門(2023年版)onozaty
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていることonozaty
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へonozaty
 
Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介onozaty
 
最近作ったもの
最近作ったもの最近作ったもの
最近作ったものonozaty
 
Selenium入門
Selenium入門Selenium入門
Selenium入門onozaty
 
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020onozaty
 
「伝わるチケット」の書き方
「伝わるチケット」の書き方「伝わるチケット」の書き方
「伝わるチケット」の書き方onozaty
 
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)onozaty
 
View customize1.2.0の紹介
View customize1.2.0の紹介View customize1.2.0の紹介
View customize1.2.0の紹介onozaty
 
WebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたWebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたonozaty
 
Lombokの紹介
Lombokの紹介Lombokの紹介
Lombokの紹介onozaty
 
Spring Bootを触ってみた
Spring Bootを触ってみたSpring Bootを触ってみた
Spring Bootを触ってみたonozaty
 
30歳過ぎてもエンジニアでいるためにやったこと
30歳過ぎてもエンジニアでいるためにやったこと30歳過ぎてもエンジニアでいるためにやったこと
30歳過ぎてもエンジニアでいるためにやったことonozaty
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなすonozaty
 
View Customize Pluginで出来ること
View Customize Pluginで出来ることView Customize Pluginで出来ること
View Customize Pluginで出来ることonozaty
 
技術書のススメ
技術書のススメ技術書のススメ
技術書のススメonozaty
 
課題管理と情報共有のためのツール群
課題管理と情報共有のためのツール群課題管理と情報共有のためのツール群
課題管理と情報共有のためのツール群onozaty
 
お試し用のLinux環境を作る
お試し用のLinux環境を作るお試し用のLinux環境を作る
お試し用のLinux環境を作るonozaty
 

Plus de onozaty (20)

チームで開発するための環境を整える
チームで開発するための環境を整えるチームで開発するための環境を整える
チームで開発するための環境を整える
 
Selenium入門(2023年版)
Selenium入門(2023年版)Selenium入門(2023年版)
Selenium入門(2023年版)
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へ
 
Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介
 
最近作ったもの
最近作ったもの最近作ったもの
最近作ったもの
 
Selenium入門
Selenium入門Selenium入門
Selenium入門
 
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
 
「伝わるチケット」の書き方
「伝わるチケット」の書き方「伝わるチケット」の書き方
「伝わるチケット」の書き方
 
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)
 
View customize1.2.0の紹介
View customize1.2.0の紹介View customize1.2.0の紹介
View customize1.2.0の紹介
 
WebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたWebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみた
 
Lombokの紹介
Lombokの紹介Lombokの紹介
Lombokの紹介
 
Spring Bootを触ってみた
Spring Bootを触ってみたSpring Bootを触ってみた
Spring Bootを触ってみた
 
30歳過ぎてもエンジニアでいるためにやったこと
30歳過ぎてもエンジニアでいるためにやったこと30歳過ぎてもエンジニアでいるためにやったこと
30歳過ぎてもエンジニアでいるためにやったこと
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなす
 
View Customize Pluginで出来ること
View Customize Pluginで出来ることView Customize Pluginで出来ること
View Customize Pluginで出来ること
 
技術書のススメ
技術書のススメ技術書のススメ
技術書のススメ
 
課題管理と情報共有のためのツール群
課題管理と情報共有のためのツール群課題管理と情報共有のためのツール群
課題管理と情報共有のためのツール群
 
お試し用のLinux環境を作る
お試し用のLinux環境を作るお試し用のLinux環境を作る
お試し用のLinux環境を作る
 

Dernier

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Dernier (8)

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 

今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -