Slide 1

Slide 1 text

MongoDB at woorank

Slide 2

Slide 2 text

Text 3 Text2 Text1 Hi! I’m Nils De Moor, CTO & cofounder at WooRank. This is our dream team. That’s me!

Slide 3

Slide 3 text

yrs old nations peeps avg age 4 8 20 27

Slide 4

Slide 4 text

visitors/day reports/month criteria/report 40k 600k 120

Slide 5

Slide 5 text

Text 3 Text2 Text1

Slide 6

Slide 6 text

Text 3 Text2 Text1

Slide 7

Slide 7 text

Text 3 Text2 Text1

Slide 8

Slide 8 text

That’s a lot of data! 

Slide 9

Slide 9 text

Text 3 Text2 Text1 Now this is the story all about how

Slide 10

Slide 10 text

MySQL

Slide 11

Slide 11 text

But I have to confess something...

Slide 12

Slide 12 text

But I have to confess something... ...and it ain’t gonna be pretty

Slide 13

Slide 13 text

But i have to confess something... ...and it’s gonna be ugly Raw HTML was stored in the DB

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

MySQL + JSON

Slide 16

Slide 16 text

unified format bloated slow alter + - -

Slide 17

Slide 17 text

MySQL + JSON + S3

Slide 18

Slide 18 text

way faster slow listing no data queries + - -

Slide 19

Slide 19 text

redis

Slide 20

Slide 20 text

way faster slow leaderboards no data queries + - - Yay! Leaderboards!

Slide 21

Slide 21 text

Extension  Woorank

Slide 22

Slide 22 text

way... way faster listing no data queries + + -

Slide 23

Slide 23 text

DynamoDB

Slide 24

Slide 24 text

way... way faster listing data queries + + +

Slide 25

Slide 25 text

Text 3 Text2 Text1 Done deal!

Slide 26

Slide 26 text

“What’s the avg number of visits on UK websites?” “What’s the most used javascript framework?” “How many websites mention the word ‘car’?” “How many websites are optimized for mobile?”

Slide 27

Slide 27 text

“What’s the avg number of visits on UK websites?” “What’s the most used javascript framework?” “How many websites mention the word ‘car’?” “How many websites are optimized for mobile?” ? ? ? ? ? ? ? ?

Slide 28

Slide 28 text

Uhm...

Slide 29

Slide 29 text

MongoDB 

Slide 30

Slide 30 text

JSON  BSON

Slide 31

Slide 31 text

Slide 32

Slide 32 text

Slide 33

Slide 33 text

 ...

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Index, index, index

Slide 36

Slide 36 text

Index, index, index ...but index smartly

Slide 37

Slide 37 text

Cover your queries

Slide 38

Slide 38 text

{ _id: 1, user: “john”, status: “A”, name: { first: “John”, last”: “Doe” } } db.users.ensureIndex( { status: 1, user: 1 } )

Slide 39

Slide 39 text

db.users.find( { _id: 1 } ) Covered?

Slide 40

Slide 40 text

db.users.find( { _id: 1 } ) Covered? No!

Slide 41

Slide 41 text

db.users.find( { status: "A" }, { user: 1 } ) Covered?

Slide 42

Slide 42 text

db.users.find( { status: "A" }, { user: 1 } ) Covered? No!

Slide 43

Slide 43 text

db.users.find( { status: "A" }, { user: 1, _id: 0 } ) Covered? Yes!

Slide 44

Slide 44 text

{ _id: 1, user: “john”, status: “A”, name: { first: “John”, last”: “Doe” } } db.users.ensureIndex( { status: 1, user: 1 } ) db.users.ensureIndex( { name: 1 } ) db.users.ensureIndex( { “name.first”: 1 } )

Slide 45

Slide 45 text

db.users.find( { name: { first: "John" } }, { name: 1, _id: 0 } ) Covered?

Slide 46

Slide 46 text

db.users.find( { name: { first: "John" } }, { name: 1, _id: 0 } ) Covered? Yes!

Slide 47

Slide 47 text

db.users.find({"name.first": "John"}, { "name.first": 1, _id: 0 }) Covered?

Slide 48

Slide 48 text

db.users.find({"name.first": "John"}, { "name.first": 1, _id: 0 }) Covered? No!

Slide 49

Slide 49 text

explain()  indexOnly In Doubt?

Slide 50

Slide 50 text

Memory! Index + Cache

Slide 51

Slide 51 text

Slide 52

Slide 52 text

Text 3 Text2 Text1

Slide 53

Slide 53 text

Mesos

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

Thank You!

Slide 56

Slide 56 text

Thank You! Psst... we’re hiring

Slide 57

Slide 57 text

Photo Credit http://24.media.tumblr.com/tumblr_m40zdxT4fP1qght35o6_1280.jpg http://sambaumgarten.me/wp-content/uploads/2013/03/photodune-907223-html-code-m-e1363805086580.jpg http://wallpapers87.com/wallpapers/Counter-Strike-icons-headshot-_255551-25.jpg http://underneaththeirrobes.blogs.com/.a/6a00d83455028f69e201156fa4f118970c-800wi http://weedactivist.com/wp-content/uploads/more.1.png http://mesosphere.io/ http://timemanagementninja.com/wp-content/uploads/2012/12/Do-One-Thing.jpg http://fontawesome.io