Stonebraker: Send Relational DBMSs to the Home for Tired Software
marklogic.blogspot.com
marklogic.blogspot.com
My guess is that we will still be reading about the imminent death of the relational database another 40 years from now.
I've no comment either way on whether it is, and I know who Stonebraker is and respect what he's done, but he has a vested interest here. Just like Netscape programmers needed to kill off their earlier work, Mosaic.
I'm not going to form an opinion on his word alone, but he's got big enough chops in my book to warrant taking what he says seriously, even if he has a vested interest.
Now, you can just add additional "shards" of a MySQL database, but that breaks the whole "R" of "RDBMS" (can't do joins across the shards). In addition, you're limited to a ring-style Master-Master replication scheme vs/ a grid/mesh. There's also MySQL NDB_Cluster engine, but I have never (to date) seen it in production (there are just too many limitations).
Proprietary solutions like Oracle RAC may scale on demand, but require a DBA team. The cost overhead offsets any savings gained through on-demand provisioning of resources.
Not to mention Oracle RAC (and even MySQL) aren't exactly friendly to commodity hardware (which is what both official cloud computing solutions and de-facto clouds used in high-tech companies' data centers are built on).
However, I would not associate it with the "cloud" movement/paradigm/whatever. It is a cluster (the C in RAC stands for cluster) with 2 or more instances sharing memory structures across a network. To add another node to the cluster is excruciating; I would not classify it as dynamically scalable - the hallmark of cloud computing.
I make that assertion because no one actually uses arbitrary amounts of scaling, "in the cloud" or anywhere else.
For many users, the primary benefit of cloud computing is the ability to go quiescent and not pay. For everyone, there's a benefit to handling various levels of load with usage based payment, but the active range is reasonably limited.
All this is well within the capability of a professionally administered RDBMS.
You "scale" by buying more and lashing them together as you see fit.
Amazon happens to provide a very high capacity datastore, but it could provide RDBMS instances just as it provides "compute" instances.
Speaking of which, Chris Date, Hugh Darwen and some others were talking about a significant extension or evolution of the relational database, called the transrelational database, several years ago. Anyone heard of any progress on that front lately?
My definition of "legacy" code: code that is field-tested, has a low defect rate, and generally works.
I do however think there will always be a good place for the traditional RDBMS. For instance, there are times when I'm creating that I don't know what the layout of the data will need to be, and where the optimizations will be most needed, so I back an app with Postgres. Should I need to expand later, it will be easier as I have actual data to work with.
I guess the point I'm trying to make is: unless you know for sure that your data will benefit from a different model (e.g. known performance needs, or a better conceptual mapping), not using an RDBMS seems like a premature optimizaton.
I'm confused -- what does main memory vs. row store have to do with relational vs. non-relational?