Modeling DB
@ Cloud Firestore
Yatima Kagurazaka
://yati.ma
Slide 2
Slide 2 text
yati.ma/qi
Yatima Kagurazaka
Minkore CTO
MENSAn
Physician
I like tech, design, music, etc
My PC: Pixelbook(+ VSCode on Kali
Linux)
Slide 3
Slide 3 text
yati.ma/qi
Agenda
● What is Cloud Firestore
● Structure
● Yatima Model
Slide 4
Slide 4 text
What is Cloud Firestore
Slide 5
Slide 5 text
So easy
but
Equal to prod. use
and
Inexpensive
Slide 6
Slide 6 text
yati.ma/qi
So easy
Realtime
Offline mode
Direct connect to clients
(like Realtime Database)
Slide 7
Slide 7 text
yati.ma/qi
Equal to prod. use
Almost no downtime
Super scalability
Multi region
Strong Consistency
Some query support
Slide 8
Slide 8 text
yati.ma/qi
Almost no downtime
Slide 9
Slide 9 text
“
yati.ma/qi
Super scalability
you'll get the same performance
fetching 1 result from a set of
100, or 100,000,000.
Slide 10
Slide 10 text
Structure
Slide 11
Slide 11 text
Collection, Doc, Field
Slide 12
Slide 12 text
Collection, Doc, Field
Slide 13
Slide 13 text
A doc is minimum unit
at communication
Slide 14
Slide 14 text
yati.ma/qi
A doc is minimum unit
Read
Write
Rule
Update limit: 1/sec
Subcollection depth: ≦ 100
Slide 15
Slide 15 text
All queries are shallow
Slide 16
Slide 16 text
Query is available
only in a collection,
so far
Slide 17
Slide 17 text
For making full use,
change a way of thinking
Slide 18
Slide 18 text
Yatima Model
Slide 19
Slide 19 text
UniFeed:
Supereasy timeline system
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
yati.ma/qi
UniFeed: Usage
Just query at viewer self ID!
Slide 22
Slide 22 text
yati.ma/qi
UniFeed: Limit
Indexes in a document: ≦ 20,000
But we can batch() (≦ 500)
Slide 23
Slide 23 text
yati.ma/qi
Multi UniFeed
Follower: ≦ 10,000,000
(20,000 * 500)
...Actually,
not everyone follow one
Probably up to approx. 1M follower
in rough estimate
Slide 24
Slide 24 text
yati.ma/qi
Level 2 multi UniFeed
Add batch() at Cloud Functions,
more scalable
Follower: ≦ 5,000,000,000
(20,000 * 500 * 500)
and you can go any level!
your bank balance
vs Google’s capacity
Slide 25
Slide 25 text
Twixxer should use it
immediately :-P
Slide 26
Slide 26 text
But wait, how about doc size?
Slide 27
Slide 27 text
yati.ma/qi
UniFeed: Doc size
w/ auth.uid: < approx. 600kb
(20,000 * 30 chars)
w/ pushid: < approx. 300kb
(20,000 * 15 chars)
...Actually, not everyone bla bla
so at most 30kb,
usually 300 or less (realistic!)
Slide 28
Slide 28 text
Firebase as a Cache
(Componentized DB,
Virtual DB)
Slide 29
Slide 29 text
yati.ma/qi
General: Write
Slide 30
Slide 30 text
yati.ma/qi
General: Read
Slide 31
Slide 31 text
yati.ma/qi
FaaC: Write
Virtual
DB
Slide 32
Slide 32 text
yati.ma/qi
FaaC: Read
Slide 33
Slide 33 text
yati.ma/qi
FaaC: Pros
Componentized DB
Flux-like data flow
Explicit communications
Flexibility of DB
Faster view
Slide 34
Slide 34 text
yati.ma/qi
Flux architecture
Slide 35
Slide 35 text
yati.ma/qi
General: Data flow
Slide 36
Slide 36 text
yati.ma/qi
FaaC: Flux-like data flow
Virtual
DB
Slide 37
Slide 37 text
yati.ma/qi
General: Implicit comm.
Who are
you?
Slide 38
Slide 38 text
yati.ma/qi
FaaC: Explicit comm.
I know!
Same
component
Slide 39
Slide 39 text
yati.ma/qi
FaaC: Cons
Need to edit DB/rule occasionally
(Build tool overcome it)
Fetch per component
Slide 40
Slide 40 text
yati.ma/qi
FaaC: Background
Lower cost to edit DB
Component-Based Architecture
Denormalize
Trend of static contents CDN
Slide 41
Slide 41 text
A doc is minimum unit!
English is difficult for me!
Slide 42
Slide 42 text
Fin. ヾ(╹◡╹*)ノ゛
Throw your masakari axe
at me!
://yati.ma