4. Scale-up and Scale-out: I was watching shark-tank yesterday. One of the contestants said, "year to date sales is 2 million dollars and we expect to close the year with 7 million dollars". Even the experienced sharks were surprised. The reason for this was 75% of their sales come during christmas season.
Each business has variability due to seasons and events. If you don't handle increased demand seamlessly, you'll risk losing revenue at the point of greatest profitability.
RDBMS can scale. They've scaled from single processor systems to tens or even hundreds of processor-cores in a single machine, known as SMP -- symmetric multi-processor machines. This is scale-up. Every time you scale-up, you need planning, downtime, data migration and power-on procedures. This is too costly, slow and risky.
NoSQL systems were designed to scale-out. When you reach system capacity, you simply add new systems into the cluster. Data and workload gets distributed to the new configuration seamlessly. No application downtime! This is highly suited for modern commodity clusters and instant provisioning on the cloud.
5. TCO -Total cost of Ownership & Operation: Roughly, RDBMS vendors charge PER CORE. Ivy Bridge from Intel has 12-core and 15-core model. NoSQL vendors charge PER NODE (machine within certain configuration limits). The list price per node (defined as machine with up to 24-cores) is typically the price of 2-cores. So, 12 times difference right there!
So, it should be an easy call, right? Unfortunately, not. There is a huge feature difference between SQL and NoSQL systems.
RDBMS does more than simple get and put of the row. Once you design a good schema, the number of SQL you can issue on this schema is infinite. Data architects understand the data relationships and general application requirements and design the schema. Applications have flexibility on the queries they issue on this.
In NoSQL, you're often encouraged to use the primary-key. Often (e.g. HBase), primary-key is the only way to access the data efficiently.
While RDBMS provides rich functionality, using the 80/20 hypothesis, majority of applications are using under 20% of the features. Even the 20% of the RDBMS features used by these apps are often considered advanced NoSQL features! However, many of them have workarounds that make migration worthwhile. When you consider the cost difference, some work arounds are worth it!
6. Read-Write Patterns: RDBMS generally assumes you write the data once and read it many-may times. Assuming 80% SELECT and 20% INSERT/UPDATE/DELETE the typical data pattern. Hence, a slower WRITE throughput on the system isn't penal. There are data warehousing situations where you're loading large amounts of data. And there are many tools and techniques to do this. Special loaders which load without the overhead of transactional log is one of them. Other is to create a separate table, prepare the data in a separate table and then simply ATTACH that table into a single RDBMS table online.
SQL or NoSQL?
Going from a SQL to NoSQL system is a lengthy process. The pros-cons should be considered carefully. NoSQL systems offer exciting new technologies to solve many business problems now and will eventually mature to support complex operations and applications.