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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Riga Dev Day
January 30, 2015
Programming
320
1
Share
Greg Young - Polyglot Data
Riga Dev Day
January 30, 2015
More Decks by Riga Dev Day
See All by Riga Dev Day
Faster Java by Adding Structs (Sort Of)
rigadevday
0
160
Prepare for JDK 9! by Dalibor Topic
rigadevday
0
140
Little Important Things in Distributed Architectures by Andres Jaan Tack
rigadevday
0
140
Oracle 12c for Developers by Alex Nuijten
rigadevday
1
130
The Language of Regular Expressions. So You Think You Can Speak It? by Rustam Mehmandarov
rigadevday
0
76
Modern Java Component Design with Spring 4.3 by Juergen Hoeller
rigadevday
0
260
Open Source and OpenJDK: Do They Deliver? by Simon Ritter
rigadevday
0
68
Google Apps Integration in Oracle Apex by Richard Martens
rigadevday
0
290
Integration Testing from the Trenches by Nicolas Fränkel
rigadevday
0
240
Other Decks in Programming
See All in Programming
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
3
560
PDI: Como Alavancar Sua Carreira e Seu Negócio
marcelgsantos
0
100
L’IA au service des devs : Anatomie d'un assistant de Code Review
toham
0
210
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
250
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
530
Smarter Angular mit Transformers.js & Prompt API
christianliebel
PRO
1
120
へんな働き方
yusukebe
6
2.9k
Reactive ❤️ Loom: A Forbidden Love Story
franz1981
2
220
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
550
ローカルで稼働するAI エージェントを超えて / beyond-local-ai-agents
gawa
2
250
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
230
[PHPerKaigi 2026]PHPerKaigi2025の企画CodeGolfが最高すぎて社内で内製して半年運営して得た内製と運営の知見
ikezoemakoto
0
340
Featured
See All Featured
Accessibility Awareness
sabderemane
0
94
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
510
Deep Space Network (abreviated)
tonyrice
0
110
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
500
Raft: Consensus for Rubyists
vanstee
141
7.4k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
210
Statistics for Hackers
jakevdp
799
230k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
170
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
370
Testing 201, or: Great Expectations
jmmastey
46
8.1k
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.