morning with mongodb paris 2012 - mongodb basic concepts

49
MongoDB Basic Concepts Norberto Leite Senior Solutions Architect, EMEA [email protected] @nleite Thursday, 8 November 12

Upload: mongodb

Post on 05-Dec-2014

1.492 views

Category:

Documents


2 download

DESCRIPTION

Norberto Leite, Solutions Engineer, 10gen (the MongoDB company)

TRANSCRIPT

Page 1: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

MongoDB Basic Concepts

Norberto Leite

Senior Solutions Architect, [email protected]

@nleite

Thursday, 8 November 12

Page 2: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Agenda

•Overview•Replication•Scalability•Consistency & Durability•Flexibility, Developer Experience•Roadmap

Thursday, 8 November 12

Page 3: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

http://bit.ly/OT71M4

Your data needs started here...

Thursday, 8 November 12

Page 4: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

http://bit.ly/Oxcsis

...but soon you had to be here

Thursday, 8 November 12

Page 5: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Basic Concepts

Horizontally Scalable

{ author : “steve”, date : new Date(), text : “About MongoDB...”, tags : [“tech”, “database”]}

Document Oriented

Application

Fully Consistent

High Performance

Thursday, 8 November 12

Page 6: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

depth of functionality

scal

abili

ty &

per

form

ance •memcached

•key/value

• RDBMS

Tradeoff: Scale vs Functionality

Thursday, 8 November 12

Page 7: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Replication

Thursday, 8 November 12

Page 8: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Why do we need replication

•Failover •Backups•Secondary batch jobs •High availability

Thursday, 8 November 12

Page 9: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Replica SetsData Availability across nodes• Data Protection

• Multiple copies of the data• Spread across Data Centers, AZs

• High Availability• Automated Failover• Automated Recovery

Thursday, 8 November 12

Page 10: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Replica Sets

Primary

Secondary

Secondary

Read

Write

Read

Read

App

Asynchronous Replication

Thursday, 8 November 12

Page 11: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Replica Sets

Primary

Secondary

Secondary

Read

Write

Read

Read

App

Thursday, 8 November 12

Page 12: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Replica Sets

Primary

Primary

Secondary

Read

Write

Read

Automatic Election of new Primary

App

Thursday, 8 November 12

Page 13: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Replica Sets

Recovering

Primary

Secondary

Read

Write

Read

New primary serves data

App

Thursday, 8 November 12

Page 14: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Replica Sets

Secondary

Primary

Secondary

Read

Write

Read

Read

App

Thursday, 8 November 12

Page 15: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Scalability

Thursday, 8 November 12

Page 16: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Horizontal Scalability

Thursday, 8 November 12

Page 17: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

ShardingData Distribution across nodes• Data location transparent to your code• Data distribution is automatic• Data re-distribution is automatic• Aggregate system resources horizontally• No code changes

Thursday, 8 November 12

Page 18: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Sharding - Range distribution

shard01 shard02 shard03

sh.shardCollection("test.tweets", {_id: 1} , false)

Thursday, 8 November 12

Page 19: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Sharding - Range distribution

shard01 shard02 shard03

a-i j-r s-z

Thursday, 8 November 12

Page 20: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Sharding - Splits

shard01 shard02 shard03

a-i ja-jz s-z

k-r

Thursday, 8 November 12

Page 21: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Sharding - Splits

shard01 shard02 shard03

a-i ja-ji s-z

ji-js

js-jw

jz-r

Thursday, 8 November 12

Page 22: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Sharding - Auto Balancing

shard01 shard02 shard03

a-i ja-ji s-z

ji-js

js-jw

jz-r

js-jw

jz-r

Thursday, 8 November 12

Page 23: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Sharding - Auto Balancing

shard01 shard02 shard03

a-i ja-ji n-z

ji-js

js-jw

jz-r

Thursday, 8 November 12

Page 24: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Sharding - Routed Query

shard01 shard02 shard03

a-i ja-ji n-z

ji-js

js-jw

jz-r

find({_id: "norberto"})

Thursday, 8 November 12

Page 25: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Sharding - Routed Query

shard01 shard02 shard03

a-i ja-ji n-z

ji-js

