Introduction to MongoDB

25,779 views

Published on

Intro to MongoDB given 4/2010 at Philly ETE

Published in: Technology
1 Comment
32 Likes
Statistics
Notes
No Downloads
Views
Total views
25,779
On SlideShare
0
From Embeds
0
Number of Embeds
8,038
Actions
Shares
0
Downloads
1,018
Comments
1
Likes
32
Embeds 0
No embeds

No notes for slide

Introduction to MongoDB

  1. 1. open-­‐source,  high-­‐performance,   document-­‐oriented  database
  2. 2. Non-relational Operational Stores (“NoSQL”) New Gen. OLAP RDBMS (vertica,  aster,  greenplum) (Oracle,  MySQL)
  3. 3. NoSQL Really Means: non-­‐relational,  next-­‐generation   operational  datastores  and  databases
  4. 4. no  joins + no  complex  transactions Horizontally Scalable Architectures
  5. 5. no  joins + no  complex  transactions New Data Models
  6. 6. New Data Models improved  ways  to  develop  applications?
  7. 7. Data Models Key  /  Value memcached,  Dynamo Tabular BigTable Document  Oriented MongoDB,  CouchDB,  JSON  stores
  8. 8. • memcached scalability  &  performance • key/value • RDBMS depth  of  functionality
  9. 9. JSON-style Documents represented  as  BSON {“hello”:  “world”} x16x00x00x00x02hello x00x06x00x00x00world x00x00 http://bsonspec.org
  10. 10. Flexible “Schemas” {“author”:  “eliot”, {“author”:  “mike”,  “text”:  “...”,  “text”:  “...”}  “tags”:  [“mongodb”]}
  11. 11. Dynamic Queries
  12. 12. Atomic Update Modifiers
  13. 13. Focus on Performance
  14. 14. Replication master slave master master slave slave slave slave master master slave master
  15. 15. Auto-sharding Shards mongod mongod mongod ... Config mongod mongod mongod Servers mongod mongod mongod mongos mongos ... client
  16. 16. Many Supported Platforms / Languages
  17. 17. Best Use Cases T Scaling  Out Caching The  Web High  Volume
  18. 18. Less Good At highly  transactional ad-­‐hoc  business  intelligence problems  that  require  SQL
  19. 19. A Quick Aside _id special  key present  in  all  documents unique  across  a  Collection any  type  you  want
  20. 20. Post {author:  “mike”,  date:  new  Date(),  text:  “my  blog  post...”,  tags:  [“mongodb”,  “intro”]}
  21. 21. Comment {author:  “eliot”,  date:  new  Date(),  text:  “great  post!”}
  22. 22. New Post post  =  {author:  “mike”,    date:  new  Date(),    text:  “my  blog  post...”,    tags:  [“mongodb”,  “intro”]} db.posts.save(post)
  23. 23. Embedding a Comment c  =  {author:  “eliot”,    date:  new  Date(),    text:  “great  post!”} db.posts.update({_id:  post._id},                                  {$push:  {comments:  c}})
  24. 24. Posts by Author db.posts.find({author:  “mike”})
  25. 25. Last 10 Posts db.posts.find()                .sort({date:  -­‐1})                .limit(10)
  26. 26. Posts Since April 1 april_1  =  new  Date(2010,  3,  1) db.posts.find({date:  {$gt:  april_1}})
  27. 27. Posts Ending With ‘Tech’ db.posts.find({text:  /Tech$/})
  28. 28. Posts With a Tag db.posts.find({tags:  “mongodb”}) ...and Fast (multi-­‐key  indexes) db.posts.ensureIndex({tags:  1})
  29. 29. Indexing / Querying on Embedded Docs (dot  notation) db.posts.ensureIndex({“comments.author”:  1}) db.posts.find({“comments.author”:  “eliot”})
  30. 30. Counting Posts db.posts.count() db.posts.find({author:  “mike”}).count()
  31. 31. Basic Paging page  =  2 page_size  =  15 db.posts.find().limit(page_size)                              .skip(page  *  page_size)
  32. 32. Migration: Adding Titles (just  start  adding  them) post  =  {author:  “mike”,                date:  new  Date(),                text:  “another  blog  post...”,                tags:  [“mongodb”],              title:  “MongoDB  for  Fun  and  Profit”} post_id  =  db.posts.save(post)
  33. 33. Advanced Queries $gt,  $lt,  $gte,  $lte,  $ne,  $all,  $in,  $nin db.posts.find({$where:  “this.author  ==  ‘mike’  ||                                                this.title  ==  ‘foo’”})
  34. 34. Other Cool Stuff aggregation  and  map/reduce capped  collections unique  indexes mongo  shell GridFS geo
  35. 35. slides  will  be  up  on  http://dirolf.com Download MongoDB http://www.mongodb.org and  let  us  know  what  you  think @mdirolf        @mongodb

×