SQL vs NoSQL

MongoDB and CouchDB have been gaining traction because of performance and scalability. But are performance problems inherent to the relational model?

Michael Stonebraker argues that traditional  database systems performance problems occur in communicating with the applications and logging. Michael Stonebraker, who has worked on Ingres, is  one of the fathers of contemporary database systems. In his post he mentions briefly another traditional argument of relational model advocates: SQL as a higher-level abstraction. As any C. J. Date faithful will recognize, the debate on NoSQL solutions is really not about the lack of SQL but certain features of these systems which in theory have nothing to do with SQL or the relational model.  SQL and things like JSON and indexes are simply different levels of abstraction. MongoDB and CouchDB interface with programs at a lower level. The fact that CouchDB and MongoDB are tied to a low-level implementation should be a point in favour of SQL.

SQL in the real world

Unfortunately, abstraction and elegance do not sit squarely on the relational side. The offenders are well known:

  1. Multiple SQL dialects

  2. Relational database systems are more than database systems

    To illustrate the second point briefly, many working Oracle installations are not limited to data storage functionalities, but contain a lot of PL-SQL code which you would academically consider part of application code. Given the age of the installation, the fact that they were conceived as replacements or complements for existing COBOL systems, they are more of a two tier system , where only presentation is really separate, and there is little distinction between application logic and data storage. So much for all those pretty diagrams.

Relational database systems: the next gen?

But can at least the (perceived) performance problem be overcome? Stonebraker claims that there are implementations of relational engines which surpass the current generation’s performance problems, and there are startups preparing to launch such products right now.

But if the technology is available, why have not any of these products emerged? Why have not these parallel, high performance, relational systems appeared yet? Maybe technology has really nothing to do with it and it’s marketability problems that are slowing things down.