Channels ▼

Ken North

Dr. Dobb's Bloggers

SQL, NoSQL or SomeSQL?

July 22, 2010

Big Data has become one of today's significant trends with developers looking for software technology that permits developing scalable applications for the cloud, web or enterprise environments. Pushing the envelope on data set size, elasticity and scalability has been the catalyst for a debate over the merits of SQL databases and those collectively known as NoSQL databases.Because the NoSQL approach is recent, some might assume it offers more features than older database software. But, in reality, NoSQL solutions were designed for scalability and performance and not to offer feature sets comparable to the SQL platforms. The NoSQL DBMS typically differs from an object-relational DBMS, for example, in several areas. The cost of licensing is a major difference but the focus here is capability, not cost.

One major difference between a NoSQL or SQL solution is data consistency. SQL technology has been used for transactions with ACID properties (Atomicity, Consistency, Isolation and Durability). For providing massively scalable, distributed applications built with horizontal partitions, an alternative is to support BASE properties: Basically Available, Soft state, Eventually consistent.

"Databases in the Cloud: Elysian Fields or Briar Patch?" and "The NoSQL Alternative" have more information about transactional and non-transactional database solutions.

A second important difference is whether a DBMS offers simply meat-and-potatoes CRUD capabilities (Create, Retrieve, Update, Delete operations) or also has sophisticated query capabilities, such as aggregation, text searches and complex analytics. Related to this is whether the query capabilities are procedural or declarative (e.g. SQL). For those organizations adopting NoSQL databases, there are roll-your-own alternatives to capabilities built into SQL, such as scalar and table functions.

One might expect that using a NoSQL database means having no SQL capabilities, but a NoSQL database can be part of a SomeSQL application or service architecture.

APIs Re-hosting a database application in a private or public cloud can be a daunting proposition if the port also involves a NoSQL database. There is no industry standard for a NoSQL application programming interface (API), or for a cloud computing API. Eucalyptus and Amazon Web Services (AWS EC2) are the closest thing we have to a standard API for the cloud.

Instead of having to write all-new code for each platform, some organizations prefer a vendor-neutral API for cloud or database processing. It enables them to leverage existing code libraries, and even existing applications. There's been a pushback on the NoSQL phenomenon for those reasons, but there's more to the story.

The desire today for standard APIs is a reminder of what happened in the past when SQL became an important requirement for a variety of key-value and ISAM databases that had no SQL engine. Organizations had invested in client software that they wanted to be able to operate with data from a heterogeneous mix of desktop and server databases. The database driver emerged as the solution.

At Progress Software, John Goodson has been involved in developing data access specifications such as JDBC. As Senior Vice President of Enterprise Data and Business Solutions, John's customer base includes many organizations with databases for enterprise and web applications. He reports that Progress has customers seeking drivers for NoSQL databases because they need SQL and connectivity for ODBC- and JDBC-enabled applications.

Plus Ça change, plus c'est la même chose

Stay tuned for more about providing rich query capabilities with SQL and roll-your-own aggregation.One might expect that using a NoSQL database means having no SQL capabilities, but a NoSQL database can be part of a SomeSQL application or service architecture.

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 


Video