Upgrade to Pro — share decks privately, control downloads, hide ads and more …

An Introduction To NoSQL & MongoDB

Lee Theobald
September 27, 2011

An Introduction To NoSQL & MongoDB

My talk from Refresh Cambridge July 2011

Lee Theobald

September 27, 2011
Tweet

Other Decks in Technology

Transcript

  1. NoSQL A form of database management system that is non-

    relational. Systems are often schema less, avoid joins & are easy to scale. The term NoSQL was coined in 1998 by Carlo Strozzi and then again in early 2009 with the no:sql(east) conference A better term would have been “NoREL” but NoSQL caught on. Think of it more as meaning “Not Only SQL”
  2. But Why Choose NoSQL? Amount of data stored is on

    the up & up. Facebook is rumoured to hold over 50TB of data in their NoSQL system for their inbox search The data we store is more complex than 15 years ago. Easy Distribution With all this data is needs to be easy to be able to add/remove servers without any disruption of service.
  3. Key-Value Store Data is stored in (unsurpisingly) key/value pairs. Designed

    to handle lots of data and heavy load Based on a Amazon’s Dynamo Paper Example: Voldermort ( http://project-voldemort.com /) - Developed by the guys at LinkedIn Key Value Name Joe Bloggs Age 42 Occupation Stunt Double Height 175cm Weight 77kg
  4. Graph Focuses on modeling data & associated connections Inspired by

    mathematical Graph Theory. Example: FlockDB (http: //github.com/twitter/ flockdb) – developed by Twitter
  5. BigTable / Column Families Based on the BigTable paper from

    Google Data is grouped by columns, not rows. Example: Cassandra ( http://cassandra.apache.org /) – Originally developed by Facebook, now and Apache project. ColumnFamily Row Key Column Name Key Key Key Value Value Value Column Name Key Key Key Value Value Value
  6. Document Store Data stored as whole documents. JSON & XML

    are popular formats Maps well to an Object Orientated programming model Example: CouchDB ( http://couchdb.apache.org /) or … { “id”: “123”, “name”: “Oliver Clothesoff”, “dob”: { “year”: 1985, “month”: 5, “day”: 12 } }
  7. MongoDB! Short for humongous Open source with development lead by

    10Gen Document Based Schema-less Highly Scalable MapReduce Easy Replication & Sharding
  8. Familiar Structure A MongoDB instance is made up of a

    number of databases. These contain a number of collections & you can have collections nested under other collections. Compare it to MySQL which has databases and tables.
  9. Inserts – As Easy As Pie use cookbook; db.recipes.save({ “name”:

    “Cherry Pie”, “ingredients”: [“cherries”, “pie”], “cooking_time”: 30 });
  10. Some More Advanced Syntax Limiting Results db.find().limit(10); Skipping results db.find().skip(5);

    Sorting db.find().sort({cooking_time: -1}); Cursors: var cur = db.find().cursor(); cur.forEach( function(x) { print(tojson(x)); });
  11. MapReduce Great way of doing bulk manipulation or aggregation. 2

    or 3 functions written in JavaScript that execute on the server. An example use could be generating a list of top queries from some search logs.
  12. Map Function Takes some input of the form of key/value

    pairs, performs some calculations and returns 0 or more key/value pairs map = function() { if (!this.query) { return; } emit (this.query, {count: 1}); }
  13. Reduce Function Takes the results from the map function, does

    something (normally combine the results) and produces output in key/value pairs reduce = function(key, values) { var count = 0; values.forEach(function(v) { count += v[‘count’]; } return {count: count;} }
  14. Replica Sets Master/Slave configuration If your primary server goes down,

    one of the secondary ones takes over automatically Extremely easy to setup
  15. Auto Sharding – Horizontal Scaling Click to edit Master text

    styles Second level Third level Fourth level Fifth level
  16. Other Features GridFS support – Distributed file storage Geospatial indexing

    It’s constantly in development so new features are being worked on all the time!
  17. Why Not Try It Yourself Download it at: http://www.mongodb.org Online

    tutorial at:http ://www.mongodb.org/display/DOCS/Tutorial Some handy MongoDB sites: MongoDB Cookbook: http://cookbook.mongodb.org/ Kyle Banker’s blog: http://kylebanker.com/blog/ There’s also a load of handy reference cards, stickers and other MongoDB freebies up front!