SlideShare a Scribd company logo
1 of 38
Download to read offline
Roger Bodamer @rogerb
Baseball
World Series
Giants lead 3-1 over Rangers
What is MongoDB?
quick introduction
design session
deploy mongodb
scaling
MongoDB adoption is very strong
90,000
Database
downloads
per month
Over 1,000 Production
Deployments
Platform and Language support
MongoDB is Implemented in C++ for best performance
Platforms 32/64 bit
• Windows
• Linux, Mac OS-X, FreeBSD, Solaris
Platform and Language support
MongoDB is Implemented in C++ for best performance
Platforms 32/64 bit
• Windows
• Linux, Mac OS-X, FreeBSD, Solaris
Language drivers for
• Ruby / Ruby-on-Rails
• Java / C# / JavaScript
• C / C++
• Erlang
• Python, Perl
• others...
.. and much more ! ..
non-­‐relational,	
  next-­‐generation	
  
operational	
  datastores	
  and	
  databases
NoSQL Really
Means:
RDBMS
(Oracle,	
  MySQL)
RDBMS
(Oracle,	
  MySQL)
New Gen.
OLAP
(vertica,	
  aster,	
  
greenplum)
RDBMS
(Oracle,	
  MySQL)
New Gen.
OLAP
(vertica,	
  aster,	
  
greenplum)
Non-relational
Operational
Stores
(“NoSQL”)
Philosophy:	
  maximize	
  features	
  -­‐	
  up	
  to	
  the	
  “knee”	
  in	
  the	
  curve,	
  then	
  stop
depth	
  of	
  functionality
scalability	
  &	
  performance
• memcached
• key/value
• RDBMS
Horizontally Scalable
Architectures
no	
  joins
no	
  complex	
  transactions+
New Data Models
no	
  joins
no	
  complex	
  transactions+
Improved ways to develop
New Data Models
-­‐>	
  
Terminology
RDBMS MongoDB
Table Collection
Row(s) JSON	
  Document
Index Index
Join Embedding	
  &	
  Linking
Partition Shard
Partition	
  Key Shard	
  Key
MongoDB Design Session
MongoDB Design Session
Blog Post Document
	
  p	
  =	
  {author:	
  “roger”,
	
  	
  	
  	
  	
  	
  	
  	
  date:	
  new	
  Date(),
	
  	
  	
  	
  	
  	
  	
  	
  text:	
  “Spirited	
  Away”,
	
  	
  	
  	
  	
  	
  	
  	
  tags:	
  [“Tezuka”,	
  “Manga”]}
>db.posts.save(p)
Query Posts Collection
>db.posts.find()
{ _id : ObjectId("4c4ba5c0672c685e5e8aabf3"),
author : "roger",
date : "Sat Jul 24 2010 19:47:11 GMT-0700 (PDT)",
text : "Spirited Away",
tags : [ "Tezuka", "Manga" ] }
Notes:
- _id is unique, but can be anything you’d like
Create index on any Field in Document
// 1 means ascending, -1 means descending
>db.posts.ensureIndex({author: 1})
>db.posts.find({author: 'roger'})
{ _id : ObjectId("4c4ba5c0672c685e5e8aabf3"),
author : "roger",
... }
Secondary Index
Query operators
Conditional operators:
$ne, $in, $nin, $mod, $all, $size, $exists, $type, ..
$lt, $lte, $gt, $gte, $ne, ...
// find posts with any tags
>db.posts.find({tags: {$exists: true}})
Query operators
Conditional operators:
$ne, $in, $nin, $mod, $all, $size, $exists, $type, ..
$lt, $lte, $gt, $gte, $ne,
// find posts with any tags
>db.posts.find({tags: {$exists: true}})
Regular expressions:
// posts where author starts with r
>db.posts.find({author: /^r*/i })
Query operators
Conditional operators:
$ne, $in, $nin, $mod, $all, $size, $exists, $type, ..
$lt, $lte, $gt, $gte, $ne,
// find posts with any tags
>db.posts.find({tags: {$exists: true}})
Regular expressions:
// posts where author starts with k
>db.posts.find({author: /^k*/i })
Counting:
// posts written by roger
	
  	
  >db.posts.find({author:	
  “roger”}).count()
Extending the Schema
comment = {author: “fred”,
date: new Date(),
text: “Best Movie Ever”}
update = { ‘$push’: {comments: comment}}
	
  >db.posts.update({_id:	
  “...”	
  },	
  update)