find({_id: "norberto"})

js-jw

jz-r

Thursday, 8 November 12

Page 26: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Sharding - Scatter Gather

shard01 shard02 shard03

a-i ja-ji n-z

ji-js

js-jw

jz-r

find({email: "[email protected]"})

Thursday, 8 November 12

Page 27: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Sharding - Scatter Gather

shard01 shard02 shard03

a-i ja-ji n-z

ji-js

js-jw

jz-r

find({email: "[email protected]"})

Thursday, 8 November 12

Page 28: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Sharding - Caching

shard01

a-i

j-r

n-z

300

GB

Dat

a

300 GB

96 GB Mem3:1 Data/Mem

Thursday, 8 November 12

Page 29: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Aggregate Horizontal Resources

shard01 shard02 shard03

a-i j-r n-z

96 GB Mem1:1 Data/Mem

100 GB 100 GB 100 GB

300

GB

Dat

a

96 GB Mem1:1 Data/Mem

96 GB Mem1:1 Data/Mem

Thursday, 8 November 12

Page 30: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Consistency & Durability

Thursday, 8 November 12

Page 31: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Two choices for consistency

•Eventual consistency•Allow updates when a system has been partitioned•Resolve conflicts later•Example: CouchDB, Cassandra

•Immediate consistency•Limit the application of updates to a single master node for a given slice of data

•Another node can take over after a failure is detected•Avoids the possibility of conflicts•Example: MongoDB

Thursday, 8 November 12

Page 32: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Durability

•For how long is my data available?•When do I now that my data is safe?•Where?

•Mongodb style•Fire and Forget•Get Last Error•Journal Sync•Replica Safe

Thursday, 8 November 12

Page 33: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Data Durability

Thursday, 8 November 12

Page 34: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Flexibility

Thursday, 8 November 12

Page 35: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Data Model

• Why JSON?• Provides a simple, well understood encapsulation of data• Maps simply to the object in your OO language• Linking & Embedding to describe relationships

Thursday, 8 November 12

Page 36: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Json

place1 = { name : "10gen HQ", address : "578 Broadway 7th Floor", city : "New York", zip : "10011", tags : [ "business", "tech" ]}

Thursday, 8 November 12

Page 37: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Schema DesignRelational Database

Thursday, 8 November 12

Page 38: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Schema DesignMongoDB embedding

linkingThursday, 8 November 12

Page 39: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Schemas in MongoDB

Design documents that simply map to your application

post = {author: "Hergé", date: new Date(), text: "Destination Moon", tags: ["comic", "adventure"]}

> db.posts.save(post)

Thursday, 8 November 12

Page 40: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

> db.blogs.find( { author: "Hergé"} )

{ _id : ObjectId("4c4ba5c0672c685e5e8aabf3"), author : "Hergé", date : ISODate("2011-09-18T09:56:06.298Z"), text : "Destination Moon", tags : [ "comic", "adventure" ], comments : [! {! ! author : "Kyle",! ! date : ISODate("2011-09-19T09:56:06.298Z"),! ! text : "great book"! } ] }

Embedding

Thursday, 8 November 12

Page 41: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

JSON & Scaleout

• Embedding removes need for• Distributed Joins• Two Phase commit

• Enables data to be distributed across many nodes without penalty

Thursday, 8 November 12

Page 42: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Roadmap

Thursday, 8 November 12

Page 43: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

2.4 Roadmap

Must• Kerberos integration• LDAP/AD integration

Nice To Have• Hash Shard Key• Background Index Build on Secondaries• V8 for Map/Reduce (replaces Spider Monkey)• Geo: intersecting polygons, Geo shard key• Agg: $out, more functions, speed improvements

Thursday, 8 November 12

Page 44: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

And beyond

• Full Text Search• Collection / Extent level locking• Field level security• Audit

Thursday, 8 November 12

Page 49: Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

download at mongodb.org!

Facebook!http://bit.ly/mongofb!

Twitter!http://twitter.com/mongodb!

LinkedIn!http://linkd.in/joinmongo!

Support, Training, Consulting, Events, Meetupshttp://www.10gen.com

[email protected]

We are Hiring!!!

Thursday, 8 November 12