Over the last few years we have seen the rise of a new type of databases, known as NoSQL databases that are challenging the dominance of relational databases. Relational databases have dominated the software industry for a long time providing mechanisms to store data persistently, concurrency control, transactions, mostly standard interfaces and mechanisms to integrate application data, reporting. The dominance of relational databases, however, is cracking.
NoSQL what does it mean
What does NoSQL mean and how do you categorize these databases? NoSQL means Not Only SQL, implying that when designing a software solution or product, there are more than one storage mechanism that could be used based on the needs. NoSQL was a hashtag (#nosql) choosen for a meetup to discuss these new databases. The most important result of the rise of NoSQL is Polyglot Persistence. NoSQL does not have a prescriptive definition but we can make a set of common observations, such as:
- Not using the relational model
- Running well on clusters
- Mostly open-source
- Built for the 21st century web estates
Why NoSQL Databases
It’s well-known that the time required to develop a new application has been steadily falling. All thanks to new technologies, the cloud, and the growth of open source.
NoSQL databases accelerate this trend even further. With NoSQL:
- Developers can stuff any kind of data into their database, not just flat, uniform, tabular data. When building apps, most developers actually use objects, which have nesting and allow non-uniform structure, and which can be stored natively in NoSQL databases. NoSQL databases fit the data model that developers already use to build applications.
- Developers don’t have to spend months building a rigid data model that has to be carefully thought through, revised at massive cost, and deployed and maintained by a separate database team within ops.
- There is also movement away from using databases as integration points in favor of encapsulating databases with applications and integrating using services.
The rise of the web as a platform also created a vital factor change in data storage as the need to support large volumes of data by running on clusters. Relational databases were not designed to run efficiently on clusters.
Types of NoSQL Databases:
- Key-value storesare the simplest. Every item in the database is stored as an attribute name (or “key”) together with its value. Riak, Voldemort, and Redis are the most well-known in this category.
- Wide-column storesstore data together as columns instead of rows and are optimized for queries over large datasets. The most popular are Cassandra and HBase.
- Document databasespair each key with a complex data structure known as a document. Documents can contain many different key-value pairs, or key-array pairs, or even nested documents. MongoDB is the most popular of these databases.
- Graph databasesare used to store information about networks, such as social connections. Examples are Neo4J and HyperGraphDB.
Companies are finding that they can apply NoSQL technology to a growing list of use cases while saving money in comparison to operating a relational database.
NoSQL databases are designed to scale horizontally across many servers, which makes them appealing for large data volumes or application loads that exceed the capacity of a single server.