Skip to main content
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
EN
Upload
Download free for 30 days
Sign in
Uploaded by
Mikiya Okuno
22,500 views
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
理論から学ぶデータベース実践入門読書会スペシャルで発表した資料です。
Software
◦
Read more
52
Save
Share
Embed
Save to Drive
Download now
Downloaded 90 times
1
/ 59
2
/ 59
Most read
3
/ 59
Most read
4
/ 59
5
/ 59
6
/ 59
7
/ 59
8
/ 59
9
/ 59
10
/ 59
11
/ 59
12
/ 59
13
/ 59
14
/ 59
15
/ 59
16
/ 59
17
/ 59
18
/ 59
19
/ 59
Most read
20
/ 59
More Related Content
PDF
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
28 slides
29.1K views
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
by
Takuto Wada
89 slides
74.2K views
PDF
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
16 slides
40.7K views
PDF
PostgreSQLアンチパターン
by
Soudai Sone
196 slides
51.9K views
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
45 slides
174.5K views
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
by
Yoshitaka Kawashima
23 slides
9.9K views
PDF
例外設計における大罪
by
Takuto Wada
37 slides
76.8K views
PDF
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
24 slides
197.1K views
イミュータブルデータモデルの極意
by
Yoshitaka Kawashima
28 slides
29.1K views
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
by
Takuto Wada
89 slides
74.2K views
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
16 slides
40.7K views
PostgreSQLアンチパターン
by
Soudai Sone
196 slides
51.9K views
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
45 slides
174.5K views
強いて言えば「集約どう実装するのかな、を考える」な話
by
Yoshitaka Kawashima
23 slides
9.9K views
例外設計における大罪
by
Takuto Wada
37 slides
76.8K views
イミュータブルデータモデル(入門編)
by
Yoshitaka Kawashima
24 slides
197.1K views
What's hot
PDF
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
76 slides
105.9K views
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
by
Miki Shimogai
88 slides
130.1K views
PDF
リレーショナルな正しいデータベース設計
by
Mikiya Okuno
114 slides
20.7K views
PDF
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
89 slides
49.3K views
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
60 slides
44.8K views
PPTX
DockerコンテナでGitを使う
by
Kazuhiro Suga
8 slides
21.3K views
PDF
ドメイン駆動設計 失敗したことと成功したこと
by
BIGLOBE Inc.
45 slides
24.6K views
PDF
ドメイン駆動で開発する ラフスケッチから実装まで
by
増田 亨
103 slides
16.2K views
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
by
Koichiro Matsuoka
65 slides
51.4K views
PDF
開発速度が速い #とは(LayerX社内資料)
by
mosa siru
18 slides
71.3K views
PDF
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
47 slides
39.2K views
PDF
MySQLで論理削除と正しく付き合う方法
by
yoku0825
34 slides
81.4K views
PDF
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
41 slides
32.5K views
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
96 slides
37.4K views
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
89 slides
110K views
PDF
オブジェクト指向できていますか?
by
Moriharu Ohzu
129 slides
243.1K views
PDF
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
85 slides
60.9K views
PDF
TLS, HTTP/2演習
by
shigeki_ohtsu
129 slides
14.5K views
PPTX
async/await のしくみ
by
信之 岩永
41 slides
20.9K views
KEY
やはりお前らのMVCは間違っている
by
Koichi Tanaka
66 slides
153.6K views
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
76 slides
105.9K views
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
by
Miki Shimogai
88 slides
130.1K views
リレーショナルな正しいデータベース設計
by
Mikiya Okuno
114 slides
20.7K views
ドメイン駆動設計のためのオブジェクト指向入門
by
増田 亨
89 slides
49.3K views
マイクロサービス 4つの分割アプローチ
by
増田 亨
60 slides
44.8K views
DockerコンテナでGitを使う
by
Kazuhiro Suga
8 slides
21.3K views
ドメイン駆動設計 失敗したことと成功したこと
by
BIGLOBE Inc.
45 slides
24.6K views
ドメイン駆動で開発する ラフスケッチから実装まで
by
増田 亨
103 slides
16.2K views
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
by
Koichiro Matsuoka
65 slides
51.4K views
開発速度が速い #とは(LayerX社内資料)
by
mosa siru
18 slides
71.3K views
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
47 slides
39.2K views
MySQLで論理削除と正しく付き合う方法
by
yoku0825
34 slides
81.4K views
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
41 slides
32.5K views
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
96 slides
37.4K views
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
by
Koichiro Matsuoka
89 slides
110K views
オブジェクト指向できていますか?
by
Moriharu Ohzu
129 slides
243.1K views
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
85 slides
60.9K views
TLS, HTTP/2演習
by
shigeki_ohtsu
129 slides
14.5K views
async/await のしくみ
by
信之 岩永
41 slides
20.9K views
やはりお前らのMVCは間違っている
by
Koichi Tanaka
66 slides
153.6K views
Viewers also liked
PDF
データベース設計徹底指南
by
Mikiya Okuno
132 slides
115.5K views
PDF
データベース実践入門読書会スペシャル #nseg
by
ko ty
10 slides
1.9K views
PDF
「データベース実践入門」から学ぶリレーショナルモデル
by
Sota Sugiura
120 slides
2.4K views
PDF
なぜプレゼンテーション読書会か
by
Naoki Sugiura
13 slides
1.2K views
ODP
集合演算を真っ向から否定するアレの話
by
Kouhei Aoyagi
38 slides
2.1K views
PPTX
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
by
Hironori Miura
32 slides
5.8K views
PDF
NULLとの戦い RDBMS実装編
by
Meiji Kimura
18 slides
3.1K views
PDF
なぜ、いまリレーショナルモデルなのか
by
Mikiya Okuno
56 slides
5.3K views
PDF
Datalogからsqlへの トランスレータを書いた話
by
Yuki Takeichi
11 slides
2.4K views
PPTX
ならば(その弐)
by
Tomoaki Hiramoto
17 slides
1.6K views
データベース設計徹底指南
by
Mikiya Okuno
132 slides
115.5K views
データベース実践入門読書会スペシャル #nseg
by
ko ty
10 slides
1.9K views
「データベース実践入門」から学ぶリレーショナルモデル
by
Sota Sugiura
120 slides
2.4K views
なぜプレゼンテーション読書会か
by
Naoki Sugiura
13 slides
1.2K views
集合演算を真っ向から否定するアレの話
by
Kouhei Aoyagi
38 slides
2.1K views
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
by
Hironori Miura
32 slides
5.8K views
NULLとの戦い RDBMS実装編
by
Meiji Kimura
18 slides
3.1K views
なぜ、いまリレーショナルモデルなのか
by
Mikiya Okuno
56 slides
5.3K views
Datalogからsqlへの トランスレータを書いた話
by
Yuki Takeichi
11 slides
2.4K views
ならば(その弐)
by
Tomoaki Hiramoto
17 slides
1.6K views
Similar to なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PDF
あなたが知らない リレーショナルモデル
by
Mikiya Okuno
68 slides
31.8K views
PDF
Rdbms qpstudy-okuno
by
Mikiya Okuno
98 slides
11.2K views
PDF
Database smells
by
Mikiya Okuno
32 slides
4.9K views
PDF
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
by
Mikiya Okuno
37 slides
131.1K views
PDF
リレーショナルデータベースとの上手な付き合い方 long version
by
Mikiya Okuno
74 slides
18.5K views
PPTX
SQLアンチパターン メンター用資料
by
Hironori Miura
109 slides
15.2K views
PDF
リレーショナルデータベースとの上手な付き合い方
by
Mikiya Okuno
39 slides
18.8K views
PPTX
データベース入門
by
Taku Kobayashi
35 slides
3.9K views
PDF
データベース技術について
by
yuu1988
8 slides
420 views
PDF
[db tech showcase Tokyo 2015] A27: RDBエンジニアの為のNOSQL, 今どうしてNOSQLなのか?
by
datastaxjp
23 slides
5.9K views
PDF
Sql勉強会用_1
by
Ken Hayashima
28 slides
180 views
PDF
Not only sql _ 新卒エンジニア勉強会20130417
by
エンジニア勉強会 エスキュービズム
84 slides
1.4K views
PPTX
ならば
by
Tomoaki Hiramoto
17 slides
1.3K views
あなたが知らない リレーショナルモデル
by
Mikiya Okuno
68 slides
31.8K views
Rdbms qpstudy-okuno
by
Mikiya Okuno
98 slides
11.2K views
Database smells
by
Mikiya Okuno
32 slides
4.9K views
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
by
Mikiya Okuno
37 slides
131.1K views
リレーショナルデータベースとの上手な付き合い方 long version
by
Mikiya Okuno
74 slides
18.5K views
SQLアンチパターン メンター用資料
by
Hironori Miura
109 slides
15.2K views
リレーショナルデータベースとの上手な付き合い方
by
Mikiya Okuno
39 slides
18.8K views
データベース入門
by
Taku Kobayashi
35 slides
3.9K views
データベース技術について
by
yuu1988
8 slides
420 views
[db tech showcase Tokyo 2015] A27: RDBエンジニアの為のNOSQL, 今どうしてNOSQLなのか?
by
datastaxjp
23 slides
5.9K views
Sql勉強会用_1
by
Ken Hayashima
28 slides
180 views
Not only sql _ 新卒エンジニア勉強会20130417
by
エンジニア勉強会 エスキュービズム
84 slides
1.4K views
ならば
by
Tomoaki Hiramoto
17 slides
1.3K views
More from Mikiya Okuno
PDF
サポート一筋24+年のエンジニア、サポートのイロハは E4500に教わった。 Sun Microsystems 勉強会〜1994年頃から2000年頃の思い...
by
Mikiya Okuno
25 slides
137 views
PDF
MySQL Cluster 新機能解説 7.5 and beyond
by
Mikiya Okuno
58 slides
6.3K views
PDF
MySQL 5.7 トラブルシューティング 性能解析入門編
by
Mikiya Okuno
57 slides
4.7K views
PDF
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
by
Mikiya Okuno
26 slides
8.2K views
PDF
What's New in MySQL 5.7 Security
by
Mikiya Okuno
36 slides
9.8K views
PDF
What's New in MySQL 5.7 Replication
by
Mikiya Okuno
59 slides
11.2K views
PDF
とあるギークのキーボード遍歴
by
Mikiya Okuno
22 slides
9.6K views
PDF
MySQLアーキテクチャ図解講座
by
Mikiya Okuno
34 slides
27.6K views
PDF
What's New in MySQL 5.7 InnoDB
by
Mikiya Okuno
56 slides
14.2K views
PDF
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
by
Mikiya Okuno
54 slides
17.3K views
PDF
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
by
Mikiya Okuno
46 slides
37.7K views
PDF
人類は如何にして大切な データベースを守るべきか
by
Mikiya Okuno
26 slides
4.6K views
PDF
RDBにおけるバリデーションをリレーショナルモデルから考える
by
Mikiya Okuno
24 slides
11.2K views
PDF
MySQLトラブル解析入門
by
Mikiya Okuno
74 slides
17.2K views
PDF
Mysql toranomaki
by
Mikiya Okuno
62 slides
22.4K views
PDF
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
by
Mikiya Okuno
40 slides
18.2K views
ODP
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
by
Mikiya Okuno
70 slides
7.2K views
PDF
Database qpstudy-okuno
by
Mikiya Okuno
23 slides
8.3K views
PDF
MySQL 5.6新機能解説@dbtechshowcase2012
by
Mikiya Okuno
58 slides
28.5K views
PDF
MySQL日本語利用徹底入門
by
Mikiya Okuno
49 slides
10K views
サポート一筋24+年のエンジニア、サポートのイロハは E4500に教わった。 Sun Microsystems 勉強会〜1994年頃から2000年頃の思い...
by
Mikiya Okuno
25 slides
137 views
MySQL Cluster 新機能解説 7.5 and beyond
by
Mikiya Okuno
58 slides
6.3K views
MySQL 5.7 トラブルシューティング 性能解析入門編
by
Mikiya Okuno
57 slides
4.7K views
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
by
Mikiya Okuno
26 slides
8.2K views
What's New in MySQL 5.7 Security
by
Mikiya Okuno
36 slides
9.8K views
What's New in MySQL 5.7 Replication
by
Mikiya Okuno
59 slides
11.2K views
とあるギークのキーボード遍歴
by
Mikiya Okuno
22 slides
9.6K views
MySQLアーキテクチャ図解講座
by
Mikiya Okuno
34 slides
27.6K views
What's New in MySQL 5.7 InnoDB
by
Mikiya Okuno
56 slides
14.2K views
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
by
Mikiya Okuno
54 slides
17.3K views
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
by
Mikiya Okuno
46 slides
37.7K views
人類は如何にして大切な データベースを守るべきか
by
Mikiya Okuno
26 slides
4.6K views
RDBにおけるバリデーションをリレーショナルモデルから考える
by
Mikiya Okuno
24 slides
11.2K views
MySQLトラブル解析入門
by
Mikiya Okuno
74 slides
17.2K views
Mysql toranomaki
by
Mikiya Okuno
62 slides
22.4K views
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
by
Mikiya Okuno
40 slides
18.2K views
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
by
Mikiya Okuno
70 slides
7.2K views
Database qpstudy-okuno
by
Mikiya Okuno
23 slides
8.3K views
MySQL 5.6新機能解説@dbtechshowcase2012
by
Mikiya Okuno
58 slides
28.5K views
MySQL日本語利用徹底入門
by
Mikiya Okuno
49 slides
10K views
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
1.
なぜ、いまなぜ、いま リレーショナルモデルリレーショナルモデル なのかなのか 奥野 幹也 Twitter: @nippondanji mikiya
(dot) okuno (at) gmail (dot) com @ 「理論から学ぶデータベース実践入門」読書会スペシャル
2.
免責事項 本プレゼンテーションにおいて示されている見解は、私 自身の見解であって、オラクル・コーポレーションの見 解を必ずしも反映したものではありません。ご了承くだ さい。
3.
自己紹介 ● MySQL サポートエンジニア – 日々のしごと ●
トラブルシューティング全般 ● Q&A 回答 ● パフォーマンスチューニング など ● ライフワーク – 自由なソフトウェアの普及 ● オープンソースではない ● GPL 万歳!! – 最近はまってる趣味はリカンベントに乗ること ● ブログ – 漢のコンピュータ道 – http://nippondanji.blogspot.com/
4.
読書会のみなさん、 エラッタの報告 ありがとうございます!!
5.
なぜ、いま リレーショナルモデル なのか?
6.
リレーショナルモデルは枯れた理論 なのに何で今さら? ● 40 年以上前(!)から存在する理論 ● RDBMS が主流とはいうけれども・・・ –
現代的な課題はスケーラビリティ!! – 勢力を拡大する NoSQL !! ● 理論の話なので実践よりまず座学 – エキサイティングな要素無し!! – 小難しい話ばかり!!
7.
巷に溢れるあやふやな情報 ● リレーショナルモデルに触れない SQL の解説 –
SQL は書けるようになるけれども・・・ ● 理論に基づかないノウハウの解説 – リレーションは 2 次元の表です – データベースは単なる入れ物です – 正規化の目的は冗長性の排除です – 正規形は第 3 までで OK です – すべてのテーブルにサロゲートキーをつけるべきです – ORM を使えば SQL は知らなくても良い etc etc
8.
そして、真実を知る者は 現場からいなくなった・・・ ● それでも世の中回ってる – 率直なところ「意外といけるもんだね・・・」という感想 ●
とはいえ効率は悪い – クエリの実行効率 – RDBMS を用いた開発効率 – 無駄三昧!!デスマーチ三昧!!
9.
どげんかせんと いかん・・・・・!!
10.
そこで、私はペンを取り 立ち上がった!!
11.
皆さんに本書で伝えたいこと ● リレーショナルモデルの重要性 ● リレーショナルモデルの本当の姿 ● リレーショナルモデルの使い方 ●
リレーショナルモデルの限界 ● リレーショナルモデル以外に必要な知識 ※ 入門書なのでさらなる勉強のとっっかかりにしてもらえると嬉しいです。偉 そうに本なんか出してますが、私も道半ばです。ともに道を歩んでいきましょ う!!入門なのに難しいとか間違いがあるという声をよく耳にしますが、私の 至らなさが原因です。すみません。 サポートページ⇒ http://gihyo.jp/book/2015/978477417197 5/support
12.
RDB をちゃんと使うとは どういうことか。
13.
リレーショナルモデルは道具 ● 道具には道具に合った使い方、使いみちがある ● 道具の性質や使い方を知らずして、使いみちは分からない – RDB
を使うべきかどうか – 使うとしたらどう使うのがベストなのか ● 世の中の間違った使い方を正したい
14.
なぜその使い方で良いか あるいは良くないかを 説明できるようになる!!
15.
データモデルとは!
16.
データモデルとは ● データの論理的な表現方法 – データを表現するためにどんな方法が使えるか ●
データを構成する要素 ● データに対する演算 – 物理じゃないよ!! ● 物理的な表現方法は、データがどのようなフォーマット でファイルに格納されているか等 ● データベース設計のことじゃないよ!!
17.
データモデル=データ設計? ● データモデルという言葉は二通りの意味で使われる – データの論理的な表現 –
データ設計 ● 意味は全く違う – 両者を混同すると意味不明!!
18.
データは格納するだけで 終わりではない ● 格納して終わりではない!! – アプリケーションから利用してこそ意味がある –
入れっぱなしで OK なら、そもそもデータを格納する意味 はあるのか? ● どのように出し入れするかが重要 – できるだけ簡単かつ的確に出し入れしたい – 必要なデータは何かを簡潔に定義できること – ≒ データに対する演算
19.
データモデルと演算 ● データモデル上に定義された演算 – データの意味から演算の種類が必然的に決まる ●
整数の四則演算、文字列の分解・連結 ● リレーショナルモデルの射影、制限、結合 etc – 処理系に最初から用意されている ● 高速で信頼できる操作 ● 用意された演算を適切に使えば簡素に書ける – 反例:文字列で配列を実装するケースを考えよ ● 遅い ● 実装できてもバグだらけ ● そもそも実装する意味がない
20.
データベースを単なる入れ物だと 考えてはいけない理由 ● データベースはデータモデルを意識して作られている – データモデルに沿った演算が用意されている ●
データモデルに沿った使い方が得意 ● そうでない処理は苦手 – データモデルを実践できるかどうかで、データベースのパ ワーを利用できるかどうかが決まる ● データベースが単なる入れ物だと考える背景 – 「自分で書けば何でもできる」という考え – データモデルを知らない
21.
プログラミングパラダイムと データモデル ● プログラミングパラダイム – 手続き型 –
オブジェクト指向 – 関数型 etc etc ● プログラミング言語にはそれぞれ適した書き方がある!! – Java はオブジェクト指向で使うべき ● main メソッドに全てのロジックを記述するべきではない ● データモデルにはそれぞれ適した DB 設計がある!! – 「データベースは単なるデータの入れ物だ」という考え 方は、 Java で main メソッドに全てを記述するのに等し い
22.
様々なデータモデル
23.
代表的なデータモデル ● リレーショナルモデル ● グラフ ● 階層型 ●
キーバリュー ● オブジェクト ● XML ● ドキュメント
24.
適切なデータモデルを選ぶ ● 双方向でマッチングする – そのデータモデルはどのような演算が得意か –
アプリケーションが必要とする演算は何か ● 最大公約数を取る – データモデルは万能ではない ● 演算がうまく表現できないものも存在する – データモデルに合致しない部分はアプリケーション側で作 りこむ ● データベースソフトウェアが備えている、データモデルか ら逸脱した演算を活用する – ソートやストアドプロシージャ、マテリアライズドビューなど
25.
一つのデータモデルでは 足りない場合 ● 複数の製品を組み合わせる – 異なるデータモデルを持つ製品を組み合わせる –
データの同期が課題 ● 分散トランザクションがあれば理想 ● トランザクションがない製品はキャッシュとして ● マルチモデル – ひとつの製品が複数のデータモデルを持つ ● RDB + JSON etc – データの同期について考える必要がない – スケーラビリティが課題
26.
リレーショナルモデル
27.
リレーショナルモデルとは! ● 集合に根ざしたデータモデル ● リレーションという名前のデータ構造を用いてデータを表現 する – リレーションを単位として様々な演算を行う ●
リレーション=集合 ● 集合演算+ α – リレーションはデータそのもの – テーブル同士の関係性(リレーションシップ)ではない
28.
リレーションとは ● 現実世界のある物事に対する事実の集合 テーブル ≒ リレーション
29.
集合の性質 ● 重複がない ● NULL がない –
実際に存在する値のみ ● 要素間に順序がない – 例え数値でも 米国 ベトナム 日本 オーストラリア スウェーデン カメルーン 要素が含まれるか どうかだけが重要
30.
リレーションの構成部品 ● リレーション=見出し(ヘッダ)+本体(ボディ) ● 見出し(ヘッダ、 headding ) –
属性の集合 ● 属性(アトリビュート) – 名前と型(タイプ) ● 属性値 – 属性で定義された型を持つ値 – ≒ 列(カラム) ● 組(タプル) – 見出しに対応した属性値の集合 – ≒ 行(ロー) ● 本体(ボディ) – 組(タプル)の集合
31.
リレーショナルモデル≠ SQL リレーショナルモデル SQL 関係(リレーション)
表(テーブル) 属性 [ 値 ] (アトリビュート) 列(カラム) 組(タプル) 行(ロー) 対応する概念だが性質は異なる。
32.
すでに、 読んでらっしゃいますよね!!
33.
データモデルを知ることは超重要 ● データモデルを知らずにデータベースは使いこなせない ● データにはそれぞれの性質にあった演算がある – リレーションに対してしかリレーショナルモデルの演算は適 用できない!! –
リレーションとしてデータを表現することが重要 ● ただしリレーショナルモデルには適さないデータがある – リレーショナルモデルを適用すべきではない – 適するかどうかはリレーショナルモデルを知らずして判断 できない
34.
SQL と リレーショナルモデル
35.
SQL にあって リレーショナルモデルにないもの ● 行データの重複 ● 行データの順序 ●
カラムの順序 ● テーブル(リレーション)の更新 ● ストアドプロシージャ、トリガー ● トランザクション ● NULL
36.
なぜ SQL と リレーショナルモデルは違うのか ●
リレーショナルモデルには限界がある – 格納できるデータは集合として表現できるものに限る – 実行できる演算はリレーションの演算のみ ● 集合演算+ α ● アプリケーションが必要とするデータは多種多様 – リレーショナルモデルだけでは足りなかった – 更新という概念が実装上どうしても必要だった ● トランザクション ● つまり、純粋なリレーショナルモデルよりも SQL のほうが適 用範囲が広い
37.
ただしそれは 諸刃の剣だった・・・
38.
NULL の功罪 ● NULL によって、
SQL はリレーショナルモデル以上の表現 力を手に入れた!! ● しかしその代償は大きかった・・・ – Unknown な値とは一体何なのか – 3 値論理による複雑さの上昇 – 閉世界仮設の崩壊 – オプティマイザも真価を発揮できない ● 今扱っているデータがリレーショナルモデルの範疇かどうか を見極めることが重要!! – NULL があってもいいかどうか
39.
データの正しさに ついての考察
40.
正しいデータを得られない データベースは無価値 ● 正しい答えが欲しいからデータベースを使う – デタラメな答えで良いのなら
/dev/urandom でも使っ たほうがマシ ● 速いしリソース食わないし文句なし!! ● データの正しさとは一体何か?
41.
RDB 上でデータの正しさを保つ ● トランザクション –
同時アクセス時の整合性 – クラッシュリカバリ ● リレーショナルモデル – リレーション = 論理的に真となる命題の集合 ● 正規化理論 – 重複を排除することによる論理的な矛盾の回避 ● 制約 – ビジネスロジック
42.
NoSQL 上でデータの正しさを保つ ● RDB のような便利な道具はない –
トランザクションなし – リレーショナルモデルなし – 制約なし ● データの正しさの保証はアプリケーションに委ねられる – データの正しさを保証するためのコードを量産 – バグはデータの不整合に直結する – テストコードが増殖する
43.
分離レベルとデータの正しさ ● 分離レベルはトランザクションの概念であって、リレーショナ ルモデル上にはそんな概念はない – リレーショナルモデルでは、データは全てある瞬間のス ナップショットであり、同時アクセスによって他のセッション から変更されることは考慮されていない ● 分離レベルと整合性 –
SERIALIZABLE: リレーショナルモデルをもっとも忠実に体 現できる。ただしロック多し。 – REPEATABLEREAD: 少し時間が遅れても良いのなら、 参照系処理においてリレーショナルモデルを体現できる。 ただしファントムを除いて。 – READCOMMITTED: 本当は使うのが難しいんだけど、 みんな分かって使ってるのか・・・ – READUNCOMMITTED: 一体何に使うのか。
44.
分離レベルの注意点 ● 製品によって違いがあるんだな、これが。 – 名称が違ったり、
4 つ以上のレベルがあったり – RR でファントムが出ない( SQL 標準上は出るのが正しい けど、実際にアプリを作る上ではこっちのほうが好ましい) – RC が読むのはどのデータ? – ロッキングリード vs ノンロッキングリード – RU は本当に性能が高いのか 各製品の実装に 詳しくなろう!
45.
リレーショナルモデルの 恩恵
46.
開発効率が上がる ● クエリの記述がシンプルになる – 単一のクエリで欲しいデータが得られる ●
ループ無し ● 分岐無し – クエリが宣言的に – 論理演算なので結果にゆるぎがない ● データを検査するコードが減る – スキーマがしっかり決まっている – 正規化によって重複が排除される ● 不整合なし!! – 便利な制約やトランザクション – データを検査するコードが減れば、テストも減る
47.
つまり、 デスマーチ回避!!
48.
クエリが効率的になる ● スパゲティクエリ撲滅!! – シンプルなクエリはインデックスが効きやすい –
1 回のクエリで必要なデータが取れる ● クライアント⇔サーバー間のトラフィック減 ● 更新のロジックがシンプルに – 正規化によってデータの所在がひとつに ● 論理的な矛盾をチェックする必要なし – チェックするコード不要=テスト減
49.
つまり、 RDB が真価を発揮!!
50.
デメリットは特に無い ● 道具を正しく使うことのデメリットは何だろう? ● リレーショナルモデルが適用できないデータ – 今扱っているデータがリレーショナルモデルと合わないの なら、リレーショナルモデルを使おうとすると徒労に終わる が、そういうケースはそもそも
RDB を使うべきではない – もともと RDB が必要な領域ではデメリットなし!!
51.
実装について意識する
52.
データモデルは論理的な表現 論理的な表現 = データモデル 物理的な表現
= 実装
53.
実装の例 ● データがテーブルスペースに格納される ● データは高速化のためにメモリ上にキャッシュされる ● インデックスによって高速にアクセスできる ●
オプティマイザが最適な実行計画を立てる ● データがパーティションに分かれている ● データが複数のノードにまたがって複製されている これらは実装であって データモデルではない!
54.
実装について知ることの意義 その1 ● 性能は超重要!! – データモデルを使って表現するだけでは片手落ち ●
満足な性能が出るとは限らない ● 性能が出ないアプリケーションは役に立たない!! – 実装を知り、仕事の量を見積もる ● それぞれの処理は十分に高速なのか ● どのリソースをどれだけ消費するか – I/O 処理 – メモリ – CPU ● アーキテクチャから推測する – ベンチマークするべし!! ● 机上の計算では全てはわからない
55.
実装について知ることの意義 その2 ● 想定通りの動作になるか – SQL
標準 ≠ 実装 ● 製品によって微妙に挙動が異なる ● SQL 標準から逸脱している場合もあり ● 実装を知っておくことは重要 – テスト重要 ● 想定通りになるかどうかは実行してみれば分かる
56.
実装と理論の混同 ダメ、ゼッタイ。 ● 実装はデータモデルの一部ではない ● 理論と実装は別々に考える – 論理データの設計はデータモデルに沿って行う –
データモデルの要求を満たせるように実装を考える ● すなわち、設計する順序は論理設計>物理設計
57.
まとめ
58.
結論:なぜ、今 リレーショナルモデルなのか ● リレーショナルモデルは古くからある技術 – エキサイティングな要素は・・・ない!! –
実践できていないのに現場では蔑ろに – 巷にあふれるあやふやな情報 ● リレーショナルモデルを知ろう – 道具を使うには、使い方を理解する必要がある – 使い方を知ることで、正しい用途も見えてくる – なぜその使い方が良いのか、あるいは良くないのかを説 明できる ● リレーショナルモデルは変わらない!! – 流行り・廃りで理論が変わるわけではない – 理論による裏付けのない実践は虚しい – 代替の理論なし。今後も世の中には必要!!
59.
Q&Aご静聴ありがとうございました。