SlideShare a Scribd company logo
Building your First App with
MongoDB


Blossom Coryat
Solutions Architect, 10gen
Today‟s Talk
• Introduction to MongoDB


• Discuss data modeling, queries, indexes,
 updates and aggregation in MongoDB within
 the context of building a location-based app
What is MongoDB?
MongoDB is a ___________
database
• Document Oriented
• Open source
• High performance
• Highly Available
• Horizontally scalable
• Full featured
Document Oriented
• A document is essentially an associative array
• Document == JSON object
• Document == PHP Array
• Document == Python Dict
• Document == Ruby Hash
• Etc.
Open Source
• MongoDB is an open source project
  – Started and maintained by 10gen

• Licensed under the AGPL
• Commercial licenses available
• On GitHub
• Contributions welcome
High Performance
• Written in C++
• Runs nearly everywhere
• Extensive use of memory-mapped files
• Data serialized as BSON (fast parsing)
• Full support for primary & secondary indexes
• Document model = less work
Full Featured
• Ad Hoc queries
• Real time aggregation
• Rich query capabilities
• Flexible schema
• Geospatial features
• Support for most programming languages
MongoDB drivers
• Official Support for 12 languages
• Community drivers for tons more
• Drivers connect to mongo servers
• Drivers translate BSON into native types
• Installed using typical means (npm, pecl, gem,
 pip)
Webinar: Building Your First Application with MongoDB
Webinar: Building Your First Application with MongoDB
Highly Available
Replica Sets
• Redundancy and
 Failover
• Multi-DC deployments
• Zero downtime for
 upgrades and
 maintenance
Horizontally Scalable
Sharding
• Partition your
 data
• Auto-balancing
• Scale write
 throughput
• Increase
 capacity
Document Database
RDBMS                 MongoDB
Row           ➜   Document
Table, View   ➜   Collection
Index         ➜   Index
Join          ➜   Embedded Document
Foreign       ➜   Reference
Key
Partition     ➜ Shard
Terminology
Typical (relational) ERD
MongoDB ERD
Example Document
{
        _id : ObjectId("4c4ba5c0672c685e5e8aabf3"),
         author : "Blossom",
         date : ISODate("2012-11-02T11:52:27.442Z"),
         title: "Intro to MongoDB",
         tags : [ "tech", "databases”, ”documents" ],
         comments : [{
                author : "Fred",
           date : ISODate("2012-11-03T17:22:21.124Z"),
           text : ”interesting article, lots of great nuggets of
                  wisdom"
          }],
          comment_count : 1
    }
Building a check-in web
app
Requirements
• Users should be able to check in to a location
• Should be able to view check-ins by location
• Ability to assign categories to places
• Find nearby places
• Generate check-in statistics
First step in any application is
Determine your entities
Check-in App Entities
• People checking in


• Places to check in to


• Check-in events
In a relational based app
We would start by doing
schema design
Relational schema design
• Large entity relationship diagrams
• Complex create table statements
• Tables just to join tables together
• ORMs to map tables to objects
• Lots of revisions until we get it just right
In a MongoDB based app
We start building our
and let the schema evolve
app
MongoDB collections
• Users
• Places
• Check-ins
  – Separate collection to manage discrete check-in events
    and support high workload of writes
We‟ll use the JS shell to get
started
Start with an object
(or array, hash, dict, etc)

> user = {
              firstname: 'fred',
              lastname: 'jones',
}
Insert the record

> db.users.insert(user)




                  No collection creation
                  needed
Querying for the user
> db.users.findOne()
{
    "_id" : ObjectId("50804d0bd94ccab2da652599"),
    "firstname" : "fred",
    "lastname" : "jones"
}
_id
• _id is the primary key in MongoDB
• Automatically indexed
• Automatically created as an ObjectId if not
 provided
• Any unique immutable value could be used
ObjectId
• ObjectId is a special 12 byte value
• Guaranteed to be unique across your cluster
• ObjectId("50804d0bd94ccab2da652599")
           |---------||-----||-----||--------|
      ts                mac             pid      inc
