• Share
  • Email
  • Embed
  • Like
  • Private Content
Morning with MongoDB Paris 2012 - MongoDB Basic Concepts
 

Morning with MongoDB Paris 2012 - MongoDB Basic Concepts

on

  • 1,322 views

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

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

Statistics

Views

Total Views
1,322
Views on SlideShare
1,098
Embed Views
224

Actions

Likes
0
Downloads
20
Comments
0

3 Embeds 224

http://www.10gen.com 212
http://www.mongodb.com 7
http://drupal1.10gen.cc 5

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Morning with MongoDB Paris 2012 - MongoDB Basic Concepts Morning with MongoDB Paris 2012 - MongoDB Basic Concepts Presentation Transcript

    • MongoDB Basic Concepts Norberto Leite Senior Solutions Architect, EMEA norberto@10gen.com @nleiteThursday, 8 November 12
    • Agenda •Overview •Replication •Scalability •Consistency & Durability •Flexibility, Developer Experience •RoadmapThursday, 8 November 12
    • Your data needs started here... http://bit.ly/OT71M4Thursday, 8 November 12
    • ...but soon you had to be here http://bit.ly/OxcsisThursday, 8 November 12
    • Basic Concepts Application Document Oriented High { author : “steve”, date : new Date(), text : “About MongoDB...”, Performance tags : [“tech”, “database”]} Fully Consistent Horizontally ScalableThursday, 8 November 12
    • Tradeoff: Scale vs Functionality • memcached scalability & performance •key/value • RDBMS depth of functionalityThursday, 8 November 12
    • ReplicationThursday, 8 November 12
    • Why do we need replication •Failover •Backups •Secondary batch jobs •High availabilityThursday, 8 November 12
    • Replica Sets Data Availability across nodes • Data Protection • Multiple copies of the data • Spread across Data Centers, AZs • High Availability • Automated Failover • Automated RecoveryThursday, 8 November 12
    • Replica Sets App Write Primary Asynchronous Read Replication Secondary Read Secondary ReadThursday, 8 November 12
    • Replica Sets App Write Primary Read Secondary Read Secondary ReadThursday, 8 November 12
    • Replica Sets App Primary Write Primary Automatic Election of new Primary Read Secondary ReadThursday, 8 November 12
    • Replica Sets App Recovering Write New primary serves Primary data Read Secondary ReadThursday, 8 November 12
    • Replica Sets App Secondary Read Write Primary Read Secondary ReadThursday, 8 November 12
    • ScalabilityThursday, 8 November 12
    • Horizontal ScalabilityThursday, 8 November 12
    • Sharding Data Distribution across nodes • Data location transparent to your code • Data distribution is automatic • Data re-distribution is automatic • Aggregate system resources horizontally • No code changesThursday, 8 November 12
    • Sharding - Range distribution sh.shardCollection("test.tweets", {_id: 1} , false) shard01 shard02 shard03Thursday, 8 November 12
    • Sharding - Range distribution shard01 shard02 shard03 a-i j-r s-zThursday, 8 November 12
    • Sharding - Splits shard01 shard02 shard03 a-i ja-jz s-z k-rThursday, 8 November 12
    • Sharding - Splits shard01 shard02 shard03 a-i ja-ji s-z ji-js js-jw jz-rThursday, 8 November 12
    • Sharding - Auto Balancing shard01 shard02 shard03 a-i ja-ji s-z ji-js js-jw js-jw jz-r jz-rThursday, 8 November 12
    • Sharding - Auto Balancing shard01 shard02 shard03 a-i ja-ji n-z ji-js js-jw jz-rThursday, 8 November 12
    • Sharding - Routed Query find({_id: "norberto"}) shard01 shard02 shard03 a-i ja-ji n-z ji-js js-jw jz-rThursday, 8 November 12
    • Sharding - Routed Query find({_id: "norberto"}) shard01 shard02 shard03 a-i ja-ji n-z ji-js js-jw jz-rThursday, 8 November 12
    • Sharding - Scatter Gather find({email: "norberto@10gen.com"}) shard01 shard02 shard03 a-i ja-ji n-z ji-js js-jw jz-rThursday, 8 November 12
    • Sharding - Scatter Gather find({email: "norberto@10gen.com"}) shard01 shard02 shard03 a-i ja-ji n-z ji-js js-jw jz-rThursday, 8 November 12
    • Sharding - Caching 96 GB Mem 3:1 Data/Mem shard01 a-i 300 GB Data j-r n-z 300 GBThursday, 8 November 12
    • Aggregate Horizontal Resources 96 GB Mem 96 GB Mem 96 GB Mem 1:1 Data/Mem 1:1 Data/Mem 1:1 Data/Mem shard01 shard02 shard03 a-i j-r n-z 300 GB Data 100 GB 100 GB 100 GBThursday, 8 November 12
    • Consistency & DurabilityThursday, 8 November 12
    • 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: MongoDBThursday, 8 November 12
    • 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 SafeThursday, 8 November 12
    • Data DurabilityThursday, 8 November 12
    • FlexibilityThursday, 8 November 12
    • 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 relationshipsThursday, 8 November 12
    • Json place1 = { name : "10gen HQ", address : "578 Broadway 7th Floor", city : "New York", zip : "10011", tags : [ "business", "tech" ] }Thursday, 8 November 12
    • Schema Design Relational DatabaseThursday, 8 November 12
    • Schema Design MongoDB embedding linkingThursday, 8 November 12
    • 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
    • Embedding > 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" ! } ] }Thursday, 8 November 12
    • JSON & Scaleout • Embedding removes need for • Distributed Joins • Two Phase commit • Enables data to be distributed across many nodes without penaltyThursday, 8 November 12
    • RoadmapThursday, 8 November 12
    • 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 improvementsThursday, 8 November 12
    • And beyond • Full Text Search • Collection / Extent level locking • Field level security • AuditThursday, 8 November 12
    • http://bit.ly/UmUnsUThursday, 8 November 12
    • http://bit.ly/cnP77LThursday, 8 November 12
    • http://bit.ly/ODoMhhThursday, 8 November 12
    • http://bit.ly/uW2nkThursday, 8 November 12
    • download at mongodb.org! norberto@10gen.com Support, Training, Consulting, Events, Meetups http://www.10gen.com We are Hiring!!! Facebook! Twitter! LinkedIn! http://bit.ly/mongofb! http://twitter.com/mongodb! http://linkd.in/joinmongo!Thursday, 8 November 12