An introduction to NoSQL
In my working career I had to deal with databases since my first day at work and it is a bit a hate-and-love relationship. Usually well working application is always backed up by a good designed database schema and good accessing mechanism. So far I always used RDBMS – Relationship databases such as Microsoft SQL Server, Oracle, MySql, Sybase.
Right now there is a big hype about NoSQL movement, which is growing and in my opinion it is going to be a major player in the next years, and it would be good to familiarize with the technology as soon as possible.
To note is the fact that some big companies are already investing into or using NoSQL solution. Just to name few:
- Microsoft is integrating MongoDB into the Windows Azure platform
- Oracle actually built its own Coherence database.
- Facebook initially developed Cassandra
- Google is working on a project called leveldb
- Amazon works on the DynamoDB and SimpleDB
- Twitter uses/d FlockDB, Hadoop
- Put the name of your company <here>.
and this is naturally just a short list.
What is NoSQL
As mentioned, I am currently just starting my journey, and not being an expert I will try to share with you my findings, and start with some definitions.
- Introduction by Martin Fawler: NoSqlDefinition
- This is what Wikipedia has to say
- from the experts in the field http://nosql-database.org/
Apparently is not that easy to have a full definition. It is not even clear if this should be read as “NO-SQL” or “NOT-ONLY SQL”, we will see in the future, but there are some common characteristics:
- Not using the relational model (nor the SQL language)
- Open source
- Designed to run on large clusters, It has a distributed, fault-tolerant architecture
- Based on the needs of 21st century web properties
- No schema, allowing fields to be added to any record without controls
- It may not give full ACID guarantees
this is another fantastic introductory article to the topic: http://www.techrepublic.com/blog/10things/10-things-you-should-know-about-nosql-databases/1772
and another one, written by the guys at thoughworks: nosql-comparison
There are few types of NoSQL datastores:
- Document Databases
- Object Stores
- KeyValue stores
- Graph databases
- XML databases
- Distributed Peer Stores
- Object stores
obviously, every type has its own strengths and weaknesses.
As you have seen, major companies are already getting ready to it so this definitely looks like a new topic in our programming/IT journey to look into and try to learn as much as possible from it (by michelle at dh).
I’m sure about one thing, even with the event of NoSQL databases, the “good old one” Relationship database is going to stay there for a while.