I’ve started doing some volunteer work for Sparkrelief.  Sparkrelief is a non-profit organization that makes software to help streamline processes of helping people in need (especially during disasters).  Currently, non-profit companies are super inefficient at disaster relief.  Process savings through Sparkrelief software can be measured in the millions of dollars over a 5 year timeframe.

What does that have to do with NoSQL?  Well, they use CouchDB.  As I dig into NoSQL I’m understanding why it was created.  The main advantages are scale and unstructured data storage.

  • Scale: To add capacity, a database administrator can simply add more commodity servers or cloud instances. The database automatically spreads data across servers as necessary.  Relational databases normally scale by making a single server increasingly more powerful in order to deal with increased demand. It is possible to spread SQL databases over many servers, but significant additional engineering is generally required.
  • Dynamic Schemas: Relational databases require that schemas be defined before you can add data.  If the database is large any changes to the schema involves significant downtime.  NoSQL databases are built to allow the insertion of data without a predefined schema. That makes it easy to make significant application changes in real-time, without worrying about service interruptions – which means development is faster, code integration is more reliable, and less database administrator time is needed.