Intro to MongoDB Alex Sharp twitter: @ajsharp email: ajsharp@frothlogic.com Monday, February 22, 2010
So what is MongoDB? Monday, February 22, 2010
First and foremost... Monday, February 22, 2010
IT’S THE NEW HOTNESS!!! Monday, February 22, 2010
omgomgomg SHINY OBJECTS omgomgomg Monday, February 22, 2010
MongoDB (from "humongous") is a scalable, high-performance, open source, schema-free, document-oriented database. - mongodb.org Monday, February 22, 2010
Philosophy Monday, February 22, 2010
Philosophy “One size fits all” approach no longer applies Monday, February 22, 2010
Philosophy Non-relational DBs scale more easily, especially horizontally Monday, February 22, 2010
Philosophy Focus on speed, performance, flexibility and scalability Monday, February 22, 2010
Philosophy Not concerned with transactional stuff and relational semantics Monday, February 22, 2010
Philosophy DBs should be an on-demand commodity, in a cloud- like fashion Monday, February 22, 2010
Philosophy Mongo tries to achieve the performance of traditional key-value stores while maintaining functionality of traditional RDBMS Monday, February 22, 2010
Features Monday, February 22, 2010
Features Standard database stuff Monday, February 22, 2010
Features Standard database stuff Indexing Monday, February 22, 2010
Features Standard database stuff Indexing replication/failover support Monday, February 22, 2010
Features: Document Storage Documents are stored in BSON (binary JSON) Monday, February 22, 2010
Features: Document Storage BSON is a binary serialization of JSON-like objects Monday, February 22, 2010
Features: Document Storage This is extremely powerful, b/c it means mongo understands JSON natively Monday, February 22, 2010
Features: Document Storage Any valid JSON can be easily imported and queried Monday, February 22, 2010
Features Schema-less; very flexible Monday, February 22, 2010
Features Schema-less; very flexible no more blocking ALTER TABLE Monday, February 22, 2010
Features Auto-sharding (alpha) Monday, February 22, 2010
Features Makes for easy horizontal scaling Monday, February 22, 2010
Features Map/Reduce Monday, February 22, 2010
Features Very, very fast Monday, February 22, 2010
Features Super easy to install Monday, February 22, 2010
Features Strong with major languages Monday, February 22, 2010
Features Document-oriented = flexible Monday, February 22, 2010
Features: Querying Rich, javascript-based query syntax Monday, February 22, 2010
Features: Querying Rich, javascript-based query syntax Allows us to deep, nested queries Monday, February 22, 2010
Features: Querying Rich, javascript-based query syntax Allows us to do deep, nested queries db.order.find( { shipping: { carrier: "usps" } } ); Monday, February 22, 2010
Features: Querying Rich, javascript-based query syntax Allows us to deep, nested queries db.order.find( { shipping: { carrier: "usps" } } ); shipping is an embedded document (object) Monday, February 22, 2010
Features: Binary Object Store Efficient binary large object store via GridFS Monday, February 22, 2010
Features: Binary Object Store Efficient binary large object store via GridFS i.e. store images, videos, anything Monday, February 22, 2010
Concepts Monday, February 22, 2010
Concepts: Document-oriented Think of “documents” as database records Monday, February 22, 2010
Concepts: Document-oriented Think of “documents” as database records Documents are basically just JSON objects that Mongo stores in binary Monday, February 22, 2010
Concepts: Document-oriented Think of “collections” as database tables Monday, February 22, 2010
Concept Mapping RDBMS (mysql, postgres) MongoDB Tables Collections Monday, February 22, 2010
Concept Mapping RDBMS (mysql, postgres) MongoDB Tables Collections Records/rows Documents/objects Monday, February 22, 2010
Concept Mapping RDBMS (mysql, postgres) MongoDB Tables Collections Records/rows Documents/objects Queries return record(s) Queries return a cursor Monday, February 22, 2010
Concept Mapping RDBMS (mysql, postgres) MongoDB Tables Collections Records/rows Documents/objects Queries return record(s) Queries return a cursor Monday, February 22, 2010 ???
Concepts: Cursors Queries return “cursors” instead of collections Monday, February 22, 2010
Concepts: Cursors Queries return “cursors” instead of collections A cursor allows you to iterate through the result set Monday, February 22, 2010
Concepts: Cursors Queries return “cursors” instead of collections A cursor allows you to iterate through the result set A big reason for this is performance Monday, February 22, 2010
Concepts: Cursors Queries return “cursors” instead of collections A cursor allows you to iterate through the result set A big reason for this is performance Much more efficient than loading all objects into memory Monday, February 22, 2010
Concepts: Cursors The find() function returns a cursor object Monday, February 22, 2010
Concepts: Cursors The find() function returns a cursor object var cursor = db.logged_requests.find({ 'status_code' : 200 }) cursor.hasNext() // "true" cursor.forEach( function(item) { print(tojson(item)) } ); cursor.hasNext() // "false" Monday, February 22, 2010
Cool Features Monday, February 22, 2010
Cool Features Capped collections Monday, February 22, 2010
Cool Features Capped collections Fixed-sized, limited operation, auto-LRU age-out collections Monday, February 22, 2010
Cool Features Capped collections Fixed-sized, limited operation, auto-LRU age-out collections Fixed insertion order Monday, February 22, 2010
Cool Features Capped collections Fixed-sized, limited operation, auto-LRU age-out collections Fixed insertion order Super fast Monday, February 22, 2010
Cool Features Capped collections Fixed-sized, limited operation, auto-LRU age-out collections Fixed insertion order Super fast Ideal for logging and caching Monday, February 22, 2010
Cool Uses Data Warehouse Mongo understands JSON natively Monday, February 22, 2010
Cool Uses Data Warehouse Mongo understands JSON natively Very powerful for analysis Monday, February 22, 2010
Cool Uses Data Warehouse Mongo understands JSON natively Very powerful for analysis Query a bunch of data from some web service Monday, February 22, 2010
Cool Uses Data Warehouse Mongo understands JSON natively Very powerful for analysis Query a bunch of data from some web service Import into mongo (mongoimport -f filename.json) Monday, February 22, 2010
Cool Uses Data Warehouse Mongo understands JSON natively Very powerful for analysis Query a bunch of data from some web service Import into mongo (mongoimport -f filename.json) Analyze to your heart’s content Monday, February 22, 2010
Cool Uses Harmonyapp.com Large rails app for building websites (kind of a CMS) Monday, February 22, 2010
Cool Uses Hardcore debugging Spit out large amounts of data Monday, February 22, 2010
Limitations Transaction support Monday, February 22, 2010
Limitations Transaction support Relational integrity Monday, February 22, 2010
Resources http://mongodb.org http://www.mongodb.org/display/DOCS/Tutorial http://www.mongodb.org/display/DOCS/Use+Cases http://blog.mongodb.org/post/172254834/mongodb- is-fantastic-for-logging http://github.com/ajsharp/mongo-conf Monday, February 22, 2010