Places v1
> db.places.insert({
    name: “Exploratorium”,
    address: “3601 Lyon St”
    city: “San Francisco”,
    postcode: 94123
}
Places v1
> db.places.insert({
    name: “Exploratorium”,
    address: “3601 Lyon St”
    city: “San Francisco”,
    postcode: 94123
}


> db.places.find({name:”Exploratorium”})
Places v2
> db.places.insert({
    name: “Exploratorium”,
    address: “3601 Lyon St”
    city: “San Francisco”,
    postcode: 94123,
    categories: [“Social”, “Arts”, “Museums”]
}
Places v2
> db.places.insert({
    name: “Exploratorium”,
    address: “3601 Lyon St”
    city: “San Francisco”,
    postcode: 94123,
    categories: [“Social”, “Arts”, “Museums”]
}


> db.places.ensureIndex({categories: 1})
> db.places.find({categories: ”Social”})
Places v3
> db.places.insert({
    name: “Exploratorium”,
    address: “3601 Lyon St”
    city: “San Francisco”,
    postcode: 94123,
    categories: [“Social”, “Arts”, “Museums”],
    location: [37.803963,-122.448531]
}


> db.places.ensureIndex({location: “2d”})
> db.places.find({location:{$near:[37.81,-122.45]}})
Indexes
• Can be created on any field
   – Including fields within sub-documents or embedded arrays

• Support for compound indexes on any
 combination of keys
• Indexes should exist for primary, common, and
 user-facing queries
Indexes on Places
// creating indexes
> db.places.ensureIndex({name:1})
> db.places.ensureIndex({categories:1})
> db.places.ensureIndex({location:”2d”})


// finding by regular expression
> db.places.find({name:/^explor/i})


// finding nearby
> db.places.find({location:{$near:[37.81,-122.45]}})


// finding by category
> db.places.find({categories: ”Social”})
Updating Documents
• MongoDB supports atomic, in-place document updates

• $inc

• $set, $unset

• $push, $pushAll

• $addToSet, $each

• $pop, $pull, $pullAll

• $rename

• $bit
Updating
> db.checkins.insert({
     place_id: pid,
     user_id: uid,
     datetime: new Date()
})


// update the “checkins” count on place and user
// “checkins” will be added if it doesn‟t exist


> db.places.update({_id: pid}, {$inc: {checkins: 1}})
> db.users.update({_id: uid}, {$inc: {checkins: 1}})
Simple Statistics
// find the last 10 checkins for a place:
> p = db.places.find({name:”Exploratorium”})
> db.checkins.find({place_id:p[„_id‟]})
    .sort({datetime:-1}).limit(10)


// how many people checked in today
> db.checkins.find({place_id:p[„_id‟],
    datetime: {$gt: midnight}}).count()
Aggregation Framework
• Documents pass through a pipeline of
 operations
• Mechanism to calculate aggregate values across
 your data
• Similar functionality to GROUP BY and related
 SQL operators
• Along with computation, data can be reshaped
   – Add computed fields
   – Create virtual sub-objects
   – Extract sub-fields
Aggregation Framework
Operators
• $project
• $match
• $limit
• $skip
• $unwind
• $group
• $sort
Webinar: Building Your First Application with MongoDB
Advanced Statistics
// checkins per place per day of the week
> db.checkins.aggregate(
    {$project: {
          place_id:1,
          dotw: { $dayOfWeek: ”$datetime”}
    }},
    {$group: {
          _id: {place_id: “$place_id”, dotw: “$dotw”},
          count: {$sum: 1}
    }})
Deployment
Deployment

• Single server
 - need a strong backup plan
                               P
Deployment

• Single server
 - need a strong backup plan
                                   P

• Replica sets                 P   S   S
 - High availability
 - Automatic failover
Deployment

• Single server
 - need a strong backup plan
                                   P

• Replica sets                 P   S   S
 - High availability
 - Automatic failover

                               P   S   S
• Sharded
 - Horizontally scale
 - Auto balancing              P   S   S
Learn More:
10gen.com/presentations

education.10gen.com

More Related Content

What's hot (20)

PDF
Your Data, Your Search, ElasticSearch (EURUKO 2011)
Karel Minarik
 
PDF
SDEC2011 NoSQL concepts and models
Korea Sdec
 
PPTX
Webinar: Building Your First MongoDB App
MongoDB
 
PDF
ElasticSearch - index server used as a document database
Robert Lujo
 
PPTX
Dev Jumpstart: Build Your First App with MongoDB
MongoDB
 
PPTX
Back to Basics, webinar 2: La tua prima applicazione MongoDB
MongoDB
 
PPT
Introduction to MongoDB
Nosh Petigara
 
PPTX
How to leverage MongoDB for Big Data Analysis and Operations with MongoDB's A...
Gianfranco Palumbo
 
PDF
Open Source Logging and Monitoring Tools
Phase2
 
KEY
OSCON 2012 MongoDB Tutorial
Steven Francia
 
PPTX
MongoDB
Bembeng Arifin
 
PDF
Elasticsearch first-steps
Matteo Moci
 
PPTX
Elasticsearch 5.0
Matias Cascallares
 
PPT
Mongo Web Apps: OSCON 2011
rogerbodamer
 
PDF
Introduction to MongoDB
Justin Smestad
 
PPTX
An Introduction to Elastic Search.
Jurriaan Persyn
 
PPTX
High Performance Applications with MongoDB
MongoDB
 
PPTX
Beyond the Basics 2: Aggregation Framework
MongoDB
 
PPTX
Introduction to Elasticsearch with basics of Lucene
Rahul Jain
 
PDF
Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...
Miguel Gallardo
 
Your Data, Your Search, ElasticSearch (EURUKO 2011)
Karel Minarik
 
SDEC2011 NoSQL concepts and models
Korea Sdec
 
Webinar: Building Your First MongoDB App
MongoDB
 
ElasticSearch - index server used as a document database
Robert Lujo
 
Dev Jumpstart: Build Your First App with MongoDB
MongoDB
 
Back to Basics, webinar 2: La tua prima applicazione MongoDB
MongoDB
 
Introduction to MongoDB
Nosh Petigara
 
How to leverage MongoDB for Big Data Analysis and Operations with MongoDB's A...
Gianfranco Palumbo
 
Open Source Logging and Monitoring Tools
Phase2
 
OSCON 2012 MongoDB Tutorial
Steven Francia
 
Elasticsearch first-steps
Matteo Moci
 
Elasticsearch 5.0
Matias Cascallares
 
Mongo Web Apps: OSCON 2011
rogerbodamer
 
Introduction to MongoDB
Justin Smestad
 
An Introduction to Elastic Search.
Jurriaan Persyn
 
High Performance Applications with MongoDB
MongoDB
 
Beyond the Basics 2: Aggregation Framework
MongoDB
 
Introduction to Elasticsearch with basics of Lucene
Rahul Jain
 
Code decoupling from Symfony (and others frameworks) - PHP Conference Brasil ...
Miguel Gallardo
 

Similar to Webinar: Building Your First Application with MongoDB (20)

PPT
Building web applications with mongo db presentation
Murat Çakal
 
KEY
Building Your First MongoDB Application
Rick Copeland
 
KEY
Building your first application w/mongoDB MongoSV2011
Steven Francia
 
PPTX
Webinar: General Technical Overview of MongoDB for Dev Teams
MongoDB
 
KEY
Mongodb intro
christkv
 
PDF
MongoDB.pdf
KuldeepKumar778733
 
PPTX
First app online conf
MongoDB
 
PDF
OSDC 2012 | Building a first application on MongoDB by Ross Lawley
NETWAYS
 
PDF
Introduction to MongoDB
Mike Dirolf
 
PPT
Building Your First MongoDB App ~ Metadata Catalog
hungarianhc
 
PDF
MongoDB: a gentle, friendly overview
Antonio Pintus
 
PDF
Using Spring with NoSQL databases (SpringOne China 2012)
Chris Richardson
 
KEY
2012 phoenix mug
Paul Pedersen
 
PPTX
Webinar: Getting Started with MongoDB - Back to Basics
MongoDB
 
PPTX
Mongo db 101 dc group
John Ragan
 
KEY
MongoDB
Steven Francia
 
PDF
MongoDB FabLab León
Juan Antonio Roy Couto
 
PDF
MongoDB Atlas Workshop - Singapore
Ashnikbiz
 
KEY
Managing Social Content with MongoDB
MongoDB
 
PDF
MongoDB in FS
MongoDB
 
Building web applications with mongo db presentation
Murat Çakal
 
Building Your First MongoDB Application
Rick Copeland
 
Building your first application w/mongoDB MongoSV2011
Steven Francia
 
Webinar: General Technical Overview of MongoDB for Dev Teams
MongoDB
 
Mongodb intro
christkv
 
MongoDB.pdf
KuldeepKumar778733
 
First app online conf
MongoDB
 
OSDC 2012 | Building a first application on MongoDB by Ross Lawley
NETWAYS
 
Introduction to MongoDB
Mike Dirolf
 
Building Your First MongoDB App ~ Metadata Catalog
hungarianhc
 
MongoDB: a gentle, friendly overview
Antonio Pintus
 
Using Spring with NoSQL databases (SpringOne China 2012)
Chris Richardson
 
2012 phoenix mug
Paul Pedersen
 
Webinar: Getting Started with MongoDB - Back to Basics
MongoDB
 
Mongo db 101 dc group
John Ragan
 
MongoDB FabLab León
Juan Antonio Roy Couto
 
MongoDB Atlas Workshop - Singapore
Ashnikbiz
 
Managing Social Content with MongoDB
MongoDB
 
MongoDB in FS
MongoDB
 
Ad

More from MongoDB (20)

PDF
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB
 
PDF
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
PDF
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB
 
PDF
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB
 
PDF
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB
 
PDF
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB
 
PDF
MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
PDF
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB
 
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB
 
PDF
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB
 
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB
 
PDF
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB
 
PDF
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB
 
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB
 
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB
 
Ad

Webinar: Building Your First Application with MongoDB

  • 1. Building your First App with MongoDB Blossom Coryat Solutions Architect, 10gen
  • 2. Today‟s Talk • Introduction to MongoDB • Discuss data modeling, queries, indexes, updates and aggregation in MongoDB within the context of building a location-based app
  • 4. MongoDB is a ___________ database • Document Oriented • Open source • High performance • Highly Available • Horizontally scalable • Full featured
  • 5. Document Oriented • A document is essentially an associative array • Document == JSON object • Document == PHP Array • Document == Python Dict • Document == Ruby Hash • Etc.
  • 6. Open Source • MongoDB is an open source project – Started and maintained by 10gen • Licensed under the AGPL • Commercial licenses available • On GitHub • Contributions welcome
  • 7. High Performance • Written in C++ • Runs nearly everywhere • Extensive use of memory-mapped files • Data serialized as BSON (fast parsing) • Full support for primary & secondary indexes • Document model = less work
  • 8. Full Featured • Ad Hoc queries • Real time aggregation • Rich query capabilities • Flexible schema • Geospatial features • Support for most programming languages
  • 9. MongoDB drivers • Official Support for 12 languages • Community drivers for tons more • Drivers connect to mongo servers • Drivers translate BSON into native types • Installed using typical means (npm, pecl, gem, pip)
  • 13. Replica Sets • Redundancy and Failover • Multi-DC deployments • Zero downtime for upgrades and maintenance
  • 15. Sharding • Partition your data • Auto-balancing • Scale write throughput • Increase capacity
  • 17. RDBMS MongoDB Row ➜ Document Table, View ➜ Collection Index ➜ Index Join ➜ Embedded Document Foreign ➜ Reference Key Partition ➜ Shard Terminology
  • 20. Example Document { _id : ObjectId("4c4ba5c0672c685e5e8aabf3"), author : "Blossom", date : ISODate("2012-11-02T11:52:27.442Z"), title: "Intro to MongoDB", tags : [ "tech", "databases”, ”documents" ], comments : [{ author : "Fred", date : ISODate("2012-11-03T17:22:21.124Z"), text : ”interesting article, lots of great nuggets of wisdom" }], comment_count : 1 }
  • 22. Requirements • Users should be able to check in to a location • Should be able to view check-ins by location • Ability to assign categories to places • Find nearby places • Generate check-in statistics
  • 23. First step in any application is Determine your entities
  • 24. Check-in App Entities • People checking in • Places to check in to • Check-in events
  • 25. In a relational based app We would start by doing schema design
  • 26. Relational schema design • Large entity relationship diagrams • Complex create table statements • Tables just to join tables together • ORMs to map tables to objects • Lots of revisions until we get it just right
  • 27. In a MongoDB based app We start building our and let the schema evolve app
  • 28. MongoDB collections • Users • Places • Check-ins – Separate collection to manage discrete check-in events and support high workload of writes
  • 29. We‟ll use the JS shell to get started
  • 30. Start with an object (or array, hash, dict, etc) > user = { firstname: 'fred', lastname: 'jones', }
  • 31. Insert the record > db.users.insert(user) No collection creation needed
  • 32. Querying for the user > db.users.findOne() { "_id" : ObjectId("50804d0bd94ccab2da652599"), "firstname" : "fred", "lastname" : "jones" }
  • 33. _id • _id is the primary key in MongoDB • Automatically indexed • Automatically created as an ObjectId if not provided • Any unique immutable value could be used
  • 34. ObjectId • ObjectId is a special 12 byte value • Guaranteed to be unique across your cluster • ObjectId("50804d0bd94ccab2da652599") |---------||-----||-----||--------| ts mac pid inc
  • 35. Places v1 > db.places.insert({ name: “Exploratorium”, address: “3601 Lyon St” city: “San Francisco”, postcode: 94123 }
  • 36. Places v1 > db.places.insert({ name: “Exploratorium”, address: “3601 Lyon St” city: “San Francisco”, postcode: 94123 } > db.places.find({name:”Exploratorium”})
  • 37. Places v2 > db.places.insert({ name: “Exploratorium”, address: “3601 Lyon St” city: “San Francisco”, postcode: 94123, categories: [“Social”, “Arts”, “Museums”] }
  • 38. Places v2 > db.places.insert({ name: “Exploratorium”, address: “3601 Lyon St” city: “San Francisco”, postcode: 94123, categories: [“Social”, “Arts”, “Museums”] } > db.places.ensureIndex({categories: 1}) > db.places.find({categories: ”Social”})
  • 39. Places v3 > db.places.insert({ name: “Exploratorium”, address: “3601 Lyon St” city: “San Francisco”, postcode: 94123, categories: [“Social”, “Arts”, “Museums”], location: [37.803963,-122.448531] } > db.places.ensureIndex({location: “2d”}) > db.places.find({location:{$near:[37.81,-122.45]}})
  • 40. Indexes • Can be created on any field – Including fields within sub-documents or embedded arrays • Support for compound indexes on any combination of keys • Indexes should exist for primary, common, and user-facing queries
  • 41. Indexes on Places // creating indexes > db.places.ensureIndex({name:1}) > db.places.ensureIndex({categories:1}) > db.places.ensureIndex({location:”2d”}) // finding by regular expression > db.places.find({name:/^explor/i}) // finding nearby > db.places.find({location:{$near:[37.81,-122.45]}}) // finding by category > db.places.find({categories: ”Social”})
  • 42. Updating Documents • MongoDB supports atomic, in-place document updates • $inc • $set, $unset • $push, $pushAll • $addToSet, $each • $pop, $pull, $pullAll • $rename • $bit
  • 43. Updating > db.checkins.insert({ place_id: pid, user_id: uid, datetime: new Date() }) // update the “checkins” count on place and user // “checkins” will be added if it doesn‟t exist > db.places.update({_id: pid}, {$inc: {checkins: 1}}) > db.users.update({_id: uid}, {$inc: {checkins: 1}})
  • 44. Simple Statistics // find the last 10 checkins for a place: > p = db.places.find({name:”Exploratorium”}) > db.checkins.find({place_id:p[„_id‟]}) .sort({datetime:-1}).limit(10) // how many people checked in today > db.checkins.find({place_id:p[„_id‟], datetime: {$gt: midnight}}).count()
  • 45. Aggregation Framework • Documents pass through a pipeline of operations • Mechanism to calculate aggregate values across your data • Similar functionality to GROUP BY and related SQL operators • Along with computation, data can be reshaped – Add computed fields – Create virtual sub-objects – Extract sub-fields
  • 46. Aggregation Framework Operators • $project • $match • $limit • $skip • $unwind • $group • $sort
  • 48. Advanced Statistics // checkins per place per day of the week > db.checkins.aggregate( {$project: { place_id:1, dotw: { $dayOfWeek: ”$datetime”} }}, {$group: { _id: {place_id: “$place_id”, dotw: “$dotw”}, count: {$sum: 1} }})
  • 50. Deployment • Single server - need a strong backup plan P
  • 51. Deployment • Single server - need a strong backup plan P • Replica sets P S S - High availability - Automatic failover
  • 52. Deployment • Single server - need a strong backup plan P • Replica sets P S S - High availability - Automatic failover P S S • Sharded - Horizontally scale - Auto balancing P S S

Editor's Notes

  • #7: AGPL – GNU Affero General Public License
  • #11: 10gen Drivers
  • #12: Plus community drivers.
  • #35: "50804d0bd94ccab2da652599" is a 24 byte string (12 byte ObjectId hex encoded).