On NoSQL and NoScalability
Currently, there is a lot of buzz around about NoSQL databases. Bold claims are made about NoSQL databases like they “typically scale horizontally”, are “generally designed for horizontal scalability” or “provide developers with levels of […] and scalability not easily attainable using traditional relational databases”. It seems that a NoSQL database inevitably is highly scalable.
This is wrong and misleading. I think, people seem to mix up two completely unrelated things here. For me, the term “NoSQL” in itself only means “not like a traditional SQL database”. In most of the cases, this is related to a different, non-relational structuring of the data and hence the absence of SQL as primary way to access the data. It has in no way to do anything with scalability.
So, where does this misunderstanding come from? While traditional SQL databases focus on the ACID properties to guarantee consistency, a lot of NoSQL databases relax these constraints to achieve better scalability through distribution on multiple nodes (according to the CAP theorem, you cannot have both at the same time without sacrificing availability, which is not what you want).
But this has nothing to do with being “NoSQL” at all: One could easily build a highly scalable, distributed database with a traditional SQL engine when loosening the consistency constraints. So, it is not about being SQL or NoSQL but rather being transactional and consistent or not.