Mongo db japan

Post on 06-May-2015

3.853 views 2 download

description

Tokyo, nov 1st 2010.

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 !roger@10gen.com