Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
都元ダイスケ Miyamoto
3,402 views
20120830 DBリファクタリング読書会第三回
Technology
◦
Read more
7
Save
Share
Embed
Embed presentation
Download
Downloaded 13 times
1
/ 39
2
/ 39
3
/ 39
4
/ 39
5
/ 39
6
/ 39
7
/ 39
8
/ 39
9
/ 39
10
/ 39
11
/ 39
12
/ 39
13
/ 39
14
/ 39
15
/ 39
16
/ 39
17
/ 39
18
/ 39
19
/ 39
20
/ 39
21
/ 39
22
/ 39
23
/ 39
24
/ 39
25
/ 39
26
/ 39
27
/ 39
28
/ 39
29
/ 39
30
/ 39
31
/ 39
32
/ 39
33
/ 39
34
/ 39
35
/ 39
36
/ 39
37
/ 39
38
/ 39
39
/ 39
More Related Content
PDF
Database smells
by
Mikiya Okuno
PPTX
第51回NDS PostgreSQLのデータ型 #nds51
by
civicpg
PDF
TypeScript 勉強会
by
Masahiro Wakame
PDF
あなたが知らない リレーショナルモデル
by
Mikiya Okuno
PPTX
第52回なんてかんたんなJavaEE
by
civicpg
PPTX
Analytics Environment
by
Yuu Kimy
ODP
これからはじめるための JavaScript 開発環境
by
Ryo Higashigawa
PDF
なぜ、いまリレーショナルモデルなのか
by
Mikiya Okuno
Database smells
by
Mikiya Okuno
第51回NDS PostgreSQLのデータ型 #nds51
by
civicpg
TypeScript 勉強会
by
Masahiro Wakame
あなたが知らない リレーショナルモデル
by
Mikiya Okuno
第52回なんてかんたんなJavaEE
by
civicpg
Analytics Environment
by
Yuu Kimy
これからはじめるための JavaScript 開発環境
by
Ryo Higashigawa
なぜ、いまリレーショナルモデルなのか
by
Mikiya Okuno
What's hot
PDF
Java8でRDBMS作ったよ
by
なおき きしだ
PDF
WebVR空間の巨大スクリーンでteratailを見れるか試してみた話
by
Yusaku Kinoshita
PDF
JavaScriptユーティリティライブラリの紹介
by
Yusuke Hirao
PDF
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
by
Yusaku Kinoshita
PDF
エンジニアじゃなくても 3Dゲームが3時間できた話。 ~three.jsで3D糸通しをつくってみた~
by
Yusaku Kinoshita
PDF
真にスレッドセーフなHash mapとは #渋谷java
by
Hiroyuki Ohnaka
PDF
MF GeeksNight pplogの話
by
Naoto Koshikawa
PDF
2010/11/16 WebプログラマのためのScala入門勉強会@渋谷
by
wpscala
PPT
Neo4j Profile Export/Import Tool
by
Masahiro Satake
KEY
春のJavaScript祭り
by
Masahiro Hata
PDF
これからはじめるひとのためのdev.mysql.com
by
yoku0825
PDF
IT業界における伝統芸能の継承 #hachiojipm
by
鉄次 尾形
PDF
EPIU
by
Makoto Yonezawa
PDF
クライアントサイドjavascript簡単紹介
by
しくみ製作所
PDF
名古屋Ruby会議02 LT:Ruby中級への道
by
Shigeru UCHIYAMA
PPTX
Sql world を支える技術
by
Oda Shinsuke
PDF
Dark vol4 for_slideshare
by
ara_ta3
PDF
MySQL Fabricつらい
by
yoku0825
PDF
SQL Server 2017 Machine Learning Services (CLR-H in TOKYO #13)
by
Tomoyuki Oota
PDF
MySQLの系譜について少々
by
yoku0825
Java8でRDBMS作ったよ
by
なおき きしだ
WebVR空間の巨大スクリーンでteratailを見れるか試してみた話
by
Yusaku Kinoshita
JavaScriptユーティリティライブラリの紹介
by
Yusuke Hirao
【非エンジニアが 「明日からDevRelやってよ」って 突然言われて1年半やってきたこと ~teratailのDevRel担当、ゼロからの奮闘記~ @a...
by
Yusaku Kinoshita
エンジニアじゃなくても 3Dゲームが3時間できた話。 ~three.jsで3D糸通しをつくってみた~
by
Yusaku Kinoshita
真にスレッドセーフなHash mapとは #渋谷java
by
Hiroyuki Ohnaka
MF GeeksNight pplogの話
by
Naoto Koshikawa
2010/11/16 WebプログラマのためのScala入門勉強会@渋谷
by
wpscala
Neo4j Profile Export/Import Tool
by
Masahiro Satake
春のJavaScript祭り
by
Masahiro Hata
これからはじめるひとのためのdev.mysql.com
by
yoku0825
IT業界における伝統芸能の継承 #hachiojipm
by
鉄次 尾形
EPIU
by
Makoto Yonezawa
クライアントサイドjavascript簡単紹介
by
しくみ製作所
名古屋Ruby会議02 LT:Ruby中級への道
by
Shigeru UCHIYAMA
Sql world を支える技術
by
Oda Shinsuke
Dark vol4 for_slideshare
by
ara_ta3
MySQL Fabricつらい
by
yoku0825
SQL Server 2017 Machine Learning Services (CLR-H in TOKYO #13)
by
Tomoyuki Oota
MySQLの系譜について少々
by
yoku0825
Viewers also liked
PDF
Datalogからsqlへの トランスレータを書いた話
by
Yuki Takeichi
PPTX
SQLチューニング入門 入門編
by
Miki Shimogai
PDF
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
by
kwatch
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
by
Miki Shimogai
PDF
あなたの知らないPostgreSQL監視の世界
by
Yoshinori Nakanishi
PDF
並列データベースシステムの概念と原理
by
Makoto Yui
PDF
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
by
Satoshi Yamada
PPTX
ならば(その弐)
by
Tomoaki Hiramoto
PDF
Lars George HBase Seminar with O'REILLY Oct.12 2012
by
Cloudera Japan
PPTX
Future of HCatalog - Hadoop Summit 2012
by
Hortonworks
KEY
Hadoop Summit 2012 - Hadoop and Vertica: The Data Analytics Platform at Twitter
by
Bill Graham
PDF
Cloudera Manager4.0とNameNode-HAセミナー資料
by
Cloudera Japan
PDF
【17-E-3】 オンライン機械学習で実現する大規模データ処理
by
Developers Summit
ODP
Data analytics with hadoop hive on multiple data centers
by
Hirotaka Niisato
PPTX
Writing Yarn Applications Hadoop Summit 2012
by
Hortonworks
Datalogからsqlへの トランスレータを書いた話
by
Yuki Takeichi
SQLチューニング入門 入門編
by
Miki Shimogai
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
by
kwatch
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
by
Miki Shimogai
あなたの知らないPostgreSQL監視の世界
by
Yoshinori Nakanishi
並列データベースシステムの概念と原理
by
Makoto Yui
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
by
Satoshi Yamada
ならば(その弐)
by
Tomoaki Hiramoto
Lars George HBase Seminar with O'REILLY Oct.12 2012
by
Cloudera Japan
Future of HCatalog - Hadoop Summit 2012
by
Hortonworks
Hadoop Summit 2012 - Hadoop and Vertica: The Data Analytics Platform at Twitter
by
Bill Graham
Cloudera Manager4.0とNameNode-HAセミナー資料
by
Cloudera Japan
【17-E-3】 オンライン機械学習で実現する大規模データ処理
by
Developers Summit
Data analytics with hadoop hive on multiple data centers
by
Hirotaka Niisato
Writing Yarn Applications Hadoop Summit 2012
by
Hortonworks
More from 都元ダイスケ Miyamoto
PDF
Single Command Deployのための gradle-aws-plugin講座
by
都元ダイスケ Miyamoto
PDF
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
by
都元ダイスケ Miyamoto
PDF
DevLOVE Beautiful Development - 第一幕 陽の巻
by
都元ダイスケ Miyamoto
PDF
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
by
都元ダイスケ Miyamoto
PDF
Spring Day 2016 - Web API アクセス制御の最適解
by
都元ダイスケ Miyamoto
PDF
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
by
都元ダイスケ Miyamoto
PDF
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
by
都元ダイスケ Miyamoto
PDF
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
by
都元ダイスケ Miyamoto
PDF
アプリケーション動作ログ、 ERRORで出すか? WARNで出すか? #cmdevio2019
by
都元ダイスケ Miyamoto
PDF
20121206 VOYAGE LT - 名前重要って言うけどさ
by
都元ダイスケ Miyamoto
PDF
20121215 DevLOVE2012 Mahout on AWS
by
都元ダイスケ Miyamoto
PDF
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
by
都元ダイスケ Miyamoto
PDF
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
by
都元ダイスケ Miyamoto
PDF
20130516 cm課外授業8-aws
by
都元ダイスケ Miyamoto
PDF
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
by
都元ダイスケ Miyamoto
PDF
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
by
都元ダイスケ Miyamoto
PDF
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
by
都元ダイスケ Miyamoto
PDF
マイクロWebアプリケーション - Developers.IO 2016
by
都元ダイスケ Miyamoto
PDF
AWSクラウドデータストレージ総論
by
都元ダイスケ Miyamoto
PDF
20170312 F.K様向け ライフパートナーM.M様のご提案
by
都元ダイスケ Miyamoto
Single Command Deployのための gradle-aws-plugin講座
by
都元ダイスケ Miyamoto
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
by
都元ダイスケ Miyamoto
DevLOVE Beautiful Development - 第一幕 陽の巻
by
都元ダイスケ Miyamoto
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
by
都元ダイスケ Miyamoto
Spring Day 2016 - Web API アクセス制御の最適解
by
都元ダイスケ Miyamoto
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
by
都元ダイスケ Miyamoto
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
by
都元ダイスケ Miyamoto
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
by
都元ダイスケ Miyamoto
アプリケーション動作ログ、 ERRORで出すか? WARNで出すか? #cmdevio2019
by
都元ダイスケ Miyamoto
20121206 VOYAGE LT - 名前重要って言うけどさ
by
都元ダイスケ Miyamoto
20121215 DevLOVE2012 Mahout on AWS
by
都元ダイスケ Miyamoto
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
by
都元ダイスケ Miyamoto
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
by
都元ダイスケ Miyamoto
20130516 cm課外授業8-aws
by
都元ダイスケ Miyamoto
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
by
都元ダイスケ Miyamoto
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
by
都元ダイスケ Miyamoto
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
by
都元ダイスケ Miyamoto
マイクロWebアプリケーション - Developers.IO 2016
by
都元ダイスケ Miyamoto
AWSクラウドデータストレージ総論
by
都元ダイスケ Miyamoto
20170312 F.K様向け ライフパートナーM.M様のご提案
by
都元ダイスケ Miyamoto
20120830 DBリファクタリング読書会第三回
1.
第三回 DBリファクタリング 読書会 都元ダイスケ 2012-08-30
2.
自己紹介 • 都元ダイスケ (@daisuke_m) •
Java屋です • java-jaから来ま(ry Java オブジェクト指向 Eclipse 恭ライセンス 薬 Mahout Spring XML Jiemamy DDD HadoopOSGi Haskell Scala Maven Wicket AWS 酒
3.
works • @IT Database
Expert 2008年9月 • 日経ソフトウエア • Java入門記事 • Eclipse記事
4.
• というOSSプロダクトを作っていま(す|した) • 2006年頃から…。 •
軽い気持ちで始めたら、重いテーマだった。 • 正直、欲張り過ぎて手どころか頭も回らな くなったプロダクトがこちらになります。
5.
• 正直、本当に頭がまわらくなっている ので、今日の話も多少混乱しますw • この話をベースに、ディスカッションで きれば有意義だよね、と思って話をし ます。
6.
今日のポイント • Jiemamyで実現したいこと • ひとまず実現できたこと 実現できそうなこと •
実現に際して大きな困難が伴うこと • Jiemamyが止まってしまったその他の理由
7.
DBの 進化的設計 Evolutional Database Design —
Martin Fowler and Pramod Sadalage, 2003 http://www.objectclub.jp/community /XP-jp/xp_relate/evodb-jp データベース リファクタリング
8.
データベース リファクタリング ごめんなさい なぜか 読んだ内容を 全く覚えておりません
9.
Evolutional DB Design •
実装前に設計を確定させるのは、もは や不可能(→アジャイル) • DBの設計に関しても同様で、リファク タリングを適用したい • しかし、DBはアーキテクチャの低層に 位置しているため、被依存度が高く、 変更しづらい • どーする?
10.
not only refactoring •
DB変更はrefactoringだけではない • テーブルやカラムの追加や削除 • 開発中のDBの変更履歴・構成管理
11.
あらためてJiemamy • DB構成情報を1つに集約 (smart
model) 「重要なことはファイルを扱うようにデータベースを扱えるツールを持つことだ。」 「スキーマとテストデータから成るデータベース」 • データファイルをVCS管理 (smart version control) 「マスターデータベースをソースコードと同様に構成管理の下に置くのである。」 「全システムを管理する強力な構成管理ツールの下にあれば、もし最悪の事態が起こっても元に戻すのは難 しいことではない。」 • ビルドフェーズでDB整備 (smart build) 「すべての開発者のデータベースに変更を自動的に適用する」 ∼ツール面からDBの進化的設計をサポート∼
12.
進化的設計 Smart Version Control Smart Model Smart Build
13.
smart model • DBの構成情報を知っている唯一の存在 •
この情報を元に、派生データを作る • DDL / テストデータDML • DB設計書 • ER図 • データアクセスコード(エンティティ等)
14.
database tablecolumn Java object SQL Excel class
15.
smart version control class
Emp { String name; Busyo busyo; } class Busyo { String name; // ... } class Dept { String name; // ... } class Emp { String name; Dept dept; }
16.
smart version control CREATE
TABLE HOGE ( ID integer ... ); @Table("HOGE") class Foo { // ... } @Table("FOO") class Foo { // ... } CREATE TABLE FOO ( ID integer ... ); 要は、チェンジセットを意識しなさいって話
17.
smart build • 一般的に、プロダクトをVCSからcoして きてもすぐに動かせない •
DB環境の整備が必要 • ビルドフェーズでDB整備 • Mavenプラグイン
18.
smart deploy? • デプロイ時に、自動的にDB変更 •
ServletContextListener • ちょっと恐い → どうすればいい?
19.
設計にあたって • データファイルはVCSにコ ミットしてdiff /
mergeできる べき(バイナリ不可) • データファイルからDB環境 を自動構築できるべき • スキーマだけではなく、テス トデータも管理できるべき • 多くのRDBMSで使えるべき • 外部システムがこのデータを 利用できるように、安定して 使いやすいAPIを提供すべき • DB変更内容を検知し、 ALTER文等にマッピングでき るべき • データアクセスコードもリファ クタリングに追従すべき
20.
Jiemamy components jiemamy-core jiemamy-commons apache commons jiemamy
eclipse plugin maven-jiemamy-plugin jiemamy-diagram jiemamy-sql DiagramEditor TableView DbObjectEditPart ExecuteMojo JmDiagram JmNode / JmConnection SqlStatement Token JmTable / JmView JmColumn JmForeignKeyConstraint SqlExecutor / UUIDProvider woodstox XMLInputFactory XMLValidationSchema UI Application Domain Infrastructure
21.
実現できたこと 実現できそうなこと
22.
diffとmergeが可能 • データ形式にXMLを採用 • きちんと整形し、diff
/ mergeに対応 • 手で編集する以上、補完も必要
23.
XML Schema
24.
API提供 •Jiemamyモデルを自由に操作できる database tablecolumn Javaコードから操作 Java object SQL
25.
diffモデル • 2つのDB状態を compare/diff
して、 DB変更モデルを作る • 変更モデルがALTER文にマッピング でも実際、diff のアルゴリズムは大変です。
26.
リファクタリング自動化 • テーブル名・カラム名を変更した時 • テストデータのDMLも変更
→ OK • データアクセスコードを変更 @Table("FOO") class Foo { // ... } @Table("BAR") class Foo { // ... } でも実際、Eclipseのコード書くのは大変です。
27.
困難なこと
28.
保存形式互換の維持 • 新機能追加したい • XMLの保存形式を変えると前のデータ が死ぬ •
Jiemamyデータ構造の進化的設計orz
29.
API互換性の維持 • 現段階であんまり気にすべきではない
30.
マルチDB対応 • RDBMSの種類は多い • MySQL,
PostgreSQL, H2, Oracle... • そして各々のSQL文法がフリーダム過ぎ
31.
自動変更追尾 • 破壊的変更時… • データアクセスコードを変更 •
データ移行 1:1 → 1:多 nullable → NOT NULL テーブル分割
32.
変更管理場所 • スナップショットのタイミング • VCS管理
v.s. データファイル内管理 (コミット v.s. ツール上での操作) • 逆方向の変更も自動化
33.
diffとmergeの現実 • XMLの冗長性が高過ぎるからか、diffが 上手く同期してくれない…
34.
...コノヤロウ
35.
Jiemamyが止まってしまっ た その他の理由
36.
敗因: 不信と過信 • 静的型付けへの過信 •
API利用者に対する不信 • APIの過度なフールプルーフ
37.
敗因: OOによる再利用の幻想 • データ保存形式(XML)の互換維持が重い •
拡張性のあるデータ形式 / API • オブジェクト指向の過信 • APIの過度な汎用化(外でも使おうとした) • 無駄に多くのコンポーネントに切り分け過ぎ た
38.
敗因:Webとは違う • DDDを適用した • が、Repositoryパターンは無理w
39.
Discussion
Download