So ever since we have had databases (or almost ever since), we have had this debate. Anupam Bhide, looking for a PhD topic under Mike Stonebraker, added a third model, shared everything, and got his PhD (I will let you read his basic conclusions here and see if they are still valid -- take a look at the following paper An Analysis of Three Transaction Processing Architectures!) And then Oracle RAC came along, where Shared Disks were kings (including the famous quote of Larry Ellison, "Shared Nothing is good for nothing!"), and DB2 and Teradata proposed that Shared Nothing wins hand-down, and the world seemed to conclude that for transactions, shared disk model was better, for query processing, shared nothing. But really? Did we forget our friend Shared Everything (see the top 10 results in TPCC)?
And the debate raged on. DB2 for example, had always had Shared Disk model on its mainframe, and recently introduced a Shared Disk model on its distributed platform, dubbed pureScale. Oracle, in spite of its external pronouncements, introduced Shared Nothing style partitioning in its Oracle 9 and beyond.
And then came the cloud. What does it change? ScaleDB asserts that the performance bottlenecks of shared disks, and costs of shared SAN, are no longer applicable in the cloud world, so now shared disk wins over shared nothing. I disagree. Not that shared disk is a bad model, it clearly is useful. And I admire the company, including the fact that Jnan Dash is on its board of advisors. But I disagree that cloud changes anything. Let us see why.
1. SAN becoming cheaper than local disks? Nah... In fact, the core fallacy in the argument is that shared nothing = local disks. In fact, many of the shared nothing implementations with our clients use SAN. Really shared nothing is about "partitioning" so that CPU and data are partitioned. It is not about implementation of data on the local disks of the server. But even if it were, SANs, shared or not, will never beat local disks in raw costs. Never. Give 0 to cloud adding anything here.
2. Performance, with network bandwidth improving making shared disks better? Sure, good bandwidth is always good to have, but what does that have to do with the cloud? Give 0 to cloud adding anything here
3. VM model of pure CPU. Yes, it makes sense to have a stateless CPU model that one can scaleup and scaledown as load changes and this is easier to do in a shared disk model. However, as far as databases go, they do not give this luxury to the VM layers. Most databases I know like to take full control of the whole stack, and equally importantly, the spunup and spundown images cannot act independent of each other because of some global state (locks or whatever). So the pure model soon becomes quite impure. But give 0.5 to cloud adding something here to shared disk model.
4. The loose coupling, "kill rather than avoid failures" with appropriate data replication (so that the right data element is available where one restarts the database) actually does wonders to reliability of a large scale data problem, and even better for a large number of small problems (see my earlier post on this). So give a 1 to shared nothing due to the cloud.
So there you have it, status quo, or some advantage to shared nothing. No?