“In the NoSQL space this kind of real-world data is still a bit vague,” writes Todd Hoff at High Scalability. “When asked, vendors tend to give very general answers like NoSQL is good for BigData or key-value access. What does that mean for for the developer in the trenches faced with the task of solving a specific problem and there are a dozen confusing choices and no obvious winner? Not a lot.”
He’s set out to help solve that problem by compiling a list of NoSQL use cases, both general and specific.
Here’s the list of general use cases, Hoff’s commentary omitted:
- Massive write performance
- Fast key-value access
- Flexible schema and flexible datatypes
- Schema migration
- Write availability
- Easier maintainability, administration and operations
- No single point of failure
- Generally available parallel computing
- Programmer ease of use
- Use the right data model for the right problem
- Avoid hitting the wall
- Distributed systems support
- Tunable CAP tradeoffs
He also provides a long list of more specific use cases, here are the first few:
- 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.
We’ve written a few posts that may be of interest for those wanting to know NoSQL is used in practice:
- Why Large Hadron Collider Scientists are Using CouchDB
- How Twitter Uses NoSQL
- Why and How Netflix Adopted NoSQL Databases
GigaOm is also running a series on RealWorld NoSQL.