MongoDB Strange Loop 2009

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Notes on slide 1

    Mike Dirolf, 10gen
    sponsors MongoDB
    Thanks
    Plan:
    A little about what makes MongoDB interesting
    Some flavor for the API / querying possibilities
    Sharding
    Questions

    C - The client perceives that a set of operations has occurred all at once
    A - Every operation must terminate in an intended response
    P - Operations will complete even if individual components are unavailable

    Horizontal scaling necessitates P, so forced to choose C or A

    Transaction is all or none
    Consistent state at beginning + end of transaction
    Transaction behaves as if only operation
    Upon completion, operation will not be reversed

    Sacrifice consistency for availability

    More complex than just Key-Value
    Secondary Indexes
    Embedded Documents

    Compare to Couch

    No Separate Caching Layer

    Master-Slave
    Replica Pairs
    For Failover

    Infinite Scalability

    Collection (logical groupings of documents)
    Indexes are per-collection

    Order Preserving Partitioning
    Split
    Migrate

    Process Diagram

    Global vs Targeted Operations
    Config Servers Use Two Phase Commit

    Server Layout

    blog post
    twitter

    1 Favorite

    MongoDB Strange Loop 2009 - Presentation Transcript

    1. open-source, high-performance, schema-free, document-oriented database
    2. RDBMS • Great for many applications • Shortcomings • Scalability • Flexibility
    3. CAP theorem • Consistency • Availability • Tolerance to network Partitions • Pick two http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf
    4. ACID vs BASE • Atomicity • Basically Available • Consistency • Soft state • Isolation • Eventually consistent • Durability
    5. Compared to key-value stores
    6. Compared to CouchDB
    7. JSON-style documents
    8. Schema-free • Loosening constraints - added flexibility • Dynamically typed languages • Migrations
    9. Dynamic queries • Administration • Ease of development • Familiarity
    10. Focus on performance
    11. Replication
    12. Auto-sharding
    13. Many supported platforms / languages
    14. Good at • The web • Caching • High volume data • Scalability
    15. Less good at • Highly transactional • Ad-hoc business intelligence • Problems that require SQL
    16. MongoDB Basics
    17. Document • Unit of storage (think row) • BSON (Binary JSON)
    18. Collection • Schema-free equivalent of a table • Logical groups of documents • Indexes are per-collection
    19. _id • Special key • Present in all documents • Unique across a Collection • Any type you want
    20. Blog back-end
    21. Post {author: “mike”, date: new Date(), text: “my blog post...”, tags: [“mongodb”, “strange”, “loop”]}
    22. Comment {author: “eliot”, date: new Date(), text: “great post!”}
    23. New post post = {author: “mike”, date: new Date(), text: “my blog post...”, tags: [“mongodb”, “strange”, “loop”]} db.posts.save(post)
    24. Embedding a comment c = {author: “eliot”, date: new Date(), text: “great post!”} db.posts.update({_id: post._id}, {$push: {comments: c}})
    25. Posts by author db.posts.find({author: “mike”})
    26. Last 10 posts db.posts.find() .sort({date: -1}) .limit(10)
    27. Posts in the last week last_week = new Date(2009, 9, 9) db.posts.find({date: {$gt: last_week}})
    28. Posts ending with ‘Loop’ db.posts.find({text: /loop$/})
    29. Posts with a tag db.posts.find({tag: “mongodb”}) ... and fast db.posts.ensureIndex({tag: 1})
    30. Counting posts db.posts.count() db.posts.find({author: “mike”}).count()
    31. Basic paging page = 2 page_size = 15 db.posts.find().limit(page_size) .skip(page * page_size)
    32. Migration: adding titles • Easy - just start adding them: post = {author: “mike”, date: new Date(), text: “another blog post...”, tags: [“strange”, “loop”], title: “Review from Strange Loop”} post_id = db.posts.save(post)
    33. Advanced queries • $gt, $lt, $gte, $lte, $ne, $all, $in, $nin • where() db.posts.find({$where: “this.author == ‘mike’”})
    34. Sharding
    35. Terminology • Shard key • Chunk • Range of the value space • (collection, key, min_val, max_val) • Shard • Single node (or replica pair) • Responsible for set of chunks
    36. Other cool stuff • Aggregation and map reduce • Capped collections • Unique indexes • Mongo shell • GridFS
    37. • Download MongoDB http://www.mongodb.org • Try it out • Let us know what you think!
    38. • http://www.mongodb.org • irc.freenode.net#mongodb • mongodb-user on google groups • @mongodb, @mdirolf • mike@10gen.com • http://www.slideshare.net/mdirolf
    SlideShare Zeitgeist 2009

    + Mike DirolfMike Dirolf Nominate

    custom

    240 views, 1 favs, 0 embeds more stats

    Talk on MongoDB given at the first Strange Loop Con more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 240
      • 240 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 4
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories