DDDにおいてRDBMSとのインピーダンスミスマッチをどう扱うべきか? - Togetter
Twitterのつぶやきマッシュアップメディア!
@togetter_jpをフォロー
マイページ
メニュー
設定
ログイン
トップ
ニュース
社会
地域
芸能・スポーツ
IT・Web
科学・教養
カルチャー
趣味
生活
仕事
ネタ・お笑い
ログ・日記
震災
311
大喜利
国会事故調
支援物資
東電
物資
中国
速報
国内
アジア
アメリカ
ヨーロッパ
その他
政治
経済
国際
法律
環境
コラム
東京
東京近郊
北海道
東北
関東
北陸・信越
東海
近畿
中国・四国
九州・沖縄
海外
芸能
テレビ
ラジオ
野球
サッカー
ゴルフ
格闘技
競馬
モータースポーツ
その他
Android
Apple
インターネット
パソコン
モバイル
ガジェット
サイト制作
プログラミング
その他
科学
テクノロジー
エネルギー
数学
物理
宇宙
自然
人文
建築
心理
その他
アニメ
ゲーム
マンガ
アイドル
映画
音楽
書籍
演劇
ファッション
社会学
カメラ
車・バイク
電車
旅行
釣り
歴史
アート
デザイン
動物
その他
ハウツー
レシピ
グルメ
恋愛
マネー
節約
健康・医療
教育
ペット
起業・ベンチャー
経営
マーケティング
会計・人事
法務
就職・転職
語学・資格
ネタ
お笑い
大喜利
画像・動画
やってみた
その他
ログ
日記
思い出
雑談
メモ
飲み会
議事録
イベント
セミナー
復興
原発
支援
政府
自治体
トップ
>
IT・Web
> DDDにおいてRDBMSとのインピーダンスミス..
2011/04/30 21:58:04
IT・Web
編集可能
ddd
オブジェクト指向
+
DDDにおいてRDBMSとのインピーダンスミスマッチをどう扱うべきか?
DDDにおいては、ドメイン層をできる限り他のレイヤーと分離すべきというフォースと、実装とモデルを密接に結びつけるべきという一見対立するフォースが存在します。RDBMSとのインピーダンスミスマッチの問題も、実際の開発では必ずと言っていいほど問題となるものです。
by
ryoasai74
6 fav
1784 view
Fav
6
お気に入りに登録ならここをクリック!
まとめ
メニューを開く
一括削除
なるほど。P157「一般的に言えることだが、使っているフレームワークとは争わないこと。フレームワークと対立してしまった時には、ドメイン駆動設計の基本を保ちながら、詳細は捨て去る方法を模索すること。」
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 20:20:19
P160「データベースをオブジェクトの格納先として見る場合には、マッピングツールの能力に関わらず、データモデルとオブジェクトモデルをかけ離れたものにしてはならない。」これは読み落としてはならないことですね。モデルと実装を結びつけ、無駄な間接層による複雑さを避けるべき。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:01:35
だから、レガシーDBの制約がなくスキーマを自由に定義できる場合は、たとえば、JPAのエンティティでそのままドメイン層をマップするようなシンプルな設計を心がけるべきかと思います。JPAをドメイン層で使わないという意見もありますが、時としてYAGNIの臭いも感じる。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:04:01
@ryoasai74
なかなか解釈は難しいところで、ドメインオブジェクト(実際はグローバルな識別子を持つエンティティ)はテーブルと現実的に対応づくというイメージです。それからかけ離れると現実的ではないないという解釈。トランザクション境界も集約単位という理解ですね。
#DDDjp
返信する
RTする
ふぁぼる
j5ik2o
2011/04/30 21:06:43
@j5ik2o
DDDの本だと、時代からおそらくEJBを念頭においているところがあるのですが、DDDをどのように実装するかは使用する技術やDBの制約(占有か共有されるレガシーか)といった要素を考慮し、適切にマッピングする必要があるのかと解釈しました。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:11:21
@ryoasai74
一番悩ましい話題ですね。JPAをドメイン層に使うとやはりRDBMSの関心事がドメイン層に入ってくる経験が多いです。綺麗にレイヤー分けできないという経験です。どこまでこだわるかですが、そこのマッピングが一番難易度が高いですね。
#DDDjp
返信する
RTする
ふぁぼる
j5ik2o
2011/04/30 21:11:34
@j5ik2o
P160の記述で「関係モデルと近づけておくため、オブジェクトの関係性が持つ豊かさを若干犠牲にすること。」という記述もありますね。この辺りが実践的モデラーらしさというかあるべきモデルを押し付ける原理主義的な方法論と違っているのかなと思います。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:14:23
JPAのアノテーションを使うとドメインオブジェクトっぽくモデリングできてDBMSの型の影響も受けにくいのですが、しかし全く影響を受けないということはなく、純粋なドメインオブジェクトを構築するのに両方のことを考える苦労が大変なんですよね。
#DDDjp
返信する
RTする
ふぁぼる
j5ik2o
2011/04/30 21:14:34
だから、プレーンなJavaだけで表現できるドメイン層と(インフラ層の中の)JPA層を分けていましたね。
#DDDjp
返信する
RTする
ふぁぼる
j5ik2o
2011/04/30 21:15:02
実際、私がずっと前に経験したプロジェクトでEJBとレガシーDBを使っているプロジェクトがあったのですが、あるアーキテクトがテーブルモデルとドメインモデルを明確に分けるべきと主張して、エンティティそのものを素直にマップするという私の意見と対立したことがあります。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:16:01
確かに複雑なオートバイの部品表を扱うドメインでOODBSを採用するという案もあったくらいなので、RDBMSを利用するということ自体が技術的には問題があったのかもしれません。ただO/RマップのレイヤとPOJOのレイヤの変換だけで大部分の工数を割くということになりました。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:18:20
@ryoasai74
ドメイン層とテーブル層のインピーダンスミスマッチをなるべく少なくすることも考えられるという捉え方しました。いずれにしても、レイヤーを混同しないでマッピングする方法があればよいと思います。
#DDDjp
返信する
RTする
ふぁぼる
j5ik2o
2011/04/30 21:19:35
そのプロジェクトでは部品の複雑な階層をたどることは本質的でなく、図面のCRUDができることが本質的だったのです。だから、無駄な苦労をかけたのに性能も悲惨になってしまった。素直にDBに近い設計で良かったのではと思っているのです。エヴァンスの経験談にも似た話がありますね。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:22:02
そもそもレイヤーが違うことでモデルの意図が違うのだから分けるという方針ですね。
@daisuke_m
の名エントリ
http://bit.ly/kOnpYl
まぁ、本質は関心事の分離ができればいいので、他によい方法があればいいと思います。
#DDDjp
返信する
RTする
ふぁぼる
j5ik2o
2011/04/30 21:24:18
@j5ik2o
いずれにしても、現状のSI案件では大部分RDBMSを採用することがが一般的という事実を考えて上でそのインピーダンスミスマッチにどのように対処していくべきかの実践的、かつ、バランスのよい解決策が求められると思います。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:25:05
@j5ik2o
「データベースをオブジェクトの格納先として見る」ことができるかどうかという点も考慮すべきなのでしょうね。一般的にはそのような幸運に恵まれないので、面倒でも間接層を設けなくてはならないことが往々にしてあるのでしょう。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:28:56
Seasarでは、S2Dxoを使って UI層のフォーム情報を持つDTOとエンティティを相互に変換するという方法を取っています。これは結構 現実的で成功しているモデルですね。
#DDDjp
返信する
RTする
ふぁぼる
j5ik2o
2011/04/30 21:29:03
@j5ik2o
逆にSeamの思想ではエンティティがPojoとしてフォームから永続化まで一貫して使用され、途中でDTOによる無駄な詰め替えを避けるという考え方をしますね。多くの場合これも極端な例ですが。Gavinはできるだけ間接層を少なくするのが好きみたいです。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:31:59
@ryoasai74
この辺りの話題がDDDを実践する上で壁になることは間違いないでしょうね。実装の具体例については本書の範囲外でしょうが、そこを考えないわけにいかないということですね。みなさんで議論できるといいですね。
#DDDjp
返信する
RTする
ふぁぼる
j5ik2o
2011/04/30 21:32:35
@j5ik2o
そうですね。DDDは実装とモデルの結びつきが重要と言っているのですが、publishされている実例がまだまだ少ないのが問題な気がします。このあたりの事例を研究していく必要があると思います。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:34:25
@ryoasai74
ドメイン層の立場から見ると、それが一番よいですね。そう考えると、NoSQLとかはマッピングしやすいのでしょうが、日常的にはRDBMSですからねw 何かしらFWで吸収されるとよいですね。
#DDDjp
返信する
RTする
ふぁぼる
j5ik2o
2011/04/30 21:34:32
@j5ik2o
少なくとも、DDDの原書が書かれた時代と比べてO/Rマッピングは無料で利用できる空気のような存在になっているし、FWの透過性も格段に進化してきているとは思います。今後もさらに研究されていくのでしょう。FWが進化すればあとはモデル化の技術のみが残ります。
#DDDjp
返信する
RTする
ふぁぼる
ryoasai74
2011/04/30 21:37:50
@ryoasai74
DBの制約が大きいRDB上ではJPAのエンティティをそのままドメインのエンティティとするのに賛成です。ただ、逆にテーブル設計にモデリングが引きずられることもあり、どちらがよいかと言われれば性能が出る方針を、という感じではあります。
返信する
RTする
ふぁぼる
bohnen
2011/04/30 21:49:02
人間とシステムの実行モデルが明らかに異なることから、システムに人を合わせるか、人にシステムを合わせるかと言う選択が生じる。エンドユーザーは明らかに後者だが、開発者はどちらなのか。
返信する
RTする
ふぁぼる
bohnen
2011/04/30 22:04:26
僕は先生から "somewhere in the middle" だと教わりました。だから設計は難しい、とも。あとは、「bestはない。betterしかない」とも。
返信する
RTする
ふぁぼる
bohnen
2011/04/30 22:08:50
Content from Twitter
残りを読む(3)
ブログへ
iframe版
拡張版
張付けプレビュー
Fav
6
あわせて読みたい
地域、通貨は値オブジェクトかエンティティか?
RESTのインピーダンスミスマッチ
第7回DDD勉強会in仙台
コンテンツのインピーダンスを考える
まとめ: オブジェクト指向について
powered by Preferred Infrastructure
コメント
コメントを入力してください。
Twitterにも投稿する
みんなのおすすめ商品
商品を編集
おすすめ商品を登録する
設定を変更する
まとめを作成する
プロフィール
フォローする
会社で職業プログラマーをしています。
ryoasai74
link
twitter
rss
javaee
プログラミング
java
フォローされている
9
アップデート
まとめ
23
259
SIerは自動化する対象が違っているのでは?
111
お勧めのJavaの入門書と習得に要する時間について
210
いまだにSE・PGな発想から抜け出せないSI業界?
お気に入り
29
コメント
9
新着のまとめ
河本準一、妻の母も生活保護を受給!
new
5/30の(*´ェ`*)ポッ(*´ェ`*)ホ..
new
#g1983 ユースト1983 No.348 ..
new
生活保護をめぐるクネクネ
new
恥と気高さ
new
もっと見る
@togetter_jp
最近追加された商品
生活保護は最低生活をどう構想したか―保護基準と実施要領の歴史分析 (現代社会政策のフロンティア)
おっ!サンの告白。
氷菓 (角川文庫)
だいじょうぶ3組
緒方貞子 ―難民支援の現場から (集英社新書)
オススメ
マイスター
トゥギャ通
中核派が北九州瓦礫受け入れ妨害行為への関与を宣言
報道ステーション東電福島第一原発4号機危険性に..
毎日新聞スクープ"核燃サイクル「秘密会議」"に..
埼玉南部の奴らがみた変な虹の写真まとめ
up
『私がグーグルマップとフォトショップを使って「..
チェルノブイリの被災者
もっと見る
河本準一、妻の母も生活保護を受給!
new
恥と気高さ
new
クローズアップ現代「フィルム映画の灯を守りたい..
new
茂木健一郎(@kenichiromogi)さん..
new
袁紹の用兵の才能と分かり易い『官渡の戦い』
new
タイバニ当落メールが遅い理由を考えてみた まとめ
new
もっと見る
第80回「日食写真と昭和格差」
号外「みんなの金環日食まとめ―画像から教養ま..
第79回「虚構新聞とJリーグ」
第78回「コンプガチャとIT系かあちゃん」
第77回「びろーんと自宅警備隊」
第76回「Appleとパンツクッキー」
もっと見る
コメント