狠狠撸

狠狠撸Share a Scribd company logo
実践!データベース リファクタリングツール 的場辰徳
開発中のデータベース スキーマの変更 正直避けられない 開発中 出来ればデータを消さずにスキーマを変更したい 運用中 絶対にデータを消さずにスキーマ変更する -> 楽はしたいがデータが消えるのは困る
データベース スキーマ変更管理の課題 情報の一元化 マスタの情報と差分情報がバラバラになって一元管理されずにズレが生じる場合がある データの消失の防止 特に運用中は必須 管理の容易さ 複数 DBMS への対応
データベース変更管理ツール ( データ準備型 ) 初期データを用意して、スキーマ変更の度にスキーマを作り直して初期データをロードし直す ツール S2JDBC-Gen 、 Jiemamy 利点 管理するのは最終的なスキーマ情報だけで良い 毎回スキーマを作り直すのでどんな変更でも対応できる 欠点 用意したデータを使うので開発者ごとに違うデータを使ったりするのは難しい データの管理が面倒くさい 開発環境には良いが本番環境のスキーマ差分更新に使えない
データベース変更管理ツール ( 差分管理型 ) スキーマ変更の差分情報を蓄積して、稼働中のデータベースに差分を適用することによりスキーマを更新する ツール ruby on rails の migration 、 LiquiBase 利点 開発環境にも本番にも同じスキーマ更新方法が適用できる データが消えないので、開発者ごとに違うデータを使ったり出来る 欠点 差分情報の管理が面倒 (SQL だったり、 XML だったり、 YAML だったり ) 差分情報と別に最終的なスキーマ情報も必要で一元管理しにくい
Liquibase の diff 機能 差分管理型の欠点を解消するのが Liquibase の diff 機能 2 つのデータベースの差分を見て、差分情報を出力してくれる (XML または SQL 形式 ) これにより差分データの管理が軽減できるし、差分データは生成されるのでマスタとなるスキーマ情報さえあればよい 作成された差分データは Maven2 、 Ant 、コマンドラインツール、 ServletListener などで適用可能
diff機能の操作手順 マスタとなるスキーマ情報を更新する 新しいスキーマのデータベースを作る ( データなどは空でよい ) 古いスキーマのデータベースと比較してスキーマの差分情報 (XML または SQL) を出力する 差分情報を使用中のデータベースに適用すると最新のスキーマになる DB (差分用) DB (使用中) スキーマ 情報 ( マスタ ) ②上書き ③比較 生成 スキーマ 情報 ( 差分 ) ④適用
diffでは出来ないこと 名前の変更 ( テーブル名、カラム名など ) 例えばテーブル A が B に変更されても元の名前がわからないので基本的にテーブル A を削除してテーブル B を追加になる データが消えると困る場合は別途対応が必要 変換不可能なデータ型の変更 現状の型より厳しい型への変更はほぼ無理 例:文字列->数値、日付 ※ そもそもそんなの alter 文で変更不可能だから機械的には無理 制約の追加や制約のある列の追加 デフォルト値を付けない限りは列を追加したときは値が null になるので、制約があるとエラーになることが多い。
そういう場合は SQL を書けばいいじゃない w XML ファイルの中に SQL を書くことが出来る XML で書いても良いが本番適用を考えると SQL が無難
XML vs SQL XML だと DBMS の違いを吸収してくれる どこまで差分を適用したかを管理しているので、適用されていない差分だけ適用してくれる SQL だと…以下略 おすすめは 開発環境には手軽に使える XML 本番環境には中身が確認できる SQL
まとめ データベーススキーマの変更管理を楽にしたい 運用中の本番対応を考えると差分更新が現実的 机械的に出来るところはツールで、出来ないところは人が対応

More Related Content

What's hot (20)

