36
Smart! Jiemamy DBの構成管理 都元ダイスケ 2009.06.13 Seasar Conference 2009 Spring

Seasar Conference 2009 Spring - Jiemamy

  • Upload
    -

  • View
    500

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Seasar Conference 2009 Spring - Jiemamy

Smart! JiemamyDBの構成管理

都元ダイスケ2009.06.13

Seasar Conference 2009 Spring

Page 2: Seasar Conference 2009 Spring - Jiemamy

自己紹介

•都元ダイスケ (id:daisuke-m)

•http://friendfeed.com/dai0304

•Jiemamy Projectチーフコミッタ

Seasar Conference 2009 Spring

Page 3: Seasar Conference 2009 Spring - Jiemamy

Activity

•Seasar Conference

•2009 White - DIことはじめ•2008 Autumn - Jiemamy

•java-jaに出没したり

•都元ダイスケ IT-PRESS

•@IT - DBもアジャイル開発に対応したい!

Seasar Conference 2009 Spring

Page 4: Seasar Conference 2009 Spring - Jiemamy

Activity

Seasar Conference 2009 Spring

Page 5: Seasar Conference 2009 Spring - Jiemamy

Agenda

•Jiemamyについて

•Jiemamy開発モデル

•Jiemamyモデルエディタ

•Jiemamy APIのご紹介

•その他

Seasar Conference 2009 Spring

Page 6: Seasar Conference 2009 Spring - Jiemamy

Seasar Conference 2009 Spring

って何さ。

Page 7: Seasar Conference 2009 Spring - Jiemamy

モデリングツール?

Seasar Conference 2009 Spring

Page 8: Seasar Conference 2009 Spring - Jiemamy

モデリングツール?NO!

Seasar Conference 2009 Spring

Page 9: Seasar Conference 2009 Spring - Jiemamy

開発モデルは

Seasar Conference 2009 Spring

Page 10: Seasar Conference 2009 Spring - Jiemamy

•目指すはDBの進化的設計•それを補助するツール•Jiemamyモデルエディタ

•maven plugin, その他(いろいろ企画中)

•副産物的に出来たAPI公開

Seasar Conference 2009 Spring

Page 11: Seasar Conference 2009 Spring - Jiemamy

DBの進化的設計•Evolutional Database Design

— Martin Fowler, 2003DB設計も早い時期にフリーズできない → 進化を前提にした設計をしよう

DB構成情報はスキーマだけではない → データも重要な管理対象である

計画的設計

Seasar Conference 2009 Spring

Page 12: Seasar Conference 2009 Spring - Jiemamy

進化的設計SmartVersionControl

SmartModel

SmartBuild

Seasar Conference 2009 Spring

Page 13: Seasar Conference 2009 Spring - Jiemamy

Smart Build

A

Seasar Conference 2009 Spring

Page 14: Seasar Conference 2009 Spring - Jiemamy

従来の問題点•WebアプリがSVNに置いてある。このアプリを無事に起動できますか?

�� のインストール

DBの設定整備

スキーマ構築

アプリケーションに対するDB情報の

設定

ドキュメントがない or よくわからない

手順はどこに書いてあるの?

Seasar Conference 2009 Spring

Page 15: Seasar Conference 2009 Spring - Jiemamy

Maven•Apacheによる、ビルドツール

•coしたらpom.xmlがあるディレクトリで

"mvn package"コマンド実行

•プロジェクト構成・ビルド手順の標準化

スマート・ビルドSeasar Conference 2009 Spring

Page 16: Seasar Conference 2009 Spring - Jiemamy

SmartVersion Control

B

Seasar Conference 2009 Spring

Page 17: Seasar Conference 2009 Spring - Jiemamy

構成の同期•各アプリケーションのrevisionには対応するDB構成がある

•アプリだけ過去に戻せても全く意味がない

•全てのリビジョンを、後から呼び出して動かせるように

アプリケーション

アプリケーション

アプリケーション

アプリケーション

DB構成

DB構成

DB構成

rev1000

rev1001

rev1002

rev1003

rev1004

rev1005

アプリケーション

DB構成

Seasar Conference 2009 Spring

Page 18: Seasar Conference 2009 Spring - Jiemamy

Smart Model

C

Seasar Conference 2009 Spring

