1000speakers:4 Jiemamy
Transcript of 1000speakers:4 Jiemamy
![Page 1: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/1.jpg)
DBの構成管理とJiemamy
都元ダイスケ
1
![Page 2: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/2.jpg)
自己紹介•都元ダイスケ (1978’s)
• id:daisuke-m / @daisuke_m
• その他、大抵 daisuke_m
• 今年1月まで、薬剤師してました。
• 今は某社でエンジニアしてます。
• 所属はやっぱりjava-jaです。
2
![Page 3: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/3.jpg)
JavaにおけるWebアプリのサーバ構成
DatabaseサーバOracle, MySQL, PostgreSQL, etc
ApplicationサーバTomcat, JBoss, etc
WebサーバApache httpd, IIS, etc
3
![Page 4: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/4.jpg)
ビルドツール Maven2• チェックアウトしてきたら
• そのプロジェクトのディレクトリで
• mvn コマンドを実行
• targetディレクトリに目的物生成される。
• 設定次第で、SQLを実行してDB構築も。
• チェックアウトした直後のソースから、コマンド一つで「すぐ利用可能な状態」を生成してくれる。
4
![Page 5: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/5.jpg)
What’s Jiemamy?
• DBのモデリングツール
• Eclipseプラグインとして提供
• ER図のデータファイルからSQLを生成するロジックを Maven2から呼べるようにしてある。
5
![Page 6: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/6.jpg)
What’s Jiemamy?
6
![Page 7: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/7.jpg)
Martin Fowler
• 代表著書
• Refactoring
• eXtreme Programming
• Patterns of Enterprise Application Architecture(PoEAA)
This image is licenced under Creative Commons Attribution 2.0 License
(c) 2007Ade Oshineye
7
![Page 8: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/8.jpg)
データベースの進化的設計
•アジャイル開発では、DBの仕様変更は不可避。
• っていうか、変更して進化させて行こうよ。
• スキーマとテストデータから成るDB。
• データだって管理が必要 (詳細は次ページ)。- Fowler M. & Sadalage P. (2003) Evolutionary Database Design
- http://www.martinfowler.com/articles/evodb.html (原文)
- http://www.objectclub.jp/community/XP-jp/xp_relate/evodb-jp (和訳)
8
![Page 9: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/9.jpg)
スキーマだけじゃないよ• DBの構成管理というのは、
• DDL(CREATE文の類)スキーマ管理
• DML(INSERT文の類)データ管理
• 両方必要。てゆーか、セットだろJK。
• 初期データが入ってないと動かないアプリとか、ありますよね。
9
![Page 10: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/10.jpg)
まだJiemamyが無い時代...
• ソースコードの構成管理はSCM (Subversion等)
• では、DB構成の管理ってどうやってました?
• 前バージョンからの差分ALTER文を蓄積。
• ゼロからDBを構成するSQLファイルを編集。
• では、そのSQLってどうやって管理してます?
10
![Page 11: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/11.jpg)
DBの構成管理
• SQLファイルは、ソースと一緒にSCMで管理するのがベター。
• リポジトリ外で管理なんて、何がどうなるか分からない。危険。管理しきれない。
• ソースだけrollback出来ても、当時のDB状態をも再現できなければ全く無意味。
11
![Page 12: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/12.jpg)
従来のDB構成管理開発フェーズ
ビルドフェーズ
DBモデリング
プログラミング
構成管理
コミット
チェックアウト
コンパイルデプロイ(配備)等by Maven2
DBServer
SQL Repo-sitory
Source Package AppServer
12
![Page 13: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/13.jpg)
DB構成管理の対象• ALTER文を管理?
• 方言キツ過ぎね?
• バージョン間の変更履歴を全部管理するの?
• CREATE文を管理?
• ALTERよりマシか。
• とりあえず頑張るしかない。
• SQL直編集するぞー。
• カラム名変更指令ktkrCREATE文を変更した。
• ぁ、他テーブルの外部キー定義に影響が...
• ぅ、数千行のINSERT文も直さなきゃ...
• ぇ、他に修正点...?無いかな... 無いと思う...無いよね? 無いといいな...
地獄ですか ここは。
13
![Page 14: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/14.jpg)
その問題点•繰り返しますが、SQLの編集って大変。
• 既存モデリングツールを使用した場合
• Mavenを導入しても、チェックアウトして即ビルドできなくなる。
• 何故なら、データファイルをSQLに直すステップは手動。
• となると、データファイルとSQLの二重管理? → DRY原則違反
14
![Page 15: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/15.jpg)
そこでJiemamyですよ。面倒なSQL編集作業を
隠蔽します。
15
![Page 16: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/16.jpg)
JiemamyModel
Jiemamyで構成管理DB
ServerSQL Repo-
sitorySource Package App
Server
開発フェーズ
ビルドフェーズ
DBモデリング
プログラミング
構成管理
コミット
チェックアウト
コンパイルデプロイ(配備)等by Maven2
16
![Page 17: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/17.jpg)
Jiemamyでは...
• ダイアグラムエディタでお絵描きするだけだよ! 初期データの管理もOK!
• データファイルを管理しておけばSQLを管理しなくても大丈夫だよ!
• maven-pluginを走らせれば、ビルドの時にデータファイルからSQLを作ってくれて、その流れでDBに反映!
17
![Page 18: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/18.jpg)
一般的な機能も揃ってます• DBからリバースもできる!
• 論理名表示もできる!
• JavaのEntityクラス (JPA) も吐ける!
• VIEWも定義できる!
• ダイアグラムを画像として保存できる!
• DB仕様書(HTML)も吐ける!
18
![Page 19: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/19.jpg)
デモ19
![Page 20: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/20.jpg)
の、前提条件
• JiemamyをinstallしたEclipse
• Maven2
• PostgreSQL 起動 (postgres / postgres)
• svn+ssh://svn.sourceforge.jp/svnroot/jiemamy/trunk/jiemamy-tutorial
20
![Page 21: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/21.jpg)
JiemamyはOSSです
SOURCESOURCEFORGEFORGE..JPJP
検索Jiemamy
という訳で、コミッタ募集中。
21
![Page 22: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/22.jpg)
以上
• DBも、しっかり構成管理しよう。
• ツール(Maven2やJiemamy)を使って、プロジェクトを扱いやすくしよう。
• Jiemamyのコミッタ募集。
22
![Page 23: 1000speakers:4 Jiemamy](https://reader034.fdocuments.in/reader034/viewer/2022042814/55615551d8b42a857d8b5223/html5/thumbnails/23.jpg)
ご清聴ありがとう ございました。
23