Adding Comments to Blog
{ _id : ObjectId("4c4ba5c0672c685e5e8aabf3"),
author : "roger",
date : "Sat Jul 24 2010 19:47:11 GMT-0700 (PDT)",
text : "Spirited Away",
tags : [ "Tezuka", "Manga" ],
comments : [

 {

 
 author : "Fred",

 
 date : "Sat Jul 24 2010 20:51:03 GMT-0700 (PDT)",

 
 text : "Best Movie Ever"

 }
]}
// create index on nested documents:
>db.posts.ensureIndex({"comments.author": 1})
>db.posts.find({comments.author:”Fred”})
Secondary Index
Deploying MongoDB
Deploying MongoDB
Primary
Read	
  /	
  Write
Deploying MongoDB
Primary
Secondary
Read	
  /	
  Write
Replication
Setting Up MongoDB
Primary
Secondary
Read	
  /	
  Write
Secondary	
  for	
  Backup
Replication
Replication
Setting Up MongoDB
Primary
Secondary
Read	
  /	
  Write
Secondary	
  for	
  Backup
Read Replication
Replication
Setting Up MongoDB
Primary
Secondary
Read	
  /	
  Write
Secondary	
  for	
  Backup
Read Replication
Replication
Replicaset
Read Scalability : Replication
write
read
ReplicaSet	
  1
Primary
Secondary
Secondary
Write Scalability: Sharding
write
read
ReplicaSet	
  1
Primary
Secondary
Secondary
ReplicaSet	
  2
Primary
Secondary
Secondary
ReplicaSet	
  3
Primary
Secondary
Secondary
key	
  range	
  
0	
  ..	
  30
key	
  range	
  
31	
  ..	
  60
key	
  range	
  
61	
  ..	
  100
Monitoring
• We like Munin ..
• ... but other frameworks
work as well
• Primary function:
• Measure stats over time
• Tells you what is going on with
your system
MongoDB makes building
applications easy
Designed a Blog Schema
Evolved the Schema
Deployed MongoDB
Scale MongoDB
MongoDB makes building
applications easy
Map / Reduce
Capped Collections
Tail-able Cursors
Geo Indexing
.. and much more ! ..
@mongodb
conferences,	
  appearances,	
  and	
  meetups
http://www.10gen.com/events
http://bit.ly/mongoG	
  
Facebook	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  Twitter	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  LinkedIn
http://linkd.in/joinmongo
download at mongodb.org
We’re Hiring !
roger@10gen.com

More Related Content

What's hot

Back to Basics Webinar 2: Your First MongoDB Application
Back to Basics Webinar 2: Your First MongoDB ApplicationBack to Basics Webinar 2: Your First MongoDB Application
Back to Basics Webinar 2: Your First MongoDB ApplicationMongoDB
 
Back to Basics Webinar 1 - Introduction to NoSQL
Back to Basics Webinar 1 - Introduction to NoSQLBack to Basics Webinar 1 - Introduction to NoSQL
Back to Basics Webinar 1 - Introduction to NoSQLJoe Drumgoole
 
Automated Hadoop Cluster Construction on EC2
Automated Hadoop Cluster Construction on EC2Automated Hadoop Cluster Construction on EC2
Automated Hadoop Cluster Construction on EC2Mark Kerzner
 
Introduction to redis
Introduction to redisIntroduction to redis
Introduction to redisTanu Siwag
 
An Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL databaseAn Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL databaseAli MasudianPour
 
Ops Jumpstart: Admin 101
Ops Jumpstart: Admin 101Ops Jumpstart: Admin 101
Ops Jumpstart: Admin 101MongoDB
 
Mongodb index 讀書心得
Mongodb index 讀書心得Mongodb index 讀書心得
Mongodb index 讀書心得cc liu
 
Elastic Search Training#1 (brief tutorial)-ESCC#1
Elastic Search Training#1 (brief tutorial)-ESCC#1Elastic Search Training#1 (brief tutorial)-ESCC#1
Elastic Search Training#1 (brief tutorial)-ESCC#1medcl
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisArnab Mitra
 
Resource Management of Docker
Resource Management of DockerResource Management of Docker
Resource Management of DockerSpeedyCloud
 
Powershell dcpp
Powershell dcppPowershell dcpp
Powershell dcppartisriva
 
MongoDB a document store that won't let you down.
MongoDB a document store that won't let you down.MongoDB a document store that won't let you down.
MongoDB a document store that won't let you down.Nurul Ferdous
 
Your 1st Ceph cluster
Your 1st Ceph clusterYour 1st Ceph cluster
Your 1st Ceph clusterMirantis
 

What's hot (20)

Back to Basics Webinar 2: Your First MongoDB Application
Back to Basics Webinar 2: Your First MongoDB ApplicationBack to Basics Webinar 2: Your First MongoDB Application
Back to Basics Webinar 2: Your First MongoDB Application
 
Back to Basics Webinar 1 - Introduction to NoSQL
Back to Basics Webinar 1 - Introduction to NoSQLBack to Basics Webinar 1 - Introduction to NoSQL
Back to Basics Webinar 1 - Introduction to NoSQL
 
Automated Hadoop Cluster Construction on EC2
Automated Hadoop Cluster Construction on EC2Automated Hadoop Cluster Construction on EC2
Automated Hadoop Cluster Construction on EC2
 
Introduction to redis
Introduction to redisIntroduction to redis
Introduction to redis
 
An Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL databaseAn Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL database
 
Mongodb
MongodbMongodb
Mongodb
 
Ops Jumpstart: Admin 101
Ops Jumpstart: Admin 101Ops Jumpstart: Admin 101
Ops Jumpstart: Admin 101
 
Mongodb index 讀書心得
Mongodb index 讀書心得Mongodb index 讀書心得
Mongodb index 讀書心得
 
Elastic Search Training#1 (brief tutorial)-ESCC#1
Elastic Search Training#1 (brief tutorial)-ESCC#1Elastic Search Training#1 (brief tutorial)-ESCC#1
Elastic Search Training#1 (brief tutorial)-ESCC#1
 
Can I write to a read only file ?
Can I write to a read only file ?Can I write to a read only file ?
Can I write to a read only file ?
 
Alluxio in MOMO
Alluxio in MOMOAlluxio in MOMO
Alluxio in MOMO
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Resource Management of Docker
Resource Management of DockerResource Management of Docker
Resource Management of Docker
 
Powershell dcpp
Powershell dcppPowershell dcpp
Powershell dcpp
 
Linux again
Linux againLinux again
Linux again
 
Amepad lt(tmpfs)
Amepad lt(tmpfs)Amepad lt(tmpfs)
Amepad lt(tmpfs)
 
MongoDB a document store that won't let you down.
MongoDB a document store that won't let you down.MongoDB a document store that won't let you down.
MongoDB a document store that won't let you down.
 
Guava
GuavaGuava
Guava
 
Containers > VMs
Containers > VMsContainers > VMs
Containers > VMs
 
Your 1st Ceph cluster
Your 1st Ceph clusterYour 1st Ceph cluster
Your 1st Ceph cluster
 

Similar to Mongo db japan

Mongodb intro
Mongodb introMongodb intro
Mongodb introchristkv
 
MongoDB at FrozenRails
MongoDB at FrozenRailsMongoDB at FrozenRails
MongoDB at FrozenRailsMike Dirolf
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBMongoDB
 
MongoDB for Time Series Data Part 3: Sharding
MongoDB for Time Series Data Part 3: ShardingMongoDB for Time Series Data Part 3: Sharding
MongoDB for Time Series Data Part 3: ShardingMongoDB
 
Building your first app with MongoDB
Building your first app with MongoDBBuilding your first app with MongoDB
Building your first app with MongoDBNorberto Leite
 
MongoDB Pros and Cons
MongoDB Pros and ConsMongoDB Pros and Cons
MongoDB Pros and Consjohnrjenson
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBAlex Bilbie
 
Scaling with MongoDB
Scaling with MongoDBScaling with MongoDB
Scaling with MongoDBRick Copeland
 
MongoDB Best Practices in AWS
MongoDB Best Practices in AWS MongoDB Best Practices in AWS
MongoDB Best Practices in AWS Chris Harris
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBMongoDB
 
OSDC 2012 | Building a first application on MongoDB by Ross Lawley
OSDC 2012 | Building a first application on MongoDB by Ross LawleyOSDC 2012 | Building a first application on MongoDB by Ross Lawley
OSDC 2012 | Building a first application on MongoDB by Ross LawleyNETWAYS
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBMike Dirolf
 
How to use MongoDB with CakePHP
How to use MongoDB with CakePHPHow to use MongoDB with CakePHP
How to use MongoDB with CakePHPichikaway
 
MongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & AnalyticsMongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & AnalyticsServer Density
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBMongoDB
 
No SQL : Which way to go? Presented at DDDMelbourne 2015
No SQL : Which way to go?  Presented at DDDMelbourne 2015No SQL : Which way to go?  Presented at DDDMelbourne 2015
No SQL : Which way to go? Presented at DDDMelbourne 2015Himanshu Desai
 

Similar to Mongo db japan (20)

MongoDB.pdf
MongoDB.pdfMongoDB.pdf
MongoDB.pdf
 
Mongodb intro
Mongodb introMongodb intro
Mongodb intro
 
MongoDB
MongoDBMongoDB
MongoDB
 
MongoDB at FrozenRails
MongoDB at FrozenRailsMongoDB at FrozenRails
MongoDB at FrozenRails
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDB
 
MongoDB for Time Series Data Part 3: Sharding
MongoDB for Time Series Data Part 3: ShardingMongoDB for Time Series Data Part 3: Sharding
MongoDB for Time Series Data Part 3: Sharding
 
MongoDB at RuPy
MongoDB at RuPyMongoDB at RuPy
MongoDB at RuPy
 
Building your first app with MongoDB
Building your first app with MongoDBBuilding your first app with MongoDB
Building your first app with MongoDB
 
MongoDB Pros and Cons
MongoDB Pros and ConsMongoDB Pros and Cons
MongoDB Pros and Cons
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Scaling with MongoDB
Scaling with MongoDBScaling with MongoDB
Scaling with MongoDB
 
MongoDB Best Practices in AWS
MongoDB Best Practices in AWS MongoDB Best Practices in AWS
MongoDB Best Practices in AWS
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDB
 
OSDC 2012 | Building a first application on MongoDB by Ross Lawley
OSDC 2012 | Building a first application on MongoDB by Ross LawleyOSDC 2012 | Building a first application on MongoDB by Ross Lawley
OSDC 2012 | Building a first application on MongoDB by Ross Lawley
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
How to use MongoDB with CakePHP
How to use MongoDB with CakePHPHow to use MongoDB with CakePHP
How to use MongoDB with CakePHP
 
MongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & AnalyticsMongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & Analytics
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDB
 
No SQL : Which way to go? Presented at DDDMelbourne 2015
No SQL : Which way to go?  Presented at DDDMelbourne 2015No SQL : Which way to go?  Presented at DDDMelbourne 2015
No SQL : Which way to go? Presented at DDDMelbourne 2015
 
NoSQL, which way to go?
NoSQL, which way to go?NoSQL, which way to go?
NoSQL, which way to go?
 

More from rogerbodamer

Thoughts on consistency models
Thoughts on consistency modelsThoughts on consistency models
Thoughts on consistency modelsrogerbodamer
 
Intro to MongoDB and datamodeling
Intro to MongoDB and datamodeling Intro to MongoDB and datamodeling
Intro to MongoDB and datamodeling rogerbodamer
 
Thoughts on MongoDB Analytics
Thoughts on MongoDB AnalyticsThoughts on MongoDB Analytics
Thoughts on MongoDB Analyticsrogerbodamer
 
Mongo Web Apps: OSCON 2011
Mongo Web Apps: OSCON 2011Mongo Web Apps: OSCON 2011
Mongo Web Apps: OSCON 2011rogerbodamer
 
Schema Design with MongoDB
Schema Design with MongoDBSchema Design with MongoDB
Schema Design with MongoDBrogerbodamer
 

More from rogerbodamer (6)

Thoughts on consistency models
Thoughts on consistency modelsThoughts on consistency models
Thoughts on consistency models
 
Intro to MongoDB and datamodeling
Intro to MongoDB and datamodeling Intro to MongoDB and datamodeling
Intro to MongoDB and datamodeling
 
Thoughts on MongoDB Analytics
Thoughts on MongoDB AnalyticsThoughts on MongoDB Analytics
Thoughts on MongoDB Analytics
 
Mongo Web Apps: OSCON 2011
Mongo Web Apps: OSCON 2011Mongo Web Apps: OSCON 2011
Mongo Web Apps: OSCON 2011
 
Deployment
DeploymentDeployment
Deployment
 
Schema Design with MongoDB
Schema Design with MongoDBSchema Design with MongoDB
Schema Design with MongoDB
 

Mongo db japan