Search code examples
nosqlscalabilityrdbms

Why NoSQL is better at "scaling out" than RDBMS?


I have read the following text in a technical blog discussing the advantages and disadvantages of NoSQL:

"For years, in order to improve performance on database servers, database administrators have had to buy bigger servers as the database load increases (scaling up) instead of distributing the database across multiple “hosts” as the load increases (scaling out). RDBMS do not typically scale out easily, but the newer NoSQL databases are actually designed to expand easily to take advantage of new nodes and are usually designed with low-cost commodity hardware in mind."

I became confused about the scalability of RDBMS and NoSQL.

My confusion are:

  1. Why RDBMS are less able to scale out? And the reason of buying bigger servers instead of buying more cheap ones.
  2. Why NoSQL is more able to scale out?

Solution

  • RDBMS have ACID ( http://en.wikipedia.org/wiki/ACID ) and supports transactions. Scaling "out" with RDBMS is harder to implement due to these concepts.

    NoSQL solutions usually offer record-level atomicity, but cannot guarantee a series of operations will succeed (transaction).

    It comes down to: to keep data integrity and support transactions, a multi-server RDBMS would need to have a fast backend communication channel to synchronize all possible transactions and writes, while preventing/handling deadlock.

    This is why you usually only see 1 master (writer) and multiple slaves (readers).