NoSQL and big data will slow Oracle RDBMS's long-term growth, but it won't deliver a death blow anytime soon
Like many people, I cheer any sign of Oracleโs downfall and chuckle at the thought of Larry Ellison having some misadventure on the high seas. Who doesnโt? But the sad fact is that, despite all the buildup, NoSQL and big data do not threaten Oracle or the RDBMS paradigm in the near term.
On the other hand, thereโs a decent chance NoSQL will take a big bite out of Oracle RAC (Real Application Clusters). Hereโs why.
Oracle RAC enables you to scale your application by implementing load balancing and high availability across multiple nodes. It scales well for your everyday read-mostly-mostly (the second โmostlyโ is deliberate) clusters but not as well when you have a few more writes. To support more nodes, it must coordinate a write-lock across the network.
To take advantage of RAC, you need to write your application very well and very carefully. For the majority of applications, the cost of that development (or the horsepower to run less carefully written apps) will be high.
RAC your world, for a price
About 1 percent of systems experience backbreaking traffic, and in cases that demand high transaction throughput, RAC may well make sense. But RAC doesnโt add up for the remaining 99 percent.
Thereโs another cost your average Oracle expert wonโt tell you about: Oracle RAC, like Oracle RDBMS itself, requires lots of extra care and feeding.
Oracle RDBMS, frankly, has the kinds of bugs that are hard to imagine in a mature product. Try launching a site with 8 million concurrent and very active users where some patches that canโt be avoided have yet to be put into place. What if, on your rolling update, every time you restart an app server node, Oracle leaks memory? When you add RAC, you get new bugs and problems to boot. Itโs hard to find independent studies on maintenance costs, and vendors have long learned to manipulate total cost of ownership (TCO) measures, but ask anyone who has deployed this beast: It needs a lot of love.
We havenโt even gotten to the costs for RAC yet according to Oracleโs price list:
Product | Price |
Oracle Enterprise Edition per CPU | $47,000 |
Support/updates | $10,450 |
RAC per CPU | $23,000 |
RAC support | $5,060 |
For a three-node cluster with four cores per node, youโre looking at several times the cost of my house. Oracle pricing is like cellular carrier pricing: Hand over your wallet and theyโll take what they want. There are about 100 line items of indecipherable fees. You owe what they say you owe. For this theoretical cluster, at retail, weโre looking at no less than $160,000, all before installation. (This price doesnโt include all the small line items I donโt understand.)
If RAC is software for the upper 1 percent, why is it a best seller? Recall my statement that itโs uncommon for people to write their software well. In other words, most software makes inefficient use of the database and taxes it beyond what you would expect. Therefore, you have to scale with more CPUs and more disks, which is what RAC is intended to help you do. In the event your reads/writes and locks arenโt efficient, throwing hardware at the problem may not increase performance as much as you expect.
The other big reason for RAC is high availability. If a node goes down, you want to stay up. You donโt need heavy load for a complete database outage to cost you a lot of money.
Enter NoSQL
RACโs feature set, higher scalability, and high availability are part and parcel of many modern NoSQL databases. Consider Couchbase, which is adding a document database to its popular offering with the new 2.0 release. With full 24/7 support, weโre looking at $4,500 per node. That adds up to $13,500, which is maybe three times what I paid for my motorcycle but less than I paid for my car. As for MongoDB, currently the most popular document database, weโre looking at $4,000 per instance of mongod (you may end up running more than one instance per node since Mongo is single-threaded).
From an operational store standpoint, where quickly handling short reads and writes concurrently is the most important priority, RAC may scale to your needs, but at a price point that doesnโt make much sense. Moreover, Oracle hasnโt become any easier to maintain, and setting up for โfive ninesโ availability would require a much more advanced system than Iโve priced out here.
For analytical systems, the cost will be higher. Fortunately, your need for RAC is much less urgent here because these systems tend not to be real time and mere replication is often sufficient. A Hadoop cluster might be more appropriate. Neither of the two largest Hadoop vendors seem to disclose their pricing publicly, but itโs hard to imagine itโs worse than building a RAC system of the same approximate scale.
Moreover, as we head to the clouds, whatโs more partitionable and affordable than autoscaling/autoprovisioning new nodes as traffic demands?
If you donโt need RAC, maybe you donโt need Oracle
A key advantage of the Oracle RDBMS is that if you design your schema and structure your queries just right, you can heavily parallelize analytical, ETL, and batch jobs. A possible corollary to โitโs uncommon to write your software wellโ is that itโs uncommon to design your schema well, especially if youโre trying to have one master model of all of your data. But if your problem lends itself to this kind of parallelization, it probably also lends itself to MapReduce.
Even if you have a great fit for the RDBMS, you arenโt doing some highly parallelizable star-schema crazy thing, and youโre not using RAC, you can use a much less expensive RDBMS such as PostgreSQL or even SQL Server (which last I checked was about one-fourth of the cost). For operational systems, the best thing your RDBMS can do is manage concurrency and get out of the way while you try and hit the disk (or maybe the cache) as quickly as possible.
Nonetheless, Oracle will have a long tail, because itโs entrenched โ and enterprise customers have undertaken ill-advised actions, like writing PL/SQL triggers. Migration will take time, and in some cases, spending a few hundred thousand dollars more is less painful than the cost of the refactoring.
But my original advice holds. Anyone looking at Oracle RAC for a new system should probably take a much deeper dive into NoSQL and their data problem. NoSQL is a RAC killer.
This article, โNoSQL is no Oracle killer,โ was originally published at InfoWorld.com. Read more of Andrew C. Oliverโs Strategic Developer blog, and keep up on the latest developments in application development at InfoWorld.com For the latest business technology news, follow InfoWorld.com on Twitter.


