Michael Stonebraker, a database pioneer and researcher, recently said that Facebook’s implementation of MySQL was “a fate worse than death,” and they ought to rewrite their entire infrastructure. I think that analogy is a bit extreme. That statement also shows me that relational databases can scale to some dramatic heights with creative engineering as Facebook as shown with MySQL. I suspect that Facebook could easily use SQL Server and complex sharding of data to power the site if they wanted to in place of MySQL.
Mr. Stonebraker has another solution for the “oldSQL” problem of scaling to very high volumes of transactions while maintaining ACID principles. He has a company that makes VoltDB, a database that lives in memory, complies with ACID principles, and can scale to very high transaction volumes.
That’s part of a wave of products that are classified as “NewSQL”, or even ScalableSQL, solutions. These databases embrace the power of SQL and even relational databases, but build scalability and high availability directly into the products. It’s interesting to see SQL Azure on the list of NewSQL products, and it makes me think that Azure is much more than just a VM in the cloud running SQL Server. At least I hope it is and includes some scaling features beyond what a single VM can provide.
Running in memory scares me, but perhaps if you expect failure of nodes, and you have some sort of replication of the data among many nodes, it can work. I do worry about the consistency across the nodes and the latency that can affect this, but perhaps these products do a good job of addressing these concerns. I still think a large scale power failure could be disastrous, so I assume these products do write to disk at some point.
I do agree that the relational model can scale, and I’m sure that we will see SQL Server grow to encompass and accommodate the concerns of customers that need to run large scale databases in the future. I’m just not sure how they’ll do it.