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
320
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
170
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
140
The Language of Regular Expressions. So You Think You Can Speak It? by Rustam Mehmandarov
rigadevday
0
78
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
72
Google Apps Integration in Oracle Apex by Richard Martens
rigadevday
0
300
Integration Testing from the Trenches by Nicolas Fränkel
rigadevday
0
240
Other Decks in Programming
See All in Programming
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
160
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
110
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
net-httpのHTTP/2対応について
naruse
0
480
技術記事、 専門家としてのプログラマ、 言語化
mizchi
13
5.1k
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
220
JavaDoc 再入門
nagise
0
330
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.7k
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
190
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.3k
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
220
Featured
See All Featured
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
770
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
530
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Leo the Paperboy
mayatellez
7
1.8k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
230
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
180
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
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.