When I started to develop Web applications in the mid- 1990s, I naïvely thought that if I needed to persist data across sessions, I could and should use a file. It quickly was explained to me that using the filesystem for such purposes was not a good idea, and that instead I should be using my server’s relational database. Using a database made it possible for me to access the same data from a number of different servers. Moreover, using a relational database meant that I could store my data in an appropriate format, using a data type (for example, a number or a text string) that would express my intent more clearly.
Fast-forward 20 years, and you no longer have to convince developers that they should use a database. However, now the question isn’t whether you should use a database, but rather what database technology you should use. The debate between SQL and what has become known as NoSQL continues to go on, with the SQL people pointing to established normals for ACID compliance, normalization and the many years of effort and knowledge that have gone into relational databases. NoSQL adherents claim that in the modern era of Web-scale applications, relational databases are passé, and that you should be using one of the flexible, schemaless, replicating databases.