Intro To MongoDB

  • 1.
    Intro to MongoDB Alex Sharp twitter: @ajsharp email: ajsharp@frothlogic.com Monday, February 22, 2010
  • 2.
    So what isMongoDB? Monday, February 22, 2010
  • 3.
  • 4.
    IT’S THE NEWHOTNESS!!! Monday, February 22, 2010
  • 5.
    omgomgomg SHINY OBJECTS omgomgomg Monday, February 22, 2010
  • 6.
    MongoDB (from "humongous")is a scalable, high-performance, open source, schema-free, document-oriented database. - mongodb.org Monday, February 22, 2010
  • 7.
  • 8.
    Philosophy “One size fits all” approach no longer applies Monday, February 22, 2010
  • 9.
    Philosophy Non-relational DBs scale more easily, especially horizontally Monday, February 22, 2010
  • 10.
    Philosophy Focus on speed, performance, flexibility and scalability Monday, February 22, 2010
  • 11.
    Philosophy Not concerned with transactional stuff and relational semantics Monday, February 22, 2010
  • 12.
    Philosophy DBs should be an on-demand commodity, in a cloud- like fashion Monday, February 22, 2010
  • 13.
    Philosophy Mongo tries to achieve the performance of traditional key-value stores while maintaining functionality of traditional RDBMS Monday, February 22, 2010
  • 14.
  • 15.
    Features Standard database stuff Monday, February 22, 2010
  • 16.
    Features Standard database stuff Indexing Monday, February 22, 2010
  • 17.
    Features Standard database stuff Indexing replication/failover support Monday, February 22, 2010
  • 18.
    Features: Document Storage Documents are stored in BSON (binary JSON) Monday, February 22, 2010
  • 19.
    Features: Document Storage BSON is a binary serialization of JSON-like objects Monday, February 22, 2010
  • 20.
    Features: Document Storage This is extremely powerful, b/c it means mongo understands JSON natively Monday, February 22, 2010
  • 21.
    Features: Document Storage Any valid JSON can be easily imported and queried Monday, February 22, 2010
  • 22.
    Features Schema-less; very flexible Monday, February 22, 2010
  • 23.
    Features Schema-less; very flexible no more blocking ALTER TABLE Monday, February 22, 2010
  • 24.
    Features Auto-sharding (alpha) Monday, February 22, 2010
  • 25.
    Features Makes for easy horizontal scaling Monday, February 22, 2010
  • 26.
    Features Map/Reduce Monday, February 22, 2010
  • 27.
    Features Very, very fast Monday, February 22, 2010
  • 28.
    Features Super easy to install Monday, February 22, 2010
  • 29.
    Features Strong with major languages Monday, February 22, 2010
  • 30.
    Features Document-oriented = flexible Monday, February 22, 2010
  • 31.
    Features: Querying Rich, javascript-based query syntax Monday, February 22, 2010
  • 32.
    Features: Querying Rich, javascript-based query syntax Allows us to deep, nested queries Monday, February 22, 2010
  • 33.
    Features: Querying Rich, javascript-based query syntax Allows us to do deep, nested queries db.order.find( { shipping: { carrier: "usps" } } ); Monday, February 22, 2010
  • 34.
    Features: Querying Rich, javascript-based query syntax Allows us to deep, nested queries db.order.find( { shipping: { carrier: "usps" } } ); shipping is an embedded document (object) Monday, February 22, 2010
  • 35.
    Features: Binary ObjectStore Efficient binary large object store via GridFS Monday, February 22, 2010
  • 36.
    Features: Binary ObjectStore Efficient binary large object store via GridFS i.e. store images, videos, anything Monday, February 22, 2010
  • 37.
  • 38.
    Concepts: Document-oriented Think of “documents” as database records Monday, February 22, 2010
  • 39.
    Concepts: Document-oriented Think of “documents” as database records Documents are basically just JSON objects that Mongo stores in binary Monday, February 22, 2010
  • 40.
    Concepts: Document-oriented Think of “collections” as database tables Monday, February 22, 2010
  • 41.
    Concept Mapping RDBMS (mysql, postgres) MongoDB Tables Collections Monday, February 22, 2010
  • 42.
    Concept Mapping RDBMS (mysql, postgres) MongoDB Tables Collections Records/rows Documents/objects Monday, February 22, 2010
  • 43.
    Concept Mapping RDBMS (mysql, postgres) MongoDB Tables Collections Records/rows Documents/objects Queries return record(s) Queries return a cursor Monday, February 22, 2010
  • 44.
    Concept Mapping RDBMS (mysql, postgres) MongoDB Tables Collections Records/rows Documents/objects Queries return record(s) Queries return a cursor Monday, February 22, 2010 ???
  • 45.
    Concepts: Cursors Queries return “cursors” instead of collections Monday, February 22, 2010
  • 46.
    Concepts: Cursors Queries return “cursors” instead of collections A cursor allows you to iterate through the result set Monday, February 22, 2010
  • 47.
    Concepts: Cursors Queries return “cursors” instead of collections A cursor allows you to iterate through the result set A big reason for this is performance Monday, February 22, 2010
  • 48.
    Concepts: Cursors Queries return “cursors” instead of collections A cursor allows you to iterate through the result set A big reason for this is performance Much more efficient than loading all objects into memory Monday, February 22, 2010
  • 49.
    Concepts: Cursors The find() function returns a cursor object Monday, February 22, 2010
  • 50.
    Concepts: Cursors The find() function returns a cursor object var cursor = db.logged_requests.find({ 'status_code' : 200 }) cursor.hasNext() // "true" cursor.forEach( function(item) { print(tojson(item)) } ); cursor.hasNext() // "false" Monday, February 22, 2010
  • 51.
  • 52.
    Cool Features Capped collections Monday, February 22, 2010
  • 53.
    Cool Features Capped collections Fixed-sized, limited operation, auto-LRU age-out collections Monday, February 22, 2010
  • 54.
    Cool Features Capped collections Fixed-sized, limited operation, auto-LRU age-out collections Fixed insertion order Monday, February 22, 2010
  • 55.
    Cool Features Capped collections Fixed-sized, limited operation, auto-LRU age-out collections Fixed insertion order Super fast Monday, February 22, 2010
  • 56.
    Cool Features Capped collections Fixed-sized, limited operation, auto-LRU age-out collections Fixed insertion order Super fast Ideal for logging and caching Monday, February 22, 2010
  • 57.
    Cool Uses Data Warehouse Mongo understands JSON natively Monday, February 22, 2010
  • 58.
    Cool Uses Data Warehouse Mongo understands JSON natively Very powerful for analysis Monday, February 22, 2010
  • 59.
    Cool Uses Data Warehouse Mongo understands JSON natively Very powerful for analysis Query a bunch of data from some web service Monday, February 22, 2010
  • 60.
    Cool Uses Data Warehouse Mongo understands JSON natively Very powerful for analysis Query a bunch of data from some web service Import into mongo (mongoimport -f filename.json) Monday, February 22, 2010
  • 61.
    Cool Uses Data Warehouse Mongo understands JSON natively Very powerful for analysis Query a bunch of data from some web service Import into mongo (mongoimport -f filename.json) Analyze to your heart’s content Monday, February 22, 2010
  • 62.
    Cool Uses Harmonyapp.com Large rails app for building websites (kind of a CMS) Monday, February 22, 2010
  • 63.
    Cool Uses Hardcore debugging Spit out large amounts of data Monday, February 22, 2010
  • 64.
    Limitations Transaction support Monday, February 22, 2010
  • 65.
    Limitations Transaction support Relational integrity Monday, February 22, 2010
  • 66.
    Resources http://mongodb.org http://www.mongodb.org/display/DOCS/Tutorial http://www.mongodb.org/display/DOCS/Use+Cases http://blog.mongodb.org/post/172254834/mongodb- is-fantastic-for-logging http://github.com/ajsharp/mongo-conf Monday, February 22, 2010