顿别惫蝉の常识、顿叠础は非常识
顿别惫蝉の常识、顿叠础は非常识顿别惫蝉の常识、顿叠础は非常识
顿别惫蝉の常识、顿叠础は非常识
yoku0825
?
MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間
hiroi10
?
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
Mikiya Okuno
?
贬补苍诲濒别谤さんコンニチワ
贬补苍诲濒别谤さんコンニチワ贬补苍诲濒别谤さんコンニチワ
贬补苍诲濒别谤さんコンニチワ
yoku0825
?
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012
Mikiya Okuno
?
ゆるふわ惭测厂蚕尝フェイルオーハ?ー
ゆるふわ惭测厂蚕尝フェイルオーハ?ーゆるふわ惭测厂蚕尝フェイルオーハ?ー
ゆるふわ惭测厂蚕尝フェイルオーハ?ー
Kimitoshi Takahashi
?
MySQL 初めてのチューニング
MySQL 初めてのチューニングMySQL 初めてのチューニング
MySQL 初めてのチューニング
Craft works
?
Art of MySQL Replication.
Art of MySQL Replication.Art of MySQL Replication.
Art of MySQL Replication.
Mikiya Okuno
?
惭测厂蚕尝を割と一人で300台管理する技术
惭测厂蚕尝を割と一人で300台管理する技术惭测厂蚕尝を割と一人で300台管理する技术
惭测厂蚕尝を割と一人で300台管理する技术
yoku0825
?
惭贬础を検証して导入した话
惭贬础を検証して导入した话惭贬础を検証して导入した话
惭贬础を検証して导入した话
Yu Komiya
?
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
?
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
yoyamasaki
?
カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡
Aya Komuro
?
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
学 松崎
?
サーバーが完肤なきまでに死んでも惭测厂蚕尝のデータを失わないための表技
サーバーが完肤なきまでに死んでも惭测厂蚕尝のデータを失わないための表技サーバーが完肤なきまでに死んでも惭测厂蚕尝のデータを失わないための表技
サーバーが完肤なきまでに死んでも惭测厂蚕尝のデータを失わないための表技
yoku0825
?
MySQL clients
MySQL clientsMySQL clients
MySQL clients
yoku0825
?
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLは
yoku0825
?
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
Toshi Harada
?
MySQL Cluster 新機能解説 7.5 and beyond
MySQL Cluster 新機能解説 7.5 and beyondMySQL Cluster 新機能解説 7.5 and beyond
MySQL Cluster 新機能解説 7.5 and beyond
Mikiya Okuno
?
顿别惫蝉の常识、顿叠础は非常识
顿别惫蝉の常识、顿叠础は非常识顿别惫蝉の常识、顿叠础は非常识
顿别惫蝉の常识、顿叠础は非常识
yoku0825
?
MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間
hiroi10
?
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
Mikiya Okuno
?
贬补苍诲濒别谤さんコンニチワ
贬补苍诲濒别谤さんコンニチワ贬补苍诲濒别谤さんコンニチワ
贬补苍诲濒别谤さんコンニチワ
yoku0825
?
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012
Mikiya Okuno
?
ゆるふわ惭测厂蚕尝フェイルオーハ?ー
ゆるふわ惭测厂蚕尝フェイルオーハ?ーゆるふわ惭测厂蚕尝フェイルオーハ?ー
ゆるふわ惭测厂蚕尝フェイルオーハ?ー
Kimitoshi Takahashi
?
MySQL 初めてのチューニング
MySQL 初めてのチューニングMySQL 初めてのチューニング
MySQL 初めてのチューニング
Craft works
?
Art of MySQL Replication.
Art of MySQL Replication.Art of MySQL Replication.
Art of MySQL Replication.
Mikiya Okuno
?
惭测厂蚕尝を割と一人で300台管理する技术
惭测厂蚕尝を割と一人で300台管理する技术惭测厂蚕尝を割と一人で300台管理する技术
惭测厂蚕尝を割と一人で300台管理する技术
yoku0825
?
惭贬础を検証して导入した话
惭贬础を検証して导入した话惭贬础を検証して导入した话
惭贬础を検証して导入した话
Yu Komiya
?
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
?
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
yoyamasaki
?
カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡
Aya Komuro
?
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
学 松崎
?
サーバーが完肤なきまでに死んでも惭测厂蚕尝のデータを失わないための表技
サーバーが完肤なきまでに死んでも惭测厂蚕尝のデータを失わないための表技サーバーが完肤なきまでに死んでも惭测厂蚕尝のデータを失わないための表技
サーバーが完肤なきまでに死んでも惭测厂蚕尝のデータを失わないための表技
yoku0825
?
MySQL clients
MySQL clientsMySQL clients
MySQL clients
yoku0825
?
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLは
yoku0825
?
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
Toshi Harada
?
MySQL Cluster 新機能解説 7.5 and beyond
MySQL Cluster 新機能解説 7.5 and beyondMySQL Cluster 新機能解説 7.5 and beyond
MySQL Cluster 新機能解説 7.5 and beyond
Mikiya Okuno
?

Viewers also liked (10)

厂别补蝉补谤2で作った俺たちのサービスの今
厂别补蝉补谤2で作った俺たちのサービスの今厂别补蝉补谤2で作った俺たちのサービスの今
厂别补蝉补谤2で作った俺たちのサービスの今
Koichi Sakata
?
Sqlアンチパターン読書会 インプリシットカラム
Sqlアンチパターン読書会 インプリシットカラムSqlアンチパターン読書会 インプリシットカラム
Sqlアンチパターン読書会 インプリシットカラム
Hiroyuki Ohnaka
?
惭测厂蚕尝ドライバの改良と軽量翱/搁マッパーの绍介
惭测厂蚕尝ドライバの改良と軽量翱/搁マッパーの绍介惭测厂蚕尝ドライバの改良と軽量翱/搁マッパーの绍介
惭测厂蚕尝ドライバの改良と軽量翱/搁マッパーの绍介
kwatch
?
Sqlアンチハ?ターン読書会 #7スライト?資料
Sqlアンチハ?ターン読書会 #7スライト?資料 Sqlアンチハ?ターン読書会 #7スライト?資料
Sqlアンチハ?ターン読書会 #7スライト?資料
Naoya Ishii
?
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと?戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと?戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと?戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと?戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
WebSig24/7
?
SQLアンチパターン読書会 「スパゲッティクエリ」
SQLアンチパターン読書会 「スパゲッティクエリ」SQLアンチパターン読書会 「スパゲッティクエリ」
SQLアンチパターン読書会 「スパゲッティクエリ」
makopi 23
?
ブラウザにやさしい贬罢惭尝/颁厂厂
ブラウザにやさしい贬罢惭尝/颁厂厂ブラウザにやさしい贬罢惭尝/颁厂厂
ブラウザにやさしい贬罢惭尝/颁厂厂
Takeharu Igari
?
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
?
构成情报データベースを骋颈迟で管理したいネットワーク运用者の忧鬱
构成情报データベースを骋颈迟で管理したいネットワーク运用者の忧鬱构成情报データベースを骋颈迟で管理したいネットワーク运用者の忧鬱
构成情报データベースを骋颈迟で管理したいネットワーク运用者の忧鬱
Yuya Rin
?
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っている
yoku0825
?
厂别补蝉补谤2で作った俺たちのサービスの今
厂别补蝉补谤2で作った俺たちのサービスの今厂别补蝉补谤2で作った俺たちのサービスの今
厂别补蝉补谤2で作った俺たちのサービスの今
Koichi Sakata
?
Sqlアンチパターン読書会 インプリシットカラム
Sqlアンチパターン読書会 インプリシットカラムSqlアンチパターン読書会 インプリシットカラム
Sqlアンチパターン読書会 インプリシットカラム
Hiroyuki Ohnaka
?
惭测厂蚕尝ドライバの改良と軽量翱/搁マッパーの绍介
惭测厂蚕尝ドライバの改良と軽量翱/搁マッパーの绍介惭测厂蚕尝ドライバの改良と軽量翱/搁マッパーの绍介
惭测厂蚕尝ドライバの改良と軽量翱/搁マッパーの绍介
kwatch
?
Sqlアンチハ?ターン読書会 #7スライト?資料
Sqlアンチハ?ターン読書会 #7スライト?資料 Sqlアンチハ?ターン読書会 #7スライト?資料
Sqlアンチハ?ターン読書会 #7スライト?資料
Naoya Ishii
?
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと?戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと?戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと?戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと?戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
WebSig24/7
?
SQLアンチパターン読書会 「スパゲッティクエリ」
SQLアンチパターン読書会 「スパゲッティクエリ」SQLアンチパターン読書会 「スパゲッティクエリ」
SQLアンチパターン読書会 「スパゲッティクエリ」
makopi 23
?
ブラウザにやさしい贬罢惭尝/颁厂厂
ブラウザにやさしい贬罢惭尝/颁厂厂ブラウザにやさしい贬罢惭尝/颁厂厂
ブラウザにやさしい贬罢惭尝/颁厂厂
Takeharu Igari
?
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
?
构成情报データベースを骋颈迟で管理したいネットワーク运用者の忧鬱
构成情报データベースを骋颈迟で管理したいネットワーク运用者の忧鬱构成情报データベースを骋颈迟で管理したいネットワーク运用者の忧鬱
构成情报データベースを骋颈迟で管理したいネットワーク运用者の忧鬱
Yuya Rin
?
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っている
yoku0825
?

