SQL vs NoSQL - Scooters vs Motorcycles

There seems to be a pretty potent Meme floating around right now viz. The Future Of NoSQL - To Be Borged.  The general argument seems to be some combination of
  1.  Databases are complex beasts
  2. We've spent eons simplifying access to these data stores (SQL)
  3. BigData revolves around an even more complex set of problems
  4. Everybody is building custom solutions to these problems
  5. Regression to the mean will result in them all becoming somewhat similar
  6. SQL stores will just add these common features
  7. All your bases will belong to them
 As you might imagine, I quite disagree with this.

Oh yes, I fully expect SQL DBs to incorporate some NoSQL features over time, but it really isn't the same as when Object Oriented Databases went to the Great Dustbin In The Sky.  As I've mentioned before, NoSQL stores are more solution-oriented - there is a huge and thriving ecosystem, and the vast majority of them are designed around specific types of solutions.  Can they be used inter-changeably?  Oh yes, but only for extremely general problems (and odds are that in many of those cases, you could just as well have used a SQL store).  But in truth, a graph-oriented DB is really, *really* not the same thing as a Key-Value store :-) 

Yes, these data stores are increasingly taking on features from each other - but frankly the vast majority of these shared features tend to be build around general concepts like administration, backups, sharding, and the like.  And these are good things to take, and ones that, frankly, the SQL community could learn from (Joke! Bad one, but still a joke!)

However, and this is critical, this does not negate the inherent difference between NoSQL stores.  A key-value store has very little in common with a columnar database, and building out a kitchen-sink version of a datastore that can be used to do both, while theoretically possible (and given the state of the world, quite probably something that theoretically already exists in Oracle) is not exactly something that actually adds value to anyone's life.

 SQL DBs, on the other hand, are generalists.  As I've described earlier, you can pretty much use PostgreSQL / MySQL / Oracle interchangeably (money-willing), and largely because in the vast, vast majority of implementations, there is nothing unique to a SQL store that is being utilized.  Face it, virtually everything goes through some sort of ORM nowadays, and if you take scaling out of the picture, with the exception of syntax (sometimes), most people don't know and don't care about the database implementation.  In fact, if anything, these have gotten too complex, with a significant chunk of implementation consisting of figuring out what you don't want!

Seriously though, SQL stores are generalists.  To use two-wheelers as an analogy, SQL stores are Scooters - perfectly reliable all-purpose transport that can be used for pretty much anything, are all pretty identical, and that Just Work.  NoSQL stores, on the other hand, are like motorcycles - a bewildering array of shapes, sizes and types, each of which has a very very specific target (rebels, crotch-rockets, touring, urban transport, stylist, investment bikers, whatever).
By the way, do not take the Scooter analogy to mean "underpowered".  Have you looked at the Gilera GP800?  75bhp, 120mph - not exactly puny...




Comments

Popular posts from this blog

Cannonball Tree!