Introduction to MongoDB

  • 3,730 views
Uploaded on

Talk on MongoDB at local Ruby meetup

Talk on MongoDB at local Ruby meetup

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,730
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
92
Comments
0
Likes
11

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide


  • Old man - SQL
    DoD - MongoDB
  • Old man - SQL
    DoD - MongoDB
  • Old man - SQL
    DoD - MongoDB
  • Document Orientated: It isnt stored as records and tables, information stored as documents or objects
    Build for speed: No transaction log / removed anything that would slow it down
    Rich document based queries: Users can find documents based on any search criteria / similar to SQL
    Full index support: Index on any attribute - similar to SQL
    Replication and failover: Supports replication of data between servers for failover and redundancy
    Auto sharding: Scale horizontally without compromising functionality - EVERY EASY - NO JOINS
    Map Reduce - Database itself can perform advanced aggregation and data processing

  • Websites: Object orientated programming languages - Easy persistence of objects
    Caching: Extremely fast
    High scalability: Easy Auto sharding and replication and failover

  • * SQL writes to transaction log (for data durability)
    * Performance loss
    * MongoDB doesn’t do this - Uses replication
  • Similarities and Differences between SQL and document orientated databases
  • No need for any rake db:creates or rake db:setup
  • No need for any rake db:creates or rake db:setup
  • Like a table in MySQL
    EXCEPT!!!
    Capped collections: Extremely fast, atomic writes, good for log files
  • Like a table in MySQL
    EXCEPT!!!
    Capped collections: Extremely fast, atomic writes, good for log files



  • Next up is relations - which is one of the major differences or advantages over SQL
  • First class - objects that can stand alone (users -> blog posts)
  • Similar to MySQL
    Tags: Array of ID’s Many to many
    Comments: belongs_to / has_many


  • Using mongodb with ruby
  • First up:

    Mongomapper
    by jnunemaker
    Works for OrderedList

    Typecasting: Mongodb doesnt understand types - MongoMapper creates the typecasting
  • Durran - Hashrocket




Transcript

  • 1. Getting started with MongoDB
  • 2. Introduction
  • 3. Introduction Relational Database
  • 4. Introduction Document Relational Orientated Database Database
  • 5. Introduction Document Relational Orientated Database Database NoSQL Bra.
  • 6. What is MongoDB? • Scalable high-performance open source, document- orientated database • Built for speed • Rich document based queries • Full index support • Replication and Failover • Auto Sharding • Map / Reduce
  • 7. Why use MongoDB? • SQL was invented in the 70’s to store data • MongoDB stores documents / objects • We work with objects (Ruby) • We need databases to persist our objects • So why not just store objects directly?
  • 8. What its great for • Websites • Caching • High scalability • Storage of program objects and JSON
  • 9. What its not great for • Highly transactional applications • Problems requiring SQL
  • 10. Differences
  • 11. When I Say Database
  • 12. When I Say Think Database Database
  • 13. When I Say Think Database Database • Made up of multiple collections • Are created on-the-fly when first referenced
  • 14. When I Say Collection
  • 15. When I Say Think Collection Table
  • 16. When I Say Think Collection Table • Schema-less • Indexable by one or more keys • Created on-the-fly when first referenced • Capped collections: Fixed size, older records dropped after limit reached
  • 17. When I Say Document
  • 18. When I Say Think Document Record / Row
  • 19. When I Say Think Document Record / Row • Stored in a collection • Can have _id key - Works like primary keys in MySQL • Supports relationships: embedded or referential • Document storage in BSON
  • 20. When I Say Think Document Record / Row • Stored in a collection • Can have _id key - Works like primary keys in MySQL • Supports relationships: embedded or referential • Document storage in BSON JSONS Binary Brother
  • 21. Relations
  • 22. Referential / Normalised • Same as SQL • “First class” objects that are at top level • Many to many relationships has_many User Blog Post belongs_to
  • 23. # Post { title: “Getting started with MongoDB”, body: “blah blah blah ... “, created: Date(’09-06-2010’), tags: [1, 2] } # Comments # Tags { { id: 1, body: “I did not have relations..”, name: “example” user_id: 1, }, { post_id: 1, id: 2, created: Date(’09-06-2010’), name: “lol” } }
  • 24. Embedded • Embedded is pre-joining • Embed when document always appears with parent • 4MB document size limit Blog Post Post Title Post Body Comments
  • 25. # Posts { title: “Getting started with MongoDB”, body: “blah blah blah ... “, created: Date(’09-06-2010’), Array tags: [ ‘example’, ‘bill clinton’ ], comments: [ { author: “Bill”, comment: “I did not have relations” }, { author: “Monica”, comment: “LOL” } ] } Array of hashes
  • 26. Ruby MongoDB
  • 27. MongoMapper http://github.com/jnunemaker/mongomapper • Typecasting • Callbacks (ActiveSupport Callbacks) • Validations • Connection and database can differ per document • Has create, update methods • Find: id, ids, :all, :first, :last • Associations (has_one, has_many, many_to_many)
  • 28. http://www.mongoid.org • Named scopes / chainable criteria • Versioning of your documents • Full callback support on documents AND embedded documents • Proper master/slave distribution • Optimised for use with extremely large datasets This is what we use!
  • 29. Demo
  • 30. Conclusions • NoSQL is pretty scary / We’re used to SQL • It’s the future.
  • 31. Chat to us online: twitter: @platform45
  • 32. Discussion