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
What's in a Mobile Database?
Search
Samuel E. Giddins
March 03, 2015
Technology
0
58
What's in a Mobile Database?
Samuel E. Giddins
March 03, 2015
Tweet
Share
More Decks by Samuel E. Giddins
See All by Samuel E. Giddins
Funding Ruby Infrastructure as a Non-Profit
segiddins
0
26
Evolution of Rails within RubyGems.org
segiddins
0
35
The Challenges of Building a Sigstore Client from Scratch
segiddins
0
120
Keeping the Gems Sparkling
segiddins
0
81
A Survey of RubyGems CVEs
segiddins
0
75
Handling 225k requests per second to RubyGems.org
segiddins
0
110
State of the RubyGems 2023
segiddins
0
120
Building Broken Gems
segiddins
0
98
Switching Disciplines as a Tech Lead
segiddins
0
51
Other Decks in Technology
See All in Technology
内製AIチャットボットで学んだDatadog LLM Observability活用術
mkdev10
0
140
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
250
Copilot 宇宙へ 〜生成AIで「専門データの壁」を壊す方法〜
nakasho
0
110
Mitigating geopolitical risks with local-first software and atproto
ept
0
120
社内レビューは機能しているのか
matsuba
0
160
OCI技術資料 : コンピュート・サービス 概要
ocise
4
54k
脳内メモリ、思ったより揮発性だった
koutorino
0
390
中央集権型を脱却した話 分散型をやめて、連邦型にたどり着くまで
sansantech
PRO
1
110
NewSQL_ ストレージ分離と分散合意を用いたスケーラブルアーキテクチャ
hacomono
PRO
4
410
A Casual Introduction to RISC-V
omasanori
0
430
Agent ServerはWeb Serverではない。ADKで考えるAgentOps
akiratameto
0
120
身体を持ったパーソナルAIエージェントの 可能性を探る開発
yokomachi
1
130
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
190
WENDY [Excerpt]
tessaabrams
9
37k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Code Review Best Practice
trishagee
74
20k
Paper Plane (Part 1)
katiecoart
PRO
0
5.7k
The Spectacular Lies of Maps
axbom
PRO
1
630
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
450
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
43k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
52k
Transcript
WHAT’S IN A MOBILE DATABASE?
SAMUEL GIDDINS REALM.IO
Show of hands: WHO’S USED A DATABASE?
LET’S NAME SOME
MOST OF THOSE ARE SERVER DATABASES
None
SQLITE THE STATUS QUO
▸ Single-threaded ▸ Dynamically-typed ▸ Weakly-typed ▸ Designed in 2000
WHAT ARE OUR CONSTRAINTS?
▸ Running on a device ▸ Can’t update database code
on a whim ▸ Little RAM ▸ Relatively few CPU cores ▸ Multiple processes ▸ Long-running use of data
WHAT DO WE WANT TO OPTIMIZE FOR?
▸ Querying ▸ Reading values ▸ Maintainable API ▸ Safe
Migrations ▸ Static + Dynamic Schemas
THE GOALS
▸ Cross-platform ▸ Memory-mapped ▸ Thread-safe ▸ Object-oriented ▸ Blazing
fast ▸ Sane interface
CROSS PLATFORM
People build services that need to run on multiple platforms.
Their database should reflect this.
MEMORY MAPPING
void *mmap( void *addr, size_t length, int prot, int flags,
int fd, off_t offset ); This function is magical.
Blur the line between in-memory and on-disk to get the
best of both worlds. Take advantage of optimizations in the kernel and let it do the hard work for you.
THREAD SAFETY
THREAD SAFETY PERHAPS THE MOST LOADED WORD IN CS
WELL-DEFINED THREADING MODEL ▸ What can be passed between threads?
▸ How easily can I isolate things that can’t be?
Built with speed & safety in mind: ▸ No reader
lock ▸ Allow concurrent reading & writing ▸ Let the user know when they violate the threading contract
OBJECT-ORIENTED API
▸ First-class model objects ▸ Support for persisted + in
memory objects ▸ No invisible web of classes
BLAZING FAST
WHY SHOULD OBJECTS AND THE DATABASE EVER GROW APART?
WHY SHOULD OBJECTS AND THE DATABASE EVER GROW APART? OR
WHERE ORMS WENT WRONG
▸ Lazily create objects in memory ▸ Access & set
values directly in the DB ▸ Optimized query engine
SANE API
▸ What do I need a reference to? ▸ Platform
coherence ▸ Isolate DB interaction ▸ Make it impossible to mess up
LET’S RECAP
▸ Cross-platform ▸ Memory-mapped ▸ Thread-safe ▸ Object-oriented ▸ Blazing
fast ▸ Sane interface
SOUNDS A LOT LIKE THE DREAM, RIGHT?
Make persistence just another aspect of your data, instead of
a whole convoluted system.
⾠ This might not be the approach for everyone. Take
a look at the goals, and see if they align with your own.
My company, Realm, is working towards building a database that
hits these bullet points. I’m not here to sell you on Realm. But building something that mirrors those goals is why we exist.
EXAMPLES?
Available now on Speaker Deck. https://speakerdeck.com/segiddins/whats-in-a-mobile-database
db.objects(Question).map { $0.ask }
SAMUEL GIDDINS REALM.IO @SEGIDDINS