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
300
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
150
Prepare for JDK 9! by Dalibor Topic
rigadevday
0
110
Little Important Things in Distributed Architectures by Andres Jaan Tack
rigadevday
0
100
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
60
Modern Java Component Design with Spring 4.3 by Juergen Hoeller
rigadevday
0
220
Open Source and OpenJDK: Do They Deliver? by Simon Ritter
rigadevday
0
48
Google Apps Integration in Oracle Apex by Richard Martens
rigadevday
0
250
Integration Testing from the Trenches by Nicolas Fränkel
rigadevday
0
210
Other Decks in Programming
See All in Programming
Ethereum_.pdf
nekomatu
0
460
Snowflake x dbtで作るセキュアでアジャイルなデータ基盤
tsoshiro
2
520
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
230
watsonx.ai Dojo #4 生成AIを使ったアプリ開発、応用編
oniak3ibm
PRO
1
140
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
2k
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
Make Impossible States Impossibleを 意識してReactのPropsを設計しよう
ikumatadokoro
0
170
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
110
subpath importsで始めるモック生活
10tera
0
310
flutterkaigi_2024.pdf
kyoheig3
0
130
[Do iOS '24] Ship your app on a Friday...and enjoy your weekend!
polpielladev
0
110
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
520
39k
A Tale of Four Properties
chriscoyier
156
23k
Thoughts on Productivity
jonyablonski
67
4.3k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
RailsConf 2023
tenderlove
29
900
Being A Developer After 40
akosma
87
590k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
For a Future-Friendly Web
brad_frost
175
9.4k
It's Worth the Effort
3n
183
27k
Navigating Team Friction
lara
183
14k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
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.