open source high performance document oriented database
play

open-source, high-performance, document-oriented database - PowerPoint PPT Presentation

open-source, high-performance, document-oriented database Non-relational Operational Stores (NoSQL) New Gen. OLAP RDBMS (vertica, aster, greenplum) (Oracle, MySQL) NoSQL Really Means:


  1. open-­‑source, ¡high-­‑performance, ¡ document-­‑oriented ¡database

  2. Non-relational Operational Stores (“NoSQL”) New Gen. OLAP RDBMS (vertica, ¡aster, ¡greenplum) (Oracle, ¡MySQL)

  3. NoSQL Really Means: non-­‑relational, ¡next-­‑generation ¡ operational ¡datastores ¡and ¡databases

  4. no ¡joins + no ¡complex ¡transactions Horizontally Scalable Architectures

  5. no ¡joins + no ¡complex ¡transactions New Data Models

  6. New Data Models improved ¡ways ¡to ¡develop ¡applications?

  7. Data Models Key ¡/ ¡Value memcached, ¡Dynamo Tabular BigTable Document ¡Oriented MongoDB, ¡CouchDB, ¡JSON ¡stores

  8. • memcached scalability ¡& ¡performance • key/value • RDBMS depth ¡of ¡functionality

  9. JSON-style Documents represented ¡as ¡ BSON {“hello”: ¡“world”} \x16\x00\x00\x00\x02hello \x00\x06\x00\x00\x00world \x00\x00 http://bsonspec.org

  10. Flexible “Schemas” {“author”: ¡“eliot”, {“author”: ¡“mike”, ¡“text”: ¡“...”, ¡“text”: ¡“...”} ¡“tags”: ¡[“mongodb”]}

  11. Dynamic Queries

  12. Atomic Update Modifiers

  13. Focus on Performance

  14. Replication master slave master master slave master master slave slave slave slave master

  15. Auto-sharding Shards mongod mongod mongod ... Config mongod mongod mongod Servers mongod mongod mongod mongos mongos ... client

  16. Many Supported Platforms / Languages

  17. Best Use Cases T Scaling ¡Out Caching The ¡Web High ¡Volume

  18. Less Good At highly ¡transactional ad-­‑hoc ¡business ¡intelligence problems ¡that ¡require ¡SQL

  19. A Quick Aside _id special ¡key present ¡in ¡all ¡documents unique ¡across ¡a ¡Collection any ¡type ¡you ¡want

  20. Post {author: ¡“mike”, ¡date: ¡new ¡Date(), ¡text: ¡“my ¡blog ¡post...”, ¡tags: ¡[“mongodb”, ¡“intro”]}

  21. Comment {author: ¡“eliot”, ¡date: ¡new ¡Date(), ¡text: ¡“great ¡post!”}

  22. New Post post ¡= ¡ {author: ¡“mike”, ¡ ¡date: ¡new ¡Date(), ¡ ¡text: ¡“my ¡blog ¡post...”, ¡ ¡tags: ¡[“mongodb”, ¡“intro”]} db.posts.save(post)

  23. Embedding a Comment c ¡= ¡ {author: ¡“eliot”, ¡ ¡date: ¡new ¡Date(), ¡ ¡text: ¡“great ¡post!”} db.posts.update({_id: ¡post._id}, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡{$push: ¡{comments: ¡c}})

  24. Posts by Author db.posts.find({author: ¡“mike”})

  25. Last 10 Posts db.posts.find() ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡.sort({date: ¡-­‑1}) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡.limit(10)

  26. Posts Since April 1 april_1 ¡= ¡new ¡Date(2010, ¡3, ¡1) db.posts.find({date: ¡{$gt: ¡april_1}})

  27. Posts Ending With ‘Tech’ db.posts.find({text: ¡/Tech$/})

  28. Posts With a Tag db.posts.find({tags: ¡“mongodb”}) ...and Fast (multi-­‑key ¡indexes) db.posts.ensureIndex({tags: ¡1})

  29. Indexing / Querying on Embedded Docs (dot ¡notation) db.posts.ensureIndex({“comments.author”: ¡1}) db.posts.find({“comments.author”: ¡“eliot”})

  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 (just ¡start ¡adding ¡them) post ¡= ¡{author: ¡“mike”, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡date: ¡new ¡Date(), ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡text: ¡“another ¡blog ¡post...”, ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡tags: ¡[“mongodb”], ¡ ¡ ¡ ¡ ¡ ¡ ¡title: ¡“MongoDB ¡for ¡Fun ¡and ¡Profit”} post_id ¡= ¡db.posts.save(post)

  33. Advanced Queries $gt, ¡$lt, ¡$gte, ¡$lte, ¡$ne, ¡$all, ¡$in, ¡$nin db.posts.find({$where: ¡“this.author ¡== ¡‘mike’ ¡|| ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡this.title ¡== ¡‘foo’”})

  34. Other Cool Stuff aggregation ¡and ¡map/reduce capped ¡collections unique ¡indexes mongo ¡shell GridFS geo

  35. slides ¡will ¡be ¡up ¡on ¡http://dirolf.com Download MongoDB http://www.mongodb.org and ¡let ¡us ¡know ¡what ¡you ¡think @mdirolf ¡ ¡ ¡ ¡@mongodb

Recommend


More recommend