1 / 51

NoSQL Databases

NoSQL Databases. Cloudant & Redis. Nikolay Tomitov Technical Trainer SoftAcad Training Center. Schema-free Databases. Documental Databases. Relational Databases. JSON Data Format. www.softacad.bg. Meet Cloudant.

levi
Download Presentation

NoSQL Databases

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. NoSQL Databases Cloudant & Redis Nikolay Tomitov Technical Trainer SoftAcad Training Center www.softacad.bg

  2. Schema-freeDatabases Documental Databases Relational Databases www.softacad.bg

  3. JSON Data Format www.softacad.bg

  4. Meet Cloudant Cloudant == managed installation of Apache CouchDB in the cloud www.softacad.bg

  5. Global Data Network • Cloudantscales within & between data centers • Global networks of servers • Built-in replication and sync • Push the data closer to the user & application • Disaster recovery www.softacad.bg

  6. Nice Features • Eliminates data layer-related complexity, delay, cost, and risk • Performance & scale with no worries • Build epic apps, easily • Enables advanced app features and analytics • Full-text search, off-line computing, replication, incremental MapReduce, code and data • distribution... • Accelerates release cycles (reduces time to value) • Start for free, pay as you grow www.softacad.bg

  7. Developingwith Cloudant • Provision Signup is free, and access is immediate • Define No schema, usually just JSON • Access RESTful API • View Define data views via Javascript • Search Integrated, Lucene-like full-text search • Analyze Incremental, chainable MapReduce • Operate Dashboards to monitor, compact, replicate • Grow Automatic

  8. CouchDB Inside • Data is stored and returned in JSON format • Queried via HTTP RESTful API • Index building language: Javascript • Simple and intuitive interface www.softacad.bg

  9. REST Interface – DEMO • Create: HTTP PUT /db/test • Read: HTTP GET /db/test • Update: HTTP PUT /db/test • Delete: HTTP DELETE /db/test www.softacad.bg

  10. Querying the DB • Views: the way to arrange data to answer our questions • Method to build views: Incremental MapReduce using JavaScript www.softacad.bg

  11. DEMO – Simple MapReduce www.softacad.bg

  12. Example www.softacad.bg

  13. How to Findsum(checkouts) ? www.softacad.bg

  14. Simple Map: emit(checkout) www.softacad.bg

  15. Simple Reduce: sum(checkouts) www.softacad.bg

  16. Simple Reduce: sum(checkouts) www.softacad.bg

  17. Views can be Distributed www.softacad.bg

  18. Practice Practice Map Reduce at: http://blog.mudynamics.com/wp-content/uploads/2009/04/icouch.html http://couchdb.apache.org/downloads.html www.softacad.bg

  19. Meet Redis “Redisis an open source, advancedkey-value store It is often referred to as a data structure server • Since keys can contain strings, hashes, lists, sets and sorted sets www.softacad.bg

  20. Features First • It’s really fast • Non-blocking I/O, single threaded • 100,000+ read/writes a second • It complements yourexisting storage layer • It is very feasible for small apps • But..trade performance for durability www.softacad.bg

  21. Keys • Short keys perform better • Could not contain whitespaces • Common convention is : obj-type:id:field • user:77:pass = abcd • SHA1(data) makes a useful key too

  22. Supported Data Types • strings (up to 1GB) • Lists of strings • Sets of strings • Sorted sets • Hashes • Pubsub channels

  23. Commands on All Keys • EXISTS[key] • DEL[key] • TYPE[key] • RENAMENX[key] • EXPIRE [key] • EXPIREAT[key] • TTL[key]

  24. Commands on Strings • SET[key value] • MGET[key1 key2 key3..] • GET [key] • INCR/DECR [key] • INCRBY/DECRBY[key]

  25. Common Uses • Store session data + creation time • Hit counts • key =MD5(url) • Incr hits-by-key:$key • APPEND can be used for logging • Redis as shared memory location • Progress bars, polling

  26. Durability • More durability -> less performance • Default behaviour fork-and-save a snapshot to disk every… • 15 mins if one key has changed • 5 mins if 10 keys have changed • 60 secs if 10000 keys have changed • SAVE/BGSAVE commands trigger a save

  27. DEMO (JAVA)

  28. Check It Out • Try it : • http://try.redis-db.com • Redis Admin UI • http://www.servicestack.net/mythz_blog/?p=381 www.softacad.bg

  29. Amazon SimpleDB

  30. SimpleDB: Overview • Non–relational data store • Designed to be highly available and flexible • Available only on Amazon WS

  31. SimpleDB: Functionality • Low touch – almost no administration needed • Highly available – automatic replication and fail over • Flexible – not bound by a schema • Simple to use – supports only the most common operations • Designed for integration with other Amazon Web Services • Secure • RESTful interface

  32. SimpleDB: Pricing • Free tier – 1 GB/month, 25 SimpleDB machine hours • Only outgoing transfers are charged • Data transfers in the same region are free • Monthly rates between $0.12 and $0.05

  33. SimpleDB: Pros • Optimized reads and writes • Easily integrated with other AWS • Uses the HTTP protocol for communication • Ideal for storing non – structured or semi – structured data

  34. SimpleDB: Cons • Limited functionality compared to relational and other non – relational products • Complex queries need a lot of coding • No fulltext indexing • All queries have the N + 1 problem

  35. Demo Amazon Simple DB

  36. Google Datastore (GDS)

  37. GDS: Overview • Schemaless object datastore • Designed to scale • Hierarchical • Available only on Google App Engine

  38. GDS: Functionality • No administration needed • Flexible – not bound by a schema • Designed for no downtime • Automatic replication • Queries must run against predefined indexes • Rich query engine • Atomic transactions • APIs available for all the languages supported by GAE

  39. GDS: Pricing • Free quota: 1GB, 200 indexes • Monthly rates: $0.24/gigabyte; between $0.01 and $0.10 for 100k database operations

  40. GDS: Pros • Fast • Hierarchical queries boost speed • Atomic transactions supported • Large and active community • The Java API include implementations of JDO and JPA

  41. GDS: Cons • Limited functionality • Compared to relational databases and other non–relational data stores • Indexes require additional configuration

  42. Demo Google App Engine Datastore

  43. MongoDB

  44. Overview • Non – relational, schema free database • Highly scalable • Engineered for maximum speed • Available as a stand alone product • A number of hosted MongoDB solutions available • MongoLab • MongoHQ • Mongo Machine

  45. MongoDB: Functionality • Almost administration free • High availability – replication and sharding • A rich set of features • Complex queries • Aggregate functions • Map/Reduce operations • Indexes • Stored procedures • BLOB storage (GridFS) • Database drivers available for a large list of programming languages

  46. MongoDB:Hosted Solutions • Easy setup (No billing info needed) • Intuitive interface • 240MB free • Deploy on Amazon EC2, Rackspace or Joynet • MongoDB Version 1.8 • Easy setup (Credit card needed) • Intuitive interface • 16MB free • Deploy only on Amazon EC2 • Different MongoDB Version according to price plan MongoLab MongoHQ

  47. MongoDB: Pros • Fast • Rich feature set • Mature product • Large and active community

  48. MongoDB: Cons • No relational database style transactions • No data validation

  49. Demo MongoDB on MongoLab

  50. Homework • Register for a free Cloudant account at https://cloudant.com. • Write a simple "Dictionary" application in Java, C#, PHP, or JavaScript to perform the following in Cloudant: • Add a dictionary entry (word + translation) • List all words and their translations • Find the translation of given word The UI of the application is up to you (it could be Web-based, GUI or console-based). You may download a Cloudant client library from http://wiki.apache.org/couchdb/Related_Projects

More Related