Historically, at the beginning in Databases We got a lot of cool things, like SQL, persistence, concurrence between transactions and all. But, for example in SQL we got some problems.
Object database could be cool. Save in the memory.
We were wrong.
What object database are so good ? They have some answers to it, but it has passed.
And the relational database continue dominates after 2000 years. It was hard to find a new way to get all informations and store them, using something better than RDMS.
Particularly with the use of internet, we got a lot of traffic. Companies like Google or Amazon, for example, worry about those things. Computer costs a lot. Lots a lots of CPUs it might be a good answer. Clusters?
Relational database are good to work in a single node. Companies like Google and Amazon created Bigtable and Dynamo, respectively. And then….NoSQL!
Basically, we cannot define NOSQL, but we can take a look in some characteristics, for example:
- Open Source
- Cluster friendly
Regarding to data models,web can find on the theory basically two data models: Key Value and Documents. Both are Aggregated. There are a fuzzy line between a document model and a key value model.
There are the Graph Model which is ACID and it’s not aggregated.
Discussing about Database, we should think about some inherent properties for a a relational database and so important in software development: Consistency.
Typically, We see RDBMS as ACID properties, We might to say noSQL are BASE! We should take care about consistency when We use a NoSQL database, and take a look for our system requirements. Normally, We use NoSQL when We need to get easier development and/or large scala data.
Nowadays, noSQL is an overrated theme, maybe we should talk about Polyglot Persistence.