At this point it is strange encounter with someone who has not heard of nosql
, or that it is passing(right now :) ). However , not all developers usually have clear why their popularity, possibly because they have not yet had the opportunity to work with some of the systems based on this concept, like our CMS NoSql.
In the programmers's world, many have learned that database systems are classified mainly into three types: The relational databases , object-oriented , relational and object-oriented . However , we soon realized that , in practice, most database engines most popular data are based on relational architecture
, and its all use the SQL query language (with variations ) to operate with the data. So much so , that SQL became over the years a standard "de facto " because of its use.
The relational databases have nothing wrong: Precisely thanks to over the years, we have managed to learn quite common techniques to normalize as far as possible, scale them as demand grows, and use them as persistence system to store information from our procedural language or oriented favorite objects (among others). The software currently works with SQLite, MySQL, PostgreSQL or Oracle, to name four known examples, being in the most modern developments.
But then... came the web
!, software as a service, cloud services and successful startups with millions of users. And all this came high scalability problems
. While relational models can be adapted to make them climb even in the toughest environments, it is true that often become increasingly less intuitive as complexity increases. Triple and quadruple JOINs in SQL queries that scare the most brave developer, sometimes inefficient, and storage systems results in caches to accelerate the resolution of petitions and avoid running each time these heavy operations are the bread and butter day in many of these software projects.
systems attempt to address this problem by proposing a structure more versatile storage, even at the cost of losing certain functionality such as transactions that include operations in more than a collection of data or the inability to run the Cartesian product of two tables (also called JOIN) having to resort to data denormalization.
Some well-known implementations we might as nosql are: CouchDB, MongoDB, RavenDB, Neo4j, Cassandra, Bigtable, Dynamo, Riak, Hadoop, and many others.