Most .NET developers, whether we work on the Web with ASP.NET Web-Forms or MVC, on Windows Phone or in the browser with Silverlight, or on the desktop with WPF have worked with some form of Database.
We are for the most part familiar with SQL Server, MySQL or Oracle Relational Database Management Systems (RDBMSs) – and we are used to writing database schemas and database code using some variety of SQL.
We have come to terms with the idea of the “Object-Relational Impedance Mismatch” – the fact that objects don’t always map well to database entities, and the rise in popularity of ORM (Object Relational Mapping) Frameworks like NHibernate and Entity Framework to address this mismatch.
We also know that Relational Databases are often inefficient due to the complex “relationships” (joins) between tables. Relational Databases excel at eliminating redundancy, thus reducing the amount of data stored through Database Normalization. But normalization impacts performance, so if performance is critical we know we have to selectively de-normalize the database.
Recently, there has been more and more “noise” around the term NoSQL and NoSQL databases. But what are NoSQL databases and why are they becoming more popular.
As the topic came up at work I decided it was time that I dived into this technology to try and understand the strengths and weaknesses of these databases, and so I propose to share what I have learned in this series of Blog posts.
To get things started then.
The term NoSQL basically means what it says – NoSQL databases do not use SQL because the data is not stored in relational tables, although some people have redefined the term as an acronym NoSQL = “Not Only SQL”. Whatever the term means, NoSQL is used to describe databases that do not use a relational model and typically can store huge amounts of data – think Google, Facebook or Linked-In scale.
All NoSQL databases share common goals of speed and scalability. But the many different NoSQL databases approach these goals in different ways. In the next post I will discus two of the major categories of NoSQL Databases and some of the common implementations.