Similar to 実践!データベースリファクタリングツール (20)

Okuyama説明資料 20120119 ss
Okuyama説明資料 20120119 ssOkuyama説明資料 20120119 ss
Okuyama説明資料 20120119 ss
Takahiro Iwase
?
クラウドDWHにおける観点とAzure Synapse Analyticsの対応
クラウドDWHにおける観点とAzure Synapse Analyticsの対応クラウドDWHにおける観点とAzure Synapse Analyticsの対応
クラウドDWHにおける観点とAzure Synapse Analyticsの対応
Ryoma Nagata
?
笔辞蝉迟驳谤别厂蚕尝の连携!クラウド移行!负荷分散!バックアップ!顿叠惭辞迟辞で一挙解决!
笔辞蝉迟驳谤别厂蚕尝の连携!クラウド移行!负荷分散!バックアップ!顿叠惭辞迟辞で一挙解决!笔辞蝉迟驳谤别厂蚕尝の连携!クラウド移行!负荷分散!バックアップ!顿叠惭辞迟辞で一挙解决!
笔辞蝉迟驳谤别厂蚕尝の连携!クラウド移行!负荷分散!バックアップ!顿叠惭辞迟辞で一挙解决!
株式会社クライム
?
Dsm利用ガイド dsm機能紹介 20160115
Dsm利用ガイド dsm機能紹介 20160115Dsm利用ガイド dsm機能紹介 20160115
Dsm利用ガイド dsm機能紹介 20160115
japan_db2
?
iOS/Androidにも対応した SQL Anywhere 12の魅力
iOS/Androidにも対応した SQL Anywhere 12の魅力iOS/Androidにも対応した SQL Anywhere 12の魅力
iOS/Androidにも対応した SQL Anywhere 12の魅力
nisobe58
?
Snowflake Architecture and Performance
Snowflake Architecture and PerformanceSnowflake Architecture and Performance
Snowflake Architecture and Performance
Mineaki Motohashi
?
Data consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンスData consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンス
Masayuki Ozawa
?
Vc1 idc管理 ご紹介資料 2011-01-20(kmt)
Vc1 idc管理 ご紹介資料 2011-01-20(kmt)Vc1 idc管理 ご紹介資料 2011-01-20(kmt)
Vc1 idc管理 ご紹介資料 2011-01-20(kmt)
Manabu_Shimohira
?
Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介
Oda Shinsuke
?
SQL Server/SQL Database の新機能のお話し
SQL Server/SQL Database の新機能のお話しSQL Server/SQL Database の新機能のお話し
SQL Server/SQL Database の新機能のお話し
Insight Technology, Inc.
?
Dat004 開発者に捧ぐ「sql server_2016_
Dat004 開発者に捧ぐ「sql server_2016_Dat004 開発者に捧ぐ「sql server_2016_
Dat004 開発者に捧ぐ「sql server_2016_
Tech Summit 2016
?
[20171019 三木会] データベース?マイグレーションについて by 株式会社シー?エス?イー 藤井 元雄 氏
[20171019 三木会] データベース?マイグレーションについて by 株式会社シー?エス?イー 藤井 元雄 氏[20171019 三木会] データベース?マイグレーションについて by 株式会社シー?エス?イー 藤井 元雄 氏
[20171019 三木会] データベース?マイグレーションについて by 株式会社シー?エス?イー 藤井 元雄 氏
Insight Technology, Inc.
?
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
Tetsuya Mase
?
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy
Takahiro Iwase
?
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
VOYAGE GROUP
?
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
Kenta Suzuki
?
DevOps with Database on AWS
DevOps with Database on AWSDevOps with Database on AWS
DevOps with Database on AWS
Amazon Web Services Japan
?
04 Qlik Cloud データ統合 しっかり学ぶ勉強会 #4 データレプリケーションタスクの作成
04 Qlik Cloud データ統合 しっかり学ぶ勉強会 #4 データレプリケーションタスクの作成04 Qlik Cloud データ統合 しっかり学ぶ勉強会 #4 データレプリケーションタスクの作成
04 Qlik Cloud データ統合 しっかり学ぶ勉強会 #4 データレプリケーションタスクの作成
QlikPresalesJapan
?
罢别苍蝉辞谤贵濒辞飞をもう少し详しく入门
罢别苍蝉辞谤贵濒辞飞をもう少し详しく入门罢别苍蝉辞谤贵濒辞飞をもう少し详しく入门
罢别苍蝉辞谤贵濒辞飞をもう少し详しく入门
tak9029
?
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!
guestc06e54
?
Okuyama説明資料 20120119 ss
Okuyama説明資料 20120119 ssOkuyama説明資料 20120119 ss
Okuyama説明資料 20120119 ss
Takahiro Iwase
?
クラウドDWHにおける観点とAzure Synapse Analyticsの対応
クラウドDWHにおける観点とAzure Synapse Analyticsの対応クラウドDWHにおける観点とAzure Synapse Analyticsの対応
クラウドDWHにおける観点とAzure Synapse Analyticsの対応
Ryoma Nagata
?
笔辞蝉迟驳谤别厂蚕尝の连携!クラウド移行!负荷分散!バックアップ!顿叠惭辞迟辞で一挙解决!
笔辞蝉迟驳谤别厂蚕尝の连携!クラウド移行!负荷分散!バックアップ!顿叠惭辞迟辞で一挙解决!笔辞蝉迟驳谤别厂蚕尝の连携!クラウド移行!负荷分散!バックアップ!顿叠惭辞迟辞で一挙解决!
笔辞蝉迟驳谤别厂蚕尝の连携!クラウド移行!负荷分散!バックアップ!顿叠惭辞迟辞で一挙解决!
株式会社クライム
?
Dsm利用ガイド dsm機能紹介 20160115
Dsm利用ガイド dsm機能紹介 20160115Dsm利用ガイド dsm機能紹介 20160115
Dsm利用ガイド dsm機能紹介 20160115
japan_db2
?
iOS/Androidにも対応した SQL Anywhere 12の魅力
iOS/Androidにも対応した SQL Anywhere 12の魅力iOS/Androidにも対応した SQL Anywhere 12の魅力
iOS/Androidにも対応した SQL Anywhere 12の魅力
nisobe58
?
Snowflake Architecture and Performance
Snowflake Architecture and PerformanceSnowflake Architecture and Performance
Snowflake Architecture and Performance
Mineaki Motohashi
?
Data consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンスData consistency 入門 data partitioning ガイダンス
Data consistency 入門 data partitioning ガイダンス
Masayuki Ozawa
?
Vc1 idc管理 ご紹介資料 2011-01-20(kmt)
Vc1 idc管理 ご紹介資料 2011-01-20(kmt)Vc1 idc管理 ご紹介資料 2011-01-20(kmt)
Vc1 idc管理 ご紹介資料 2011-01-20(kmt)
Manabu_Shimohira
?
Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介Sql server2014復習とsqlserver2016の紹介
Sql server2014復習とsqlserver2016の紹介
Oda Shinsuke
?
SQL Server/SQL Database の新機能のお話し
SQL Server/SQL Database の新機能のお話しSQL Server/SQL Database の新機能のお話し
SQL Server/SQL Database の新機能のお話し
Insight Technology, Inc.
?
Dat004 開発者に捧ぐ「sql server_2016_
Dat004 開発者に捧ぐ「sql server_2016_Dat004 開発者に捧ぐ「sql server_2016_
Dat004 開発者に捧ぐ「sql server_2016_
Tech Summit 2016
?
[20171019 三木会] データベース?マイグレーションについて by 株式会社シー?エス?イー 藤井 元雄 氏
[20171019 三木会] データベース?マイグレーションについて by 株式会社シー?エス?イー 藤井 元雄 氏[20171019 三木会] データベース?マイグレーションについて by 株式会社シー?エス?イー 藤井 元雄 氏
[20171019 三木会] データベース?マイグレーションについて by 株式会社シー?エス?イー 藤井 元雄 氏
Insight Technology, Inc.
?
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy
Takahiro Iwase
?
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
VOYAGE GROUP
?
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
Kenta Suzuki
?
04 Qlik Cloud データ統合 しっかり学ぶ勉強会 #4 データレプリケーションタスクの作成
04 Qlik Cloud データ統合 しっかり学ぶ勉強会 #4 データレプリケーションタスクの作成04 Qlik Cloud データ統合 しっかり学ぶ勉強会 #4 データレプリケーションタスクの作成
04 Qlik Cloud データ統合 しっかり学ぶ勉強会 #4 データレプリケーションタスクの作成
QlikPresalesJapan
?
罢别苍蝉辞谤贵濒辞飞をもう少し详しく入门
罢别苍蝉辞谤贵濒辞飞をもう少し详しく入门罢别苍蝉辞谤贵濒辞飞をもう少し详しく入门
罢别苍蝉辞谤贵濒辞飞をもう少し详しく入门
tak9029
?
増加するコアを使い切れ!!
増加するコアを使い切れ!!増加するコアを使い切れ!!
増加するコアを使い切れ!!
guestc06e54
?

