I have been spending a lot of time recently pondering NoSQL databases and why and how I would use them.

It took me a while to get my head round them, but I am now starting to see the benefits of them, especially when using following the Rapid Application Development (RAD) methodology. The advantage is that very little time needs to be spent on designing the database structure, but there are certain considerations when working with your classes and objects in your code.

For example with MongoDB child objects are stored as part of the parent in the DB, which is fine if that relationship is exclusive, but if the child was available to several parents then you need use the MongoDBRef class.

Once I started to understand the intricacies of my chosen flavour of NoSQL, which is generally MongoDB using MongoLab, which is a free hosted MongoDB platform for up to 500Mb, actually making this chose took quite some time and research as there are several flavours of NoSQL. Which is right for you will depend entirely on what you are comfortable with and the project.

db4o provides an excellent option for very quick apps, as it can be embedded, and is very fast to work with. The other NoSQL DB I looked at was RavenDB which again is excellent, but not free for commercial applications.

This is a very fast changing area of the industry and there always seems to be the next best alternative to SQL Server. This considered I will be watching eagerly on the 15th January 2013 to see what NuoDB are unveiling, part of the new generation of NewSQL Databases.