Mongo db japan
-
Upload
rogerbodamer -
Category
Documents
-
view
3.853 -
download
2
description
Transcript of Mongo db japan
Roger Bodamer @rogerb
Baseball World Series
Giants lead 3-1 over Rangers
What is MongoDB?
quick introductiondesign session
deploy mongodbscaling
MongoDB adoption is very strong
90,000 Database downloads per month
Over 1,000 Production Deployments
Platform and Language supportMongoDB is Implemented in C++ for best performance
Platforms 32/64 bit• Windows• Linux, Mac OS-X, FreeBSD, Solaris
Platform and Language supportMongoDB 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-relationalOperational
Stores(“NoSQL”)
Philosophy: maximize features -‐ up to the “knee” in the curve, then stop
depth of functionality
scalab
ility & perform
ance •memcached
• key/value
• RDBMS
Horizontally ScalableArchitectures
no joinsno complex transactions+
New Data Models
no joinsno 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 SessionBlog 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 operatorsConditional 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 operatorsConditional 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 operatorsConditional 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 SchemaEvolved the SchemaDeployed MongoDB
Scale MongoDB
MongoDB makes building applications easy
Map / ReduceCapped CollectionsTail-able Cursors
Geo Indexing
.. and much more ! ..
@mongodb
conferences, appearances, and meetupshttp://www.10gen.com/events
http://bit.ly/mongoG Facebook | Twitter | LinkedIn
http://linkd.in/joinmongo
download at mongodb.org
We’re Hiring [email protected]