実践!データベースリファクタリングツール

  • 2. 開発中のデータベース スキーマの変更 正直避けられない 開発中 出来ればデータを消さずにスキーマを変更したい 運用中 絶対にデータを消さずにスキーマ変更する -> 楽はしたいがデータが消えるのは困る
  • 3. データベース スキーマ変更管理の課題 情報の一元化 マスタの情報と差分情報がバラバラになって一元管理されずにズレが生じる場合がある データの消失の防止 特に運用中は必須 管理の容易さ 複数 DBMS への対応
  • 4. データベース変更管理ツール ( データ準備型 ) 初期データを用意して、スキーマ変更の度にスキーマを作り直して初期データをロードし直す ツール S2JDBC-Gen 、 Jiemamy 利点 管理するのは最終的なスキーマ情報だけで良い 毎回スキーマを作り直すのでどんな変更でも対応できる 欠点 用意したデータを使うので開発者ごとに違うデータを使ったりするのは難しい データの管理が面倒くさい 開発環境には良いが本番環境のスキーマ差分更新に使えない
  • 5. データベース変更管理ツール ( 差分管理型 ) スキーマ変更の差分情報を蓄積して、稼働中のデータベースに差分を適用することによりスキーマを更新する ツール ruby on rails の migration 、 LiquiBase 利点 開発環境にも本番にも同じスキーマ更新方法が適用できる データが消えないので、開発者ごとに違うデータを使ったり出来る 欠点 差分情報の管理が面倒 (SQL だったり、 XML だったり、 YAML だったり ) 差分情報と別に最終的なスキーマ情報も必要で一元管理しにくい
  • 6. Liquibase の diff 機能 差分管理型の欠点を解消するのが Liquibase の diff 機能 2 つのデータベースの差分を見て、差分情報を出力してくれる (XML または SQL 形式 ) これにより差分データの管理が軽減できるし、差分データは生成されるのでマスタとなるスキーマ情報さえあればよい 作成された差分データは Maven2 、 Ant 、コマンドラインツール、 ServletListener などで適用可能
  • 7. diff機能の操作手順 マスタとなるスキーマ情報を更新する 新しいスキーマのデータベースを作る ( データなどは空でよい ) 古いスキーマのデータベースと比較してスキーマの差分情報 (XML または SQL) を出力する 差分情報を使用中のデータベースに適用すると最新のスキーマになる DB (差分用) DB (使用中) スキーマ 情報 ( マスタ ) ②上書き ③比較 生成 スキーマ 情報 ( 差分 ) ④適用
  • 8. diffでは出来ないこと 名前の変更 ( テーブル名、カラム名など ) 例えばテーブル A が B に変更されても元の名前がわからないので基本的にテーブル A を削除してテーブル B を追加になる データが消えると困る場合は別途対応が必要 変換不可能なデータ型の変更 現状の型より厳しい型への変更はほぼ無理 例:文字列->数値、日付 ※ そもそもそんなの alter 文で変更不可能だから機械的には無理 制約の追加や制約のある列の追加 デフォルト値を付けない限りは列を追加したときは値が null になるので、制約があるとエラーになることが多い。
  • 9. そういう場合は SQL を書けばいいじゃない w XML ファイルの中に SQL を書くことが出来る XML で書いても良いが本番適用を考えると SQL が無難
  • 10. XML vs SQL XML だと DBMS の違いを吸収してくれる どこまで差分を適用したかを管理しているので、適用されていない差分だけ適用してくれる SQL だと…以下略 おすすめは 開発環境には手軽に使える XML 本番環境には中身が確認できる SQL