Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are NoSql Key/Value databases used for

I have been hearing alot about nosql key/value databases online now. Can you give an example of what one is used for. What kind of real world data is best for these kind of databases?

like image 637
Luke101 Avatar asked Aug 29 '12 01:08

Luke101


1 Answers

I think 'What the heck are you actually using NoSQL for' is an excellent read for real life usage cases for NoSQL databases. Let me quote some of them here:

  • Managing large streams of non-transactional data: Apache logs, application logs, MySQL logs, clickstreams, etc.

  • Syncing online and offline data. This is a niche CouchDB has targeted. Fast response times under all loads.

  • Avoiding heavy joins for when the query load for complex joins become too large for a RDBMS.

  • Soft real-time systems where low latency is critical. Games are one example.

  • Applications where a wide variety of different write, read, query, and consistency patterns need to be supported. There are systems optimized for 50% reads 50% writes, 95% writes, or 95% reads.

  • Read-only applications needing extreme speed and resiliency, simple queries, and can tolerate slightly stale data.

  • Applications requiring moderate performance, read/write access, simple queries, completely authoritative data.

  • Read-only application which complex query requirements.

  • Load balance to accommodate data and usage concentrations and to help keep microprocessors busy.

  • Real-time inserts, updates, and queries.

  • Hierarchical data like threaded discussions and parts explosion.

  • Dynamic table creation.

  • Two tier applications where low latency data is made available through a fast NoSQL interface, but the data itself can be calculated and updated by high latency Hadoop apps or other low priority apps.

  • Sequential data reading. The right underlying data storage model needs to be selected. A B-tree may not be the best model for sequential reads.

  • Slicing off part of service that may need better performance/scalability onto it's own system. For example, user logins may need to be high performance and this feature could use a dedicated service to meet those goals.

  • Caching. A high performance caching tier for web sites and other applications. Example is a cache for the Data Aggregation System used by the Large Hadron Collider.

  • Voting.

  • Real-time page view counters.

  • User registration, profile, and session data.

  • Document, catalog management and content management systems. These are facilitated by the ability to store complex documents has a whole rather than organized as relational tables. Similar logic applies to inventory, shopping carts, and other structured data types.

  • Archiving. Storing a large continual stream of data that is still accessible on-line.

  • Document-oriented databases with a flexible schema that can handle schema changes over time.

  • Analytics. Use MapReduce, Hive, or Pig to perform analytical queries and scale-out systems that support high write loads.

like image 186
Vishwa Patel Avatar answered Nov 03 '22 17:11

Vishwa Patel