Slide 1

Slide 1 text

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