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

Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

Dec 05, 2014

Download

Documents

MongoDB

Norberto Leite, Solutions Engineer, 10gen (the MongoDB company)
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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