My question about the most important business and use cases for NoSQL technologies on the NoSQL mailing list sparked an interesting discussion. There appears to be widespread agreement on the following three high-level use/business cases:
- The amount of data, or bandwidth, required by an application is so massive that a massively distributed architecture is needed.
This is the original use case for systems such as Google’s BigTable built to index the internet.
- The query load or query complexity is too large to be handled by relational “joins”.
Digg explained this very well as their reason to move to a NoSQL architecture.
- The gap between the physical relational data structures required by a SQL database and an application’s schema complexity and flexibility requirements is too large.
This encompasses the entire range from needing very loose, weakly typed storage to needing very expressive, strongly typed systems (e.g. graph databases with explicit object models).
Each of these of course is a big category, and more detail can be added. But it is good to see that the community seems to be able to agree on the top-three. It should also put to rest the argument that “NoSQL is not needed”.