1000speakers:4 Jiemamy

23
DBの構成管理と Jiemamy 都元ダイスケ 1
  • Upload

    -
  • Category

    Documents

  • view

    1.010
  • download

    1

Transcript of 1000speakers:4 Jiemamy

Page 1: 1000speakers:4 Jiemamy

DBの構成管理とJiemamy

都元ダイスケ

1

Page 2: 1000speakers:4 Jiemamy

自己紹介•都元ダイスケ (1978’s)

• id:daisuke-m / @daisuke_m

• その他、大抵 daisuke_m

• 今年1月まで、薬剤師してました。

• 今は某社でエンジニアしてます。

• 所属はやっぱりjava-jaです。

2

Page 3: 1000speakers:4 Jiemamy

JavaにおけるWebアプリのサーバ構成

DatabaseサーバOracle, MySQL, PostgreSQL, etc

ApplicationサーバTomcat, JBoss, etc

WebサーバApache httpd, IIS, etc

3

Page 4: 1000speakers:4 Jiemamy

ビルドツール Maven2• チェックアウトしてきたら

• そのプロジェクトのディレクトリで

• mvn コマンドを実行

• targetディレクトリに目的物生成される。

• 設定次第で、SQLを実行してDB構築も。

• チェックアウトした直後のソースから、コマンド一つで「すぐ利用可能な状態」を生成してくれる。

4

Page 5: 1000speakers:4 Jiemamy

What’s Jiemamy?

• DBのモデリングツール

• Eclipseプラグインとして提供

• ER図のデータファイルからSQLを生成するロジックを Maven2から呼べるようにしてある。

5

Page 6: 1000speakers:4 Jiemamy

What’s Jiemamy?

6

Page 7: 1000speakers:4 Jiemamy

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

データベースの進化的設計

•アジャイル開発では、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

スキーマだけじゃないよ• DBの構成管理というのは、

• DDL(CREATE文の類)スキーマ管理

• DML(INSERT文の類)データ管理

• 両方必要。てゆーか、セットだろJK。

• 初期データが入ってないと動かないアプリとか、ありますよね。

9

Page 10: 1000speakers:4 Jiemamy

まだJiemamyが無い時代...

• ソースコードの構成管理はSCM (Subversion等)

• では、DB構成の管理ってどうやってました?

• 前バージョンからの差分ALTER文を蓄積。

• ゼロからDBを構成するSQLファイルを編集。

• では、そのSQLってどうやって管理してます?

10

Page 11: 1000speakers:4 Jiemamy

DBの構成管理

• SQLファイルは、ソースと一緒にSCMで管理するのがベター。

• リポジトリ外で管理なんて、何がどうなるか分からない。危険。管理しきれない。

• ソースだけrollback出来ても、当時のDB状態をも再現できなければ全く無意味。

11

Page 12: 1000speakers:4 Jiemamy

従来のDB構成管理開発フェーズ

ビルドフェーズ

DBモデリング

プログラミング

構成管理

コミット

チェックアウト

コンパイルデプロイ(配備)等by Maven2

DBServer

SQL Repo-sitory

Source Package AppServer

12

Page 13: 1000speakers:4 Jiemamy

DB構成管理の対象• ALTER文を管理?

• 方言キツ過ぎね?

• バージョン間の変更履歴を全部管理するの?

• CREATE文を管理?

• ALTERよりマシか。

• とりあえず頑張るしかない。

• SQL直編集するぞー。

• カラム名変更指令ktkrCREATE文を変更した。

• ぁ、他テーブルの外部キー定義に影響が...

• ぅ、数千行のINSERT文も直さなきゃ...

• ぇ、他に修正点...?無いかな... 無いと思う...無いよね? 無いといいな...

地獄ですか ここは。

13

Page 14: 1000speakers:4 Jiemamy

その問題点•繰り返しますが、SQLの編集って大変。

• 既存モデリングツールを使用した場合

• Mavenを導入しても、チェックアウトして即ビルドできなくなる。

• 何故なら、データファイルをSQLに直すステップは手動。

• となると、データファイルとSQLの二重管理? → DRY原則違反

14

Page 15: 1000speakers:4 Jiemamy

そこでJiemamyですよ。面倒なSQL編集作業を

隠蔽します。

15

Page 16: 1000speakers:4 Jiemamy

JiemamyModel

Jiemamyで構成管理DB

ServerSQL Repo-

sitorySource Package App

Server

開発フェーズ

ビルドフェーズ

DBモデリング

プログラミング

構成管理

コミット

チェックアウト

コンパイルデプロイ(配備)等by Maven2

16

Page 17: 1000speakers:4 Jiemamy

Jiemamyでは...

• ダイアグラムエディタでお絵描きするだけだよ! 初期データの管理もOK!

• データファイルを管理しておけばSQLを管理しなくても大丈夫だよ!

• maven-pluginを走らせれば、ビルドの時にデータファイルからSQLを作ってくれて、その流れでDBに反映!

17

Page 18: 1000speakers:4 Jiemamy

一般的な機能も揃ってます• DBからリバースもできる!

• 論理名表示もできる!

• JavaのEntityクラス (JPA) も吐ける!

• VIEWも定義できる!

• ダイアグラムを画像として保存できる!

• DB仕様書(HTML)も吐ける!

18

Page 19: 1000speakers:4 Jiemamy

デモ19

Page 20: 1000speakers:4 Jiemamy

の、前提条件

• JiemamyをinstallしたEclipse

• Maven2

• PostgreSQL 起動 (postgres / postgres)

• svn+ssh://svn.sourceforge.jp/svnroot/jiemamy/trunk/jiemamy-tutorial

20

Page 21: 1000speakers:4 Jiemamy

JiemamyはOSSです

SOURCESOURCEFORGEFORGE..JPJP

検索Jiemamy

という訳で、コミッタ募集中。

21

Page 22: 1000speakers:4 Jiemamy

以上

• DBも、しっかり構成管理しよう。

• ツール(Maven2やJiemamy)を使って、プロジェクトを扱いやすくしよう。

• Jiemamyのコミッタ募集。

22

Page 23: 1000speakers:4 Jiemamy

ご清聴ありがとう ございました。

23