title: Why Relational database cannot be scaled horizontally
body: <p>I know this question has been asked quite a few times, but I have not got any satisfying answer.</p>
  
  <p>I have read many blogs and most of them say that RDBMS cannot be scaled horizontally. The only way to deal with it is by buying bigger machines. </p>
  
  <p>Then I read why they can't be scaled horizontally. People say because they provide solid, mature services according to the ACID properties. My argument to that is can't we drop an RDBMS to provide ACID properties for specific tables. Is that the only reason that it can't be scaled horizontally and we have to consider NoSQL databases.</p>
  
  <p>The second argument that is put up is that NoSQL databases store data as a single unit whereas RDBMS stores data across multiple tables. Thus one piece of data may be in one system and another piece of data which it is referring may be in another system. Hence scaling RDBMS distributedly becomes difficult. My question to them is why can't we store all the related data in a single table rather scattering it across multiple tables if the situation demands. If NoSQL can store data as a single unit in a single collection, why can't RDBMS store data as a single unit in a single table. (For eg, why an order has to be split into order table, customer table and payment table. Why can't they be clubbed into a single table, the way a NoSQL would have stored)</p>
  
  <p>This also allows developers to develop without having to convert in-memory structures to relational structures.</p>
  
  <p>In short, can we make an RDBMS behave like a NoSQL database and make it scale horizontally?</p>