NoSQL At A Glance And Poll Results

DZone 's Guide to

NoSQL At A Glance And Poll Results

· Database Zone ·
Free Resource
About a week and a half ago I did a poll on "What are your thoughts on NoSQL?".  When I closed the poll, there were 178 results and it was about what I had expected.  The total results were:

What's NoSQL?
20% (35 votes)

It's interesting but I haven't really looked at it yet
31% (55 votes)

I've tried a few options and I'm not really impressed
3% (5 votes)

I've tried a few options and It definately has promise
24% (42 votes)

I'm using NoSQL in projects right now
10% (18 votes)

NoSQL will replace relational databases. NoSQL is the future!
7% (13 votes)

NoSQL is a useless fad and will fade away into oblivion

6% (10 votes)

Notice that the 2 highest are people who are interested and those that have tried and like what they see.  A fifth don't know what NoSQL is less than 10% had negative thoughts.  So what does that really say about the technology?  

I think it shows that developers as a whole are at least interested in what NoSQL is, if they aren't already using it.  I personally don't think that it will replace relational databases, but it definitely has some promise.  I have worked with a couple of them myself and I have been very impressed  at what I have seen.  The two I have worked the most with are db4o and RavenDB.  Both are object databases which means I don't have to write SQL code to access them.  I would use db4o when I needed a small embedded database for a client application and would look to something like RavenDB when I need something that scales for a server based application.

There are of course many options on the market and many are open source or at least have open source versions.  Both db4o and RavenDB fall into that category.  Other ones I have looked at are HBase through Hadoop, Cassandra and MongoDB.  Among the .NET community, it seems that Cassandra and MongoDB are getting the most traction or at least the most buzz, with it leaning towards MongoDB.  Both I believe are viable options for building applications backed with a NoSQL solution.  

So what is NoSQL really?  Well, in short, it's a database that doesn't use SQL for queries.  With db4o and RavenDB, queries are done with LINQ and work very well.  They are also what is known as a document database where objects are stored.  The schemas for these databases are generally just object structures and are portable enough to manage change easily.  Some are giant key-value pair stores where you have to work with hashes to interact with data.  The real core difference is that there is no SQL involved, hence the NoSQL term.

There are also cloud based solutions like Amazon SimpleDB and Microsoft Azure table storage.  I find these solutions very nice since they are cloud based and easy to work with.  It does require that your application is internet connected, but these days that isn't as big of a deal as it once was.  

The real advantage I see to NoSQL solutions is the ability to handle massive datasets and easy scale and be distributed across multiple machines.  While relational solutions also offer this through replication services, I can see where some NoSQL solutions would be more popular.  Something like HBase is a database that sits on top of Hadoop's distributed file system and has guaranteed redundancy.  When you have data like that of a search engine, a relational database probably isn't going to work too well for you.

In conclusion, NoSQL solutions are here, they are being used by huge companies like Google, Microsoft and Yahoo and you can use them too. There will be cases where classic relational databases are the way to go and others where a NoSQL solution will be best.  I would wager that a great deal of apps could get benefits from either solution and as with any technology, you would be wise to take the time to evaluate which solution is right for your applications needs.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}