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

Seedhack 2011 - Introducing MongoDB

Seedhack 2011 - Introducing MongoDB

Russell Smith

April 20, 2012
Tweet

More Decks by Russell Smith

Other Decks in Technology

Transcript

  1. An introduction to MongoDB
    Russell Smith
    Friday, 20 April 12

    View Slide

  2. /usr/bin/whoami
    • Russell Smith
    • Consultant for UKD1 Limited,
    • External consultant for 10gen
    • Help with code, architecture, infrastructure, devops, sysops, capacity
    planning, etc
    • <3 MongoDB, MySQL, Redis, Gearman, Neo4j, Kohana, Riak, PHP,
    Debian, AWS, etc
    Friday, 20 April 12

    View Slide

  3. What is MongoDB
    • A scalable, high-performance, open source, document-oriented
    database.
    • Stores JSON like documents
    • Commercially backed by 10gen
    Friday, 20 April 12

    View Slide

  4. Why choose it?
    • Schema-less
    • Simple
    • Reliable
    • Scalable
    • Drivers
    Friday, 20 April 12

    View Slide

  5. Who uses it?
    • Foursquare
    • Disney
    • Craigslist
    • MTV Networks
    • O2
    • Telefonica
    Friday, 20 April 12

    View Slide

  6. Basics
    • insert
    • find
    • update
    • remove
    • ensureIndex
    Friday, 20 April 12

    View Slide

  7. Insert
    • db.test.insert({hello: ‘world’});
    Friday, 20 April 12

    View Slide

  8. Find
    • db.test.find()
    • Equivalent of SELECT * FROM test;
    > db.test.insert({hello: ‘world’});
    > db.test.find();
    { "_id" : ObjectId("4e7c9f464bdd7534bc498ff7"), "hello" : "world" }
    Friday, 20 April 12

    View Slide

  9. Updating
    • db.test.update(, )
    > db.test.find();
    { "_id" : ObjectId("4e7c9f464bdd7534bc498ff7"), "hello" : "world" }
    > db.test.update({hello:‘world’}, {hello: ‘seedhack’});
    > db.test.find();
    { "_id" : ObjectId("4e7c9f464bdd7534bc498ff7"), "hello" : "seedhack" }
    Friday, 20 April 12

    View Slide

  10. Removing
    • db.test.remove()
    > db.test.find();
    { "_id" : ObjectId("4e7c9f464bdd7534bc498ff7"), "hello" : "seedhack" }
    > db.test.remove({hello: ‘seedhack’});
    > db.test.count()
    0
    >
    Friday, 20 April 12

    View Slide

  11. Indexes
    • It’s usually a good idea to index your collections
    • How and which columns depends on what you are doing
    • explain
    > db.test.ensureIndex({hello:1})
    Friday, 20 April 12

    View Slide

  12. More advanced
    • sort, count, limit, special operators
    • Capped collections
    • Geospatial indexing
    • MapReduce
    • Replica sets
    • Sharding
    Friday, 20 April 12

    View Slide

  13. Getting started...
    • Download & install - http://www.mongodb.org/downloads
    • Online shell - http://www.mongodb.org/
    Friday, 20 April 12

    View Slide

  14. Questions / Further
    • Come and ask me questions
    • Updates can also push, set, increment, decrement, etc
    http://bit.ly/gEfKOr
    • Indexes can be across multiple keys, 2D (geo) and ASC / DESC
    http://bit.ly/hpK68Q
    • SQL -> Mongo chart
    http://bit.ly/ig1Yfj
    Friday, 20 April 12

    View Slide