Page 19: Seasar Conference 2009 Spring - Jiemamy

DRY原則

•情報の重複を防ぐ考え方•情報の重複は...

•変更の困難さが増大•透明性を低下•不一致(不整合)の可能性が増大

Don't Repeat Yourself.

Seasar Conference 2009 Spring

Page 20: Seasar Conference 2009 Spring - Jiemamy

DB構成情報の種類• DB初期化の為の情報

•データ重要! 実体(テーブル)

1

関連(外部キー)

2データ

3

 きちんと管理できていますか?

P

Seasar Conference 2009 Spring

Page 21: Seasar Conference 2009 Spring - Jiemamy

開発フェーズ

ビルドフェーズ

DBモデリング

プログラミング

構成管理

コミット

チェックアウト

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

DBServer

SQL Repo-sitory

Source Package AppServer

Seasar Conference 2009 Spring

Page 22: Seasar Conference 2009 Spring - Jiemamy

DB構成情報•具体的に何を管理する?

SQLファイル

ER図データ(バイナリ)

…両方?

アプリケーション

アプリケーション

アプリケーション

アプリケーション

rev1000

rev1001

rev1002

rev1003

rev1004

rev1005

アプリケーション

DB構成

DB構成

DB構成

DB構成DRY違反

スマートビルド妨害

編集困難

Seasar Conference 2009 Spring

Page 23: Seasar Conference 2009 Spring - Jiemamy

JiemamyModel

DBServer

SQLSQL Repo-sitory

Source Package AppServer

開発フェーズ

ビルドフェーズ

DBモデリング

プログラミング

構成管理

コミット

チェックアウト

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

Seasar Conference 2009 Spring

Page 24: Seasar Conference 2009 Spring - Jiemamy

補助ツールJiemamyモデルエディタ

Seasar Conference 2009 Spring

Page 25: Seasar Conference 2009 Spring - Jiemamy

Jiemamyモデルエディタ

•よくあるER図エディタ

•AmaterasERD, Clay, DBDesigner4,

ERWin, SI Object Browser, JUDE...

•Jiemamy開発モデルを補助するツール

Seasar Conference 2009 Spring

Page 26: Seasar Conference 2009 Spring - Jiemamy

DemoSeasar Conference 2009 Spring

せっかくなので

Page 27: Seasar Conference 2009 Spring - Jiemamy

Jiemamy API

Seasar Conference 2009 Spring

Page 28: Seasar Conference 2009 Spring - Jiemamy

Jiemamy Model/API•データファイルの保存形式はXML

database

tablecolumn

SQL

Javaコードから操作

Seasar Conference 2009 Spring

Page 29: Seasar Conference 2009 Spring - Jiemamy

XML → Java model

•Jiemamyインスタンスを作って

•シリアライザを取得して•InputStreamから読み込む

Seasar Conference 2009 Spring

Page 30: Seasar Conference 2009 Spring - Jiemamy

Java model → XML

•同じくJiemamySerializerを使って

•OutputStreamに書き出す

Seasar Conference 2009 Spring

Page 31: Seasar Conference 2009 Spring - Jiemamy

Java model → SQL

•SqlExporterをnewして

•設定オブジェクトを作って•exportModelする

Seasar Conference 2009 Spring

Page 32: Seasar Conference 2009 Spring - Jiemamy

実DB → Java model

•DatabaseImporterをnewして

•同じように設定オブジェクト作って•importModelする

Seasar Conference 2009 Spring

Page 33: Seasar Conference 2009 Spring - Jiemamy

Javadoc完備!

Seasar Conference 2009 Spring

Page 34: Seasar Conference 2009 Spring - Jiemamy

これ使ったら•色々面白い事できそうじゃないですか?•起動時に(ServletFilter辺りを使って)

自動でDB整備するWebアプリとか

•動的にテーブルをCREATE/DROPする

Webアプリとか

Seasar Conference 2009 Spring

Page 35: Seasar Conference 2009 Spring - Jiemamy

地豆も進化を続けます

•Jiemamyでアプリの進化的設計を。

•そしてJiemamyも進化します。

•まだ実装したい機能いっぱい。•今後ともよろしくお願いします。

Seasar Conference 2009 Spring

Page 36: Seasar Conference 2009 Spring - Jiemamy

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

Seasar Conference 2009 Spring