Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
340
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
180
Prepare for JDK 9! by Dalibor Topic
rigadevday
0
150
Little Important Things in Distributed Architectures by Andres Jaan Tack
rigadevday
0
150
Oracle 12c for Developers by Alex Nuijten
rigadevday
1
150
The Language of Regular Expressions. So You Think You Can Speak It? by Rustam Mehmandarov
rigadevday
0
89
Modern Java Component Design with Spring 4.3 by Juergen Hoeller
rigadevday
0
270
Open Source and OpenJDK: Do They Deliver? by Simon Ritter
rigadevday
0
79
Google Apps Integration in Oracle Apex by Richard Martens
rigadevday
0
300
Integration Testing from the Trenches by Nicolas Fränkel
rigadevday
0
250
Other Decks in Programming
See All in Programming
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
140
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
190
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
490
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
580
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
390
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
490
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
340
最近”作らせてる” ローカルAIアプリの話
akit37
0
230
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
270
SREの越境 / SRE Collaboration
y0hgi
2
300
FreeBSDでZabbixを動かす
kenkino
0
360
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
570
Technical Leadership for Architectural Decision Making
baasie
3
590
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Facilitating Awesome Meetings
lara
57
7.2k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
350
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
710
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
440
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.