Recently I have been reading a lot more about NoSQL databases, specifically MongoDB and CouchDB, ad how 2010 will be the year of NoSql. NoSql databases themselves move away from the structure of a relational database, mssql/mysql, and move more toward storing all of their data in views, which can contain a range of information.

Why NoSql?

Well NoSql’s inherant lack of rigid structure enables it to be far more flexible with regards to the data that you can insert. In terms of visualising relational database, they regularly can be seen as a set of tables, which are linked together, but with a set amount of columns. NoSql database on the other hand award for more flexibility almost handling each data set as an array. Therefore each item in the database can, if required, have different data sets assigned to it.

Document Orientated Databases

I am not suggesting that relational databases are going out of fashion, far from it, in fact if it weren’t for databases I would struggle to manage day to day tasks, and I really enjoy the organisation of them. However, the data in a relational database is very constrained, especially if you have it in 2nd or 3rd normal form.

MongoDB and CouchDB enable far greater flexibility to add exactly what you want, not what your database has constrained. I find it easiest to think of them as array. This can hold great advantages especially when storing documents/data that varies. Think about not having to create seperate linking tables, or having a database that can react to how you want to use it easily and simply, without the necessity to keep redesigning.

Future Proofing

From my experience of IT, and probably life in general, it seems evident that there is little you can do to future proof entirely, as as soon as you believe you have thought of everything, something else will occur to change that preconception.

Good database design would suggest that all possible occurances are though of and incorporated into the database structure. This may be true of a proportion of database, however, how can we really tell whether or not our website will be languising at 50 pageview a day or 500,000 per day in 5 years time?