If you come from the relational database world, there’s a lot on the NoSQL side to be skeptical of. But if you come from the Internet and startup world, RDBMSes (relational database management systems) seem outdated, overly-complex and worry you that they’ll be unable to scale to your workloads.
The choices are stark and difficult. The Enterprise doesn’t want to give up the data consistency provided by ACID (atomicity, consistency, isolation and durability) guarantees, nor does it want to chuck its investment in SQL query skills and tools. But applications that must scale the public Web can’t forfeit the scale and ease of geo-distributed clustering that many NoSQL databases provide.
Have the cake, eat it too?
Is this a false choice? The folks at NuoDB think so. The NuoDB team believes that transactional, analytical and "Web scale," elastic workloads can be handled by the same database; it's just a matter of making that the design goal.
The data world has its bitter-with-sweet axiom, called the CAP theorem, which most people interpret as saying databases can have at most two of the following attributes: consistency, availability and partition tolerance. NuoDB says it's possible to have all three in one product, and design that product from the ground up to operate as a cloud service. And the company says it launched that product this morning.
NuoDB’s claim is pretty big, and skepticism is warranted. But the team behind it is impressive. One of NuoDB’s co-founders is Jim Starkey, who worked on an early relational database called RDB. RDB was developed at Digital Equipment Corporation (DEC -- eventually acquired by HP) and is now owned by Oracle. Starkey was also a senior architect at MySQL, whose namesake database is now an Oracle property as well.
In an interview I conducted back in September with NuoDB’s CEO, Barry Morris, I learned a lot about the product’s architecture. With NuoDB, everything is peer-to-peer. The analogy is flock of birds, which has even influenced the product’s logo.
Morris explained that a flock of birds works together, but no one's in charge. If you add birds to a flock, it's still a flock. Likewise, adding servers to a cluster enables a scale out capability that is native to the NuoDB product, even while it behaves as a single logical database. NuoDB calls this an "emergent" archictecture.
Some nodes in the cluster may handle rows, others might handle indexes, and another handles the catalog, which tracks which nodes are where in the cloud. NuoDB does not use striping or partitioning; nodes replicate themselves and keep their replicas up to date. Even the catalog object is replicated, to avoid a single point of failure. The data objects are kept in memory, and operations run asynchronously.
Too good to be true, or new entitlement?
It's neat stuff. But can we really have all three CAP attributes in one product? Can we keep SQL (along with its tools ecosystem) and ACID guarantees, yet still get a database that scales and runs as a service, like a NoSQL database? That’s what NuoDB, and the "NewSQL" movement, is all about. And 2013 will likely be a year where the NewSQL model gains prominence, and scrutiny too.