Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Greg Young - Polyglot Data
Search
Riga Dev Day
January 30, 2015
Programming
1
290
Greg Young - Polyglot Data
Riga Dev Day
January 30, 2015
Tweet
Share
More Decks by Riga Dev Day
See All by Riga Dev Day
Faster Java by Adding Structs (Sort Of)
rigadevday
0
140
Prepare for JDK 9! by Dalibor Topic
rigadevday
0
100
Little Important Things in Distributed Architectures by Andres Jaan Tack
rigadevday
0
99
Oracle 12c for Developers by Alex Nuijten
rigadevday
1
110
The Language of Regular Expressions. So You Think You Can Speak It? by Rustam Mehmandarov
rigadevday
0
57
Modern Java Component Design with Spring 4.3 by Juergen Hoeller
rigadevday
0
210
Open Source and OpenJDK: Do They Deliver? by Simon Ritter
rigadevday
0
47
Google Apps Integration in Oracle Apex by Richard Martens
rigadevday
0
240
Integration Testing from the Trenches by Nicolas Fränkel
rigadevday
0
190
Other Decks in Programming
See All in Programming
ゆるい個人開発のススメ
kuroppe1819
10
930
Micro Frontends for Java Microservices - Devnexus 2024
mraible
PRO
0
420
甘い香りに誘われてVanilla Extractを1年間運用してみた
miyahkun
1
110
スクラムガイドのスプリントレトロスペクティブを改めて読みかえしてみた / Re-reading the Sprint Retrospective Section in the Scrum Guide
mackey0225
3
320
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.6k
Site Reliability Engineering for GMO
pyama86
6
880
CircleCIを活用して AWSへの継続的デリバリーを 実践する
coconala_engineer
1
230
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
360
チームでモデリングを育てるうえで 考えたこと・気づいたこと / Cultivating Modeling in Teams: Thoughts and Insights
mackey0225
7
4.1k
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
480
Folding Cheat Sheet #1
philipschwarz
PRO
0
210
StreamlitとTerraformでデータカタログを作った話
gussan0223
0
290
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.4k
Optimizing for Happiness
mojombo
369
69k
Into the Great Unknown - MozCon
thekraken
10
980
Building Adaptive Systems
keathley
29
1.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
658
120k
Mobile First: as difficult as doing things right
swwweet
216
8.6k
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
What the flash - Photography Introduction
edds
64
11k
Product Roadmaps are Hard
iamctodd
43
9.7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
29
6k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Happy Clients
brianwarren
91
6.4k
Transcript
Polyglot Data Greg Young
Focus on strategic design first.
None
Purchase Order Line Items (n) Shipping Information
Cart Created 3 Items Added Shipping Informatio n Added
None
Cart Created 3 Items Added 1Item Removed Shipping Informati on
Added
None
Focus on strategic design first.
There is no “best” storage.
Focus on strategic design first.
A single data model is almost never appropriate. 3+ is
common!
Focus on strategic design first.
Focus on strategic design first. Id ParentId Data 1 0
Parent 2 1 Child1 3 1 Child2
Focus on strategic design first. Id ParentId0 ParentId1 ParentId2 ParentId3
ParentId4 Data 1 0 0 0 0 0 Parent 2 1 0 0 0 0 Child1 3 1 2 0 0 0 Child2
Focus on strategic design first. RelationId PersonId PersonId Relation 1
1 0 Parent 2 2 1 Caregiver 3 3 1 Caregiver PersonId Name Type 1 Joe Person 2 Foo llp Company 3 Tom Person
Wrong models cause massive accidental complexity
None
None
None
None
None
Storing Events is a good loss less transactional model Append-Only,
Immutable
Reads/Writes is one form of separation
None
None
None
Time is another form of separation
Client Domain Bus OLAP GraphDb StreamProcessing publish 3nf Hibernate
Client Domain Bus OLAP GraphDb StreamProcessing publish 3nf Hibernate
Client Domain Bus OLAP GraphDb StreamProcessing publish 3nf Hibernate New
Model?
Client Domain Bus OLAP GraphDb StreamProcessing publish 3nf Hibernate New
Model? ?????
Client Domain OLAP GraphDb StreamProcessing Events
Client Domain OLAP GraphDb StreamProcessing Events New Model
Client Domain OLAP GraphDb StreamProcessing Events OLAP OLAP
Wrong models cause massive accidental complexity
None
A queue with infinite history allows new models to easily
be brought online and to synchronize
Storing Events is a good loss less transactional model Append-Only
#FTW
Reads/Writes is one form of separation
There is no “best” storage.
Focus on strategic design first.