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
Soudai Sone
20,103 views
Web エンジニアが postgre sql を選ぶ 3 つの理由
PostgreSQLカンファレンス2014の資料です
Technology
◦
Read more
35
Save
Share
Embed
Embed presentation
Download
Downloaded 52 times
1
/ 151
2
/ 151
3
/ 151
4
/ 151
5
/ 151
6
/ 151
7
/ 151
8
/ 151
9
/ 151
10
/ 151
11
/ 151
12
/ 151
13
/ 151
14
/ 151
15
/ 151
16
/ 151
17
/ 151
18
/ 151
19
/ 151
20
/ 151
21
/ 151
22
/ 151
23
/ 151
24
/ 151
25
/ 151
26
/ 151
27
/ 151
28
/ 151
29
/ 151
30
/ 151
31
/ 151
32
/ 151
33
/ 151
34
/ 151
35
/ 151
36
/ 151
37
/ 151
38
/ 151
39
/ 151
40
/ 151
41
/ 151
42
/ 151
43
/ 151
44
/ 151
45
/ 151
46
/ 151
47
/ 151
48
/ 151
49
/ 151
50
/ 151
51
/ 151
52
/ 151
53
/ 151
54
/ 151
55
/ 151
56
/ 151
57
/ 151
58
/ 151
59
/ 151
60
/ 151
61
/ 151
62
/ 151
63
/ 151
64
/ 151
65
/ 151
66
/ 151
67
/ 151
68
/ 151
69
/ 151
70
/ 151
71
/ 151
72
/ 151
73
/ 151
74
/ 151
75
/ 151
76
/ 151
77
/ 151
78
/ 151
79
/ 151
80
/ 151
81
/ 151
82
/ 151
83
/ 151
84
/ 151
85
/ 151
86
/ 151
87
/ 151
88
/ 151
89
/ 151
90
/ 151
91
/ 151
92
/ 151
93
/ 151
94
/ 151
95
/ 151
96
/ 151
97
/ 151
98
/ 151
99
/ 151
100
/ 151
101
/ 151
102
/ 151
103
/ 151
104
/ 151
105
/ 151
106
/ 151
107
/ 151
108
/ 151
109
/ 151
110
/ 151
111
/ 151
112
/ 151
113
/ 151
114
/ 151
115
/ 151
116
/ 151
117
/ 151
118
/ 151
119
/ 151
120
/ 151
121
/ 151
122
/ 151
123
/ 151
124
/ 151
125
/ 151
126
/ 151
127
/ 151
128
/ 151
129
/ 151
130
/ 151
131
/ 151
132
/ 151
133
/ 151
134
/ 151
135
/ 151
136
/ 151
137
/ 151
138
/ 151
139
/ 151
140
/ 151
141
/ 151
142
/ 151
143
/ 151
144
/ 151
145
/ 151
146
/ 151
147
/ 151
148
/ 151
149
/ 151
150
/ 151
151
/ 151
More Related Content
KEY
やはりお前らのMVCは間違っている
by
Koichi Tanaka
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
PDF
PostgreSQL 15の新機能を徹底解説
by
Masahiko Sawada
PDF
pg_bigmを用いた全文検索のしくみ(後編)
by
NTT DATA OSS Professional Services
PDF
Where狙いのキー、order by狙いのキー
by
yoku0825
PDF
例外設計における大罪
by
Takuto Wada
やはりお前らのMVCは間違っている
by
Koichi Tanaka
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
Redisの特徴と活用方法について
by
Yuji Otani
PostgreSQL 15の新機能を徹底解説
by
Masahiko Sawada
pg_bigmを用いた全文検索のしくみ(後編)
by
NTT DATA OSS Professional Services
Where狙いのキー、order by狙いのキー
by
yoku0825
例外設計における大罪
by
Takuto Wada
What's hot
PPTX
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
by
NTT DATA Technology & Innovation
PDF
webエンジニアのためのはじめてのredis
by
nasa9084
PDF
データベース設計徹底指南
by
Mikiya Okuno
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
by
Yoshifumi Kawai
PDF
モジュールの凝集度・結合度・インタフェース
by
Hajime Yanagawa
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
by
NTT DATA Technology & Innovation
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
PDF
Linux女子部 systemd徹底入門
by
Etsuji Nakai
PDF
PostgreSQLでスケールアウト
by
Masahiko Sawada
PDF
MySQLアーキテクチャ図解講座
by
Mikiya Okuno
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
by
NTT DATA Technology & Innovation
PPTX
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
by
NTT DATA Technology & Innovation
PDF
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
by
NTT DATA Technology & Innovation
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
by
Shin Ohno
ODP
MVC の Model を考える
by
tomo_masakura
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PPTX
Metaspace
by
Yasumasa Suenaga
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
by
NTT DATA Technology & Innovation
webエンジニアのためのはじめてのredis
by
nasa9084
データベース設計徹底指南
by
Mikiya Okuno
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
by
Yoshifumi Kawai
モジュールの凝集度・結合度・インタフェース
by
Hajime Yanagawa
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
by
NTT DATA Technology & Innovation
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
Linux女子部 systemd徹底入門
by
Etsuji Nakai
PostgreSQLでスケールアウト
by
Masahiko Sawada
MySQLアーキテクチャ図解講座
by
Mikiya Okuno
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
by
NTT DATA Technology & Innovation
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
by
NTT DATA Technology & Innovation
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
by
NTT DATA Technology & Innovation
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
by
Shin Ohno
MVC の Model を考える
by
tomo_masakura
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
Metaspace
by
Yasumasa Suenaga
Viewers also liked
PDF
カヤックを退職すべきではない3つの理由
by
Shuichi Tsutsumi
PDF
フレームワークを使うべき 3 つの理由
by
Kenichi Mukai
PDF
kintone cafe東京vol3 「kintoneの開発が楽しい3つの理由」
by
JOYZO
PPT
おジャ魔女どれみが素晴らしい3つの理由
by
w1mvy pine
PDF
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
by
azumakuniyuki 🐈
PDF
Vpcを使う3つの理由
by
Serverworks Co.,Ltd.
PDF
スタートアップがAWSを使うべき3つの理由
by
Serverworks Co.,Ltd.
PDF
安心してぐっすり眠るための AWS 運用術
by
manabusakai
PDF
私がCloudStackを使う4つの理由
by
Takuma Nakajima
PDF
最短で AWS を乗りこなすライフハック術
by
manabusakai
PDF
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
by
Shuichi Tsutsumi
カヤックを退職すべきではない3つの理由
by
Shuichi Tsutsumi
フレームワークを使うべき 3 つの理由
by
Kenichi Mukai
kintone cafe東京vol3 「kintoneの開発が楽しい3つの理由」
by
JOYZO
おジャ魔女どれみが素晴らしい3つの理由
by
w1mvy pine
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
by
azumakuniyuki 🐈
Vpcを使う3つの理由
by
Serverworks Co.,Ltd.
スタートアップがAWSを使うべき3つの理由
by
Serverworks Co.,Ltd.
安心してぐっすり眠るための AWS 運用術
by
manabusakai
私がCloudStackを使う4つの理由
by
Takuma Nakajima
最短で AWS を乗りこなすライフハック術
by
manabusakai
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
by
Shuichi Tsutsumi
Similar to Web エンジニアが postgre sql を選ぶ 3 つの理由
PDF
Webで役立つRDBの使い方
by
Soudai Sone
PDF
お前の罪を数えろ
by
Masahiro Tomita
PDF
実務で役立つデータベースの活用法
by
Soudai Sone
PDF
MySQL 入門的なはなし
by
Yuya Takeyama
PDF
ふくよかなモデル
by
yukaina
PDF
SQLQL は GraphQL にとってなんなのか
by
yancya
PDF
Integral - New O/R Mapper for Common Lisp
by
fukamachi
PDF
リレーショナルデータベースとの上手な付き合い方 long version
by
Mikiya Okuno
PDF
Random partionerのデータモデリング
by
2t3
PDF
Oracle Databaseを用いて学ぶRDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
by
Ryota Watabe
PDF
Nosql
by
uenno
PDF
よろしい、ならばMicro-ORMだ
by
Narami Kiyokura
PDF
StepInNosql
by
abedaisuke1
PDF
ARC-009_RDB 技術者のための NoSQL ガイド
by
decode2016
PDF
20181110 fok2018-pg-extension
by
Toshi Harada
PDF
Lt 関数の変動性分類についておさらいしてみる。
by
Toshi Harada
PDF
Wtm
by
Soudai Sone
PPTX
設計をする上で役にたった制約について
by
Ikki Takahashi
PDF
[db tech showcase Tokyo 2014] L34: そのデータベース 5年後大丈夫ですか by 日本ヒューレット・パッカード株式会社 後藤宏
by
Insight Technology, Inc.
PDF
オープンソース・データベースの最新事情
by
Meiji Kimura
Webで役立つRDBの使い方
by
Soudai Sone
お前の罪を数えろ
by
Masahiro Tomita
実務で役立つデータベースの活用法
by
Soudai Sone
MySQL 入門的なはなし
by
Yuya Takeyama
ふくよかなモデル
by
yukaina
SQLQL は GraphQL にとってなんなのか
by
yancya
Integral - New O/R Mapper for Common Lisp
by
fukamachi
リレーショナルデータベースとの上手な付き合い方 long version
by
Mikiya Okuno
Random partionerのデータモデリング
by
2t3
Oracle Databaseを用いて学ぶRDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
by
Ryota Watabe
Nosql
by
uenno
よろしい、ならばMicro-ORMだ
by
Narami Kiyokura
StepInNosql
by
abedaisuke1
ARC-009_RDB 技術者のための NoSQL ガイド
by
decode2016
20181110 fok2018-pg-extension
by
Toshi Harada
Lt 関数の変動性分類についておさらいしてみる。
by
Toshi Harada
Wtm
by
Soudai Sone
設計をする上で役にたった制約について
by
Ikki Takahashi
[db tech showcase Tokyo 2014] L34: そのデータベース 5年後大丈夫ですか by 日本ヒューレット・パッカード株式会社 後藤宏
by
Insight Technology, Inc.
オープンソース・データベースの最新事情
by
Meiji Kimura
More from Soudai Sone
PDF
DBの闇を書くにはこの余白は狭すぎる
by
Soudai Sone
PDF
レガシーな環境からモダンへの挑戦
by
Soudai Sone
PDF
PostgreSQLとpython
by
Soudai Sone
PDF
PostgreSQLアンチパターン
by
Soudai Sone
PDF
地方エンジニアがPostgreSQLを通じて成長した話
by
Soudai Sone
PDF
知って得するWebで便利なpostgre sqlの3つの機能
by
Soudai Sone
PDF
DDDハンズオン
by
Soudai Sone
PDF
今すぐ使えるクラウドとPostgreSQL
by
Soudai Sone
PDF
Postgre sqlから見るnosql
by
Soudai Sone
PDF
中国地方Db勉強会
by
Soudai Sone
PDF
Ansibleで始めるpostgre sqlの冗長化
by
Soudai Sone
PDF
Web で変わったクラウドと postgre sql の今と昔
by
Soudai Sone
PDF
すぐ始めれるクラウド
by
Soudai Sone
PDF
Osc2014
by
Soudai Sone
PDF
PostgreSQLの冗長化について
by
Soudai Sone
PDF
Osh2014
by
Soudai Sone
PDF
Postgre sql9.3新機能 (OSC hiroshima 2013)
by
Soudai Sone
PDF
聞いたら参加したくなるJjug cccの報告
by
Soudai Sone
PDF
地方における勉強会事情
by
Soudai Sone
PPTX
今、最も勢いのあるWebフレームワーク「fuel php」
by
Soudai Sone
DBの闇を書くにはこの余白は狭すぎる
by
Soudai Sone
レガシーな環境からモダンへの挑戦
by
Soudai Sone
PostgreSQLとpython
by
Soudai Sone
PostgreSQLアンチパターン
by
Soudai Sone
地方エンジニアがPostgreSQLを通じて成長した話
by
Soudai Sone
知って得するWebで便利なpostgre sqlの3つの機能
by
Soudai Sone
DDDハンズオン
by
Soudai Sone
今すぐ使えるクラウドとPostgreSQL
by
Soudai Sone
Postgre sqlから見るnosql
by
Soudai Sone
中国地方Db勉強会
by
Soudai Sone
Ansibleで始めるpostgre sqlの冗長化
by
Soudai Sone
Web で変わったクラウドと postgre sql の今と昔
by
Soudai Sone
すぐ始めれるクラウド
by
Soudai Sone
Osc2014
by
Soudai Sone
PostgreSQLの冗長化について
by
Soudai Sone
Osh2014
by
Soudai Sone
Postgre sql9.3新機能 (OSC hiroshima 2013)
by
Soudai Sone
聞いたら参加したくなるJjug cccの報告
by
Soudai Sone
地方における勉強会事情
by
Soudai Sone
今、最も勢いのあるWebフレームワーク「fuel php」
by
Soudai Sone
Web エンジニアが postgre sql を選ぶ 3 つの理由
1.
Web エンジニアが PostgreSQL を選ぶ
3 つの理由 PostgreSQLカンファレンス 2014
2.
What is it? データベースは何を基準に選んでますか?
3.
What is it? アプリケーションにとって データの寿命はコードより長い という事実
4.
What is it? なぜPostgreSQLを使うのか
5.
あじぇんだ 1 自己紹介 2 ランキングを作る 3 可変なプロパティを扱う 4 型を極める 5 まとめ
6.
あじぇんだ 1 自己紹介 2 ランキングを作る 3 可変なプロパティを扱う 4 型を極める 5 まとめ
7.
自己紹介 名前:曽根 壮大(そね たけとも) 年齢:30歳(三人の子供がいます) 職業:Webエンジニア 所属:日本PostgreSQLユーザ会 中国支部 支部長 技術的にはLL系言語とかRDBが好きです
8.
中国地方DB勉強会 https://dbstudychugoku.github.io/
10.
あじぇんだ 1 自己紹介 2 ランキングを作る 3 可変なプロパティを扱う 4 型を極める 5 まとめ
11.
ランキングを作る 仕様変更に強いランキングを作る
12.
ランキングを作る Viewに紐づくデータは 仕様変更 の影響を受けやすい
13.
ランキングを作る ランキング
14.
ランキングを作る ランキング ↓ 要件が多様なので影響を受けやすい
15.
名前 戦闘力 フリーザ 530000 悟飯(幼少期)
1307 クリリン(ラディッツ戦) 206 ヤムチャ(ラディッツ戦) 177
16.
ランキングを作る 要件
17.
ランキングを作る 要件 1 戦闘力の降順(DESC)
18.
ランキングを作る 要件 1 戦闘力の降順(DESC) 2 表示は名前と戦闘力
19.
実際のSQL SELECT 名前,戦闘力 FROM キャラクター ORDER BY 戦闘力 DESC
20.
ランキングを作る 要件 1 戦闘力の降順(DESC) 2 表示は名前と戦闘力 3 上位三名を表示
21.
実際のSQL SELECT 名前,戦闘力 FROM キャラクター ORDER BY 戦闘力 DESC LIMIT 3
22.
ランキングを作る 要件 1 戦闘力の降順(DESC) 2 表示は名前と戦闘力 3 上位三名を表示 4 編で分ける
23.
名前 戦闘力 編 フリーザ
530000 フリーザ編 悟飯(幼少期) 1307 ラディッツ編 クリリン 206 ラディッツ編 ヤムチャ 177 ラディッツ編 農夫 5 ラディッツ編 ギニュー 120000 フリーザ編 クリリン 1500 フリーザ編 亀仙人 139 ラディッツ編 ※実務では編は正規化するべき
24.
実際のSQL SELECT 名前,戦闘力 FROM キャラクター WHERE 編 =
‘フリーザ編’ または 編 = ‘ラディッツ編’ ORDER BY 戦闘力 DESC LIMIT 3
25.
ランキングを作る クライアント「それじゃない。」
26.
名前 戦闘力 編 悟飯(幼少期)
1307 ラディッツ編 クリリン 206 ラディッツ編 ヤムチャ 177 ラディッツ編 亀仙人 139 ラディッツ編 農夫 5 ラディッツ編 フリーザ 530000 フリーザ編 ギニュー 120000 フリーザ編 クリリン 1500 フリーザ編
27.
ランキングを作る SQLを二回投げるか?
28.
ランキングを作る ウィンドウ関数
29.
ランキングを作る ウィンドウ関数 ウィンドウ関数は現在の行に何らの 関係するテーブル行の一纏まり全般 の計算を行う。
30.
実際のSQL SELECT rank() OVER ( PARTITION
BY "編" ORDER BY "戦闘力" DESC ) , * FROM "キャラクター";
31.
名前 戦闘力 編 悟飯(幼少期)
1307 ラディッツ編 クリリン 206 ラディッツ編 ヤムチャ 177 ラディッツ編 亀仙人 139 ラディッツ編 農夫 5 ラディッツ編 フリーザ 530000 フリーザ編 ギニュー 120000 フリーザ編 クリリン 1500 フリーザ編
32.
ランキングを作る クライアント 「かつキャラの最大戦闘力で並べて」
33.
名前 戦闘力 編 フリーザ
530000 フリーザ編 フリーザ 10000000 フリーザ編 フリーザ 20000000 フリーザ編 悟飯(幼少期) 1307 ラディッツ編 クリリン 206 ラディッツ編 ヤムチャ 177 ラディッツ編 農夫 5 ラディッツ編 ギニュー 120000 フリーザ編 クリリン 1500 フリーザ編 クリリン 0 フリーザ編 クリリン 10000 フリーザ編 亀仙人 139 ラディッツ編
34.
名前 戦闘力 編 フリーザ
2000000 フリーザ編 ギニュー 120000 フリーザ編 クリリン 10000 フリーザ編 悟飯(幼少期) 1307 ラディッツ編 クリリン 206 ラディッツ編 ヤムチャ 177 ラディッツ編 亀仙人 139 ラディッツ編 農夫 5 ラディッツ編
35.
実際のSQL SELECT rank() OVER ( PARTITION
BY "編" ORDER BY max("戦闘力") DESC ) , "名前", MAX("戦闘力"), "編" FROM "キャラクター" GROUP BY "名前","編";
36.
名前 戦闘力 編 フリーザ
2000000 フリーザ編 ギニュー 120000 フリーザ編 クリリン 1500 フリーザ編 悟飯(幼少期) 1307 ラディッツ編 クリリン 206 ラディッツ編 ヤムチャ 177 ラディッツ編 亀仙人 139 ラディッツ編 農夫 5 ラディッツ編
37.
ランキングを作る 仕様変更に強いランキングを作る
38.
ランキングを作る 開発者 「毎回SQLの差し替えするの辛い」
39.
ランキングを作る Viewを使う
40.
ランキングを作る 街角の声 「Viewを使うと遅いのでは?」
41.
ランキングを作る View
42.
ランキングを作る View • INDEXは効く
43.
ランキングを作る View • INDEXは効く • 参照の際にSQLを実行するだけ
44.
ランキングを作る View • INDEXは効く • 参照の際にSQLを実行するだけ •
元のSQLが遅い場合は当然遅い
45.
ランキングを作る 参照元のテーブルが大きくなった
46.
ランキングを作る 参照元のテーブルが大きくなった ↓ 参照元のSQLが遅い
47.
ランキングを作る マテリアライズドビュー
48.
ランキングを作る マテリアライズドビュー 実体の存在するView。 参照したクエリ結果を保存するため、 参照元を更新した際はマテビューの 更新も必要になる。 ※ただしPostgreSQL 9.3からの機能
49.
ランキングを作る クエリ結果を実体化する
50.
ランキングを作る クエリ結果を実体化する ↓ 高速化
51.
ランキングを作る マテビューは銀の弾丸ではない
52.
ランキングを作る マテビューの問題点 ・リフレッシュ管理が必要(自動更新しない) ※ただし、9.4から自動更新が可能 ・普通のテーブル同様に表領域を消費する ・リフレッシュはそれなりにリソースを使う
53.
ランキングを作る 更新が多いとボトルネックになる
54.
ランキングを作る まとめ
55.
ランキングを作る まとめ 1 データをシンプルに保つ
56.
ランキングを作る まとめ 1 データをシンプルに保つ 2 コード側の実装に依存しない
57.
ランキングを作る まとめ 1 データをシンプルに保つ 2 コード側の実装に依存しない 3 要件に合わせて選択肢を選ぶ
58.
あじぇんだ 1 自己紹介 2 ランキングを作る 3 可変なプロパティを扱う 4 型を極める 5 まとめ
59.
可変なプロパティを扱う
60.
可変なプロパティを扱う • アンケートフォーム
61.
可変なプロパティを扱う • アンケートフォーム • ユーザの付属情報
62.
可変なプロパティを扱う • アンケートフォーム • ユーザの付属情報 •
ブログのタブ
63.
可変なプロパティを扱う • アンケートフォーム • ユーザの付属情報 •
ブログのタブ などなど…
64.
可変なプロパティを扱う アンケートフォーム
65.
可変なプロパティを扱う アンケートフォーム
66.
回答者 キャラクター 回答日 そーだい
榛名 2014/11/28 たけとも 高雄 2014/11/28 soudai1025 大和 2014/11/29
67.
可変なプロパティを扱う アンケートフォーム ここに「択一回答」があるじゃろ? ( ^ω^)←お客様 択一回答
68.
可変なプロパティを扱う アンケートフォーム これを ( ^ω^)←お客様 )択一回答(
69.
可変なプロパティを扱う アンケートフォーム こうして… ( ^ω^)←お客様
70.
可変なプロパティを扱う アンケートフォーム こうじゃ! ( ^ω^)←お客様 複数回答
71.
可変なプロパティを扱う アンケートフォーム
72.
可変なプロパティを扱う アンケートフォーム テキストフォームまで こっそり追加される
73.
可変なプロパティを扱う どのように対応するか
74.
可変なプロパティを扱う データについて
75.
可変なプロパティを扱う データについて • データを消せない
76.
可変なプロパティを扱う データについて • データを消せない • データを変更できない
77.
可変なプロパティを扱う データについて • データを消せない • データを変更できない •
データの追加で対応
78.
可変なプロパティを扱う SQLアンチパターン ↓ カンマ区切り(CSV)で保存 ※ジェイ・ウォーク
79.
回答者 キャラクター 回答日 そーだい
榛名 2014/11/28 たけとも 高雄,榛名 2014/11/28 soudai1025 大和,金剛,武蔵 2014/11/29
80.
回答者 キャラクター 回答日 そーだい
榛名 2014/11/28 たけとも 高雄,榛名 2014/11/28 soudai1025 大和,金剛,武蔵 2014/11/29 保存するデータが カラムのサイズに依存する
81.
可変なプロパティを扱う SQLアンチパターン
82.
可変なプロパティを扱う SQLアンチパターン • 検索が難しい
83.
可変なプロパティを扱う SQLアンチパターン • 検索が難しい • 集計が難しい
84.
可変なプロパティを扱う SQLアンチパターン • 検索が難しい • 集計が難しい •
更新が難しい
85.
可変なプロパティを扱う SQLアンチパターン ↓ データの数だけカラムを増やす ※メタデータトリブン
86.
回答者 キャラ1 キャラ2
キャラ3 回答日 そーだい 榛名 NULL NULL 2014/11/28 たけとも 高雄 榛名 NULL 2014/11/28 soudai1025 大和 金剛 武蔵 2014/11/29
87.
可変なプロパティを扱う SQLアンチパターン
88.
可変なプロパティを扱う SQLアンチパターン • 項目追加の度にカラムが増える
89.
可変なプロパティを扱う SQLアンチパターン • 項目追加の度にカラムが増える • データの可読性が下がる
90.
可変なプロパティを扱う SQLアンチパターン • 項目追加の度にカラムが増える • データの可読性が下がる •
データの整合性を担保が難しい
91.
可変なプロパティを扱う 正規化
92.
回答者 回答日 そーだい 2014/11/28 たけとも
2014/11/28 soudai1025 2014/11/29 回答者 キャラクター そーだい 榛名 たけとも 高雄 たけとも 榛名 soudai1025 大和 soudai1025 金剛 soudai1025 武蔵
93.
可変なプロパティを扱う 最初から正規化すれば両対応
94.
可変なプロパティを扱う 集合でデータを表現する
95.
可変なプロパティを扱う 変更に強くなる
96.
可変なプロパティを扱う PostgreSQLのアプローチ
97.
可変なプロパティを扱う PostgreSQLのアプローチ ↓ 配列型
98.
回答者 キャラクター 回答日 そーだい
{榛名} 2014/11/28 たけとも {高雄,榛名} 2014/11/28 soudai1025 {大和,金剛,武蔵} 2014/11/29
99.
可変なプロパティを扱う 配列型
100.
可変なプロパティを扱う 配列型 • INDEXが効く
101.
可変なプロパティを扱う 配列型 • INDEXが効く • 柔軟な検索(内包なども可能)
102.
可変なプロパティを扱う 配列型 • INDEXが効く • 柔軟な検索(内包なども可能) •
任意の箇所の更新も可能
103.
可変なプロパティを扱う 配列型の注意点 • 外部制約が使えない • ORMが多くの場合使えない
104.
可変なプロパティを扱う 配列型のその他の使い方 • タグなどの複数の値を持たせる • 木構造を表現する
105.
可変なプロパティを扱う 配列型まとめ
106.
可変なプロパティを扱う 配列型まとめ • 外部制約の不要な場合に使う
107.
可変なプロパティを扱う 配列型まとめ • 外部制約の不要な場合に使う • ORMに依存しない場合に使う
108.
可変なプロパティを扱う 配列型まとめ • 外部制約の不要な場合に使う • ORMに依存しない場合に使う •
最初に正規化を検討する
109.
可変なプロパティを扱う もっと柔軟に対応したい
110.
可変なプロパティを扱う もっと柔軟に対応したい • ドキュメント志向
111.
可変なプロパティを扱う もっと柔軟に対応したい • ドキュメント志向 • スキーマレス
112.
可変なプロパティを扱う もっと柔軟に対応したい • ドキュメント志向 • スキーマレス •
Key=>Valueな関係性を保存
113.
可変なプロパティを扱う JSON型
114.
可変なプロパティを扱う JSON型 • JSON本体をカラムに保存
115.
可変なプロパティを扱う JSON型 • JSON本体をカラムに保存 • 高速な参照(INDEXが効く)
116.
可変なプロパティを扱う JSON型 • JSON本体をカラムに保存 • 高速な参照(INDEXが効く) •
各種変換の関数を用意
117.
回答者 JSON 回答日 そーだい
{キャラクタ:[榛名]} 2014/11/28 たけとも {キャラクタ:[高雄,榛名]} 2014/11/28 soudai1025 {キャラクタ:[大和,榛名,武蔵]} 2014/11/29
118.
回答者 JSON 回答日 そーだい
{キャラクタ:[榛名],Lv:40} 2014/11/28 たけとも {キャラクタ:[高雄,榛名]} 2014/11/28 soudai1025 {キャラクタ:[大和,榛名,武蔵]} 2014/11/29
119.
可変なプロパティを扱う JSON型
120.
可変なプロパティを扱う JSON型 • 柔軟にデータを保存できる
121.
可変なプロパティを扱う JSON型 • 柔軟にデータを保存できる • View変更によるDB変更が不要
122.
可変なプロパティを扱う JSON型 • 柔軟にデータを保存できる • View変更によるDB変更が不要 •
9.4からはより強力なJSONB型
123.
可変なプロパティを扱う JSON型の注意点 • 外部制約の不要な場合に使う • ORMに依存しない場合に使う •
問題点は配列型と同様
124.
あじぇんだ 1 自己紹介 2 ランキングを作る 3 可変なプロパティを扱う 4 型を極める 5 まとめ
125.
型を極める 豊富な型の例 • 列挙(enum)型 • ネットワーク・アドレス型 •
範囲型 • 幾何データ型 • 列挙(enum)型 • ネットワーク・アドレス型 • 範囲型 • 幾何データ型
126.
型を極める 型を選ぶ利点
127.
型を極める 型を選ぶ利点 • 正しいデータのみが保存される
128.
型を極める 型を選ぶ利点 • 正しいデータのみが保存される • 正しいソートが行われる
129.
型を極める 型を選ぶ利点 • 正しいデータのみが保存される • 正しいソートが行われる •
適切な検索が行える
130.
型を極める ネットワークアドレス型 • 列挙(enum)型 • ネットワーク・アドレス型 •
範囲型 • 幾何データ型 • IPv4もIPv6も対応 • サブネットマスクの整合性 • 文字列ではなくIPとしてソート
131.
IP 192.1.1.1/32 192.2.1.1/32 192.10.1.1/32
132.
型を極める 幾何データ型 • 列挙(enum)型 • ネットワーク・アドレス型 •
範囲型 • 幾何データ型 • point、boxなど豊富な型 • 充実した関数と演算子 • 地図の範囲検索など
133.
店名 緯度 経度 品川AP
35.630793 139.73786 品川駅 35.630152 139.74044 五反田駅 35.626446 139.723444
134.
実際のSQL SELECT sqrt(power((対象緯度-自分の緯度)*111,2) + power((対象経度-自分の経度)* 91,2)) AS distance 平均で緯度1度あたり111km 平均で経度1度あたり91km
135.
検索例 半径●●メートルの中の登録店を調べる 自分を中心とした円に 含まれているか
136.
実際のSQL SELECT 店名, sqrt(power((お店.緯度 - 自分の緯度) *
111, 2) + power((お店.経度 - 自分の経度) * 91, 2)) AS 距離(km) FROM お店 WHERE circle(point(お店.緯度*91.0,お店.経度*111.0), 円の半径) @ circle(point(自分の緯度*91.0,自分の経度*111.0), 円の半径)
137.
店名 距離(km) 品川AP 0.01 品川駅
0.4
138.
型を極める まとめ • 列挙(enum)型 • ネットワーク・アドレス型 •
範囲型 • 幾何データ型 •
139.
型を極める まとめ • 列挙(enum)型 • ネットワーク・アドレス型 •
範囲型 • 幾何データ型 • 適切な型にデータを入れる
140.
型を極める まとめ • 列挙(enum)型 • ネットワーク・アドレス型 •
範囲型 • 幾何データ型 • 適切な型にデータを入れる • 型を使い不正なデータを無くす
141.
型を極める まとめ • 列挙(enum)型 • ネットワーク・アドレス型 •
範囲型 • 幾何データ型 • 適切な型にデータを入れる • 型を使い不正なデータを無くす • 特別な検索も可能になる
142.
あじぇんだ 1 自己紹介 2 ランキングを作る 3 可変なプロパティを扱う 4 型を極める 5 まとめ
143.
まとめ
144.
まとめ Webは日々複雑になっている
145.
まとめ Webは日々複雑になっている ↓ 取り扱うデータも増えている
146.
まとめ 運用が始まるとデータは変えれない
147.
まとめ 運用が始まるとデータは変えれない ↓ どんなにコードが綺麗でもデータ構造 がダメだとリファクタリングは難しい
148.
まとめ SQLや型を使ってデータを守る
149.
まとめ SQLや型を使ってデータを守る ↓ 運用をシンプルにする
150.
まとめ データの寿命はコードより長い
151.
ご静聴ありがとうございました。
Download