For a quarter of a century, the relational database (RDBMS) has been the dominant model for database management. But since interactive applications have changed dramatically over the last years, and so have the data management needs of those apps. Today, 3 interrelated megatrends are driving the adoption of NoSQL technology [Big Data, Big Users, and Cloud Computing].
NoSQL is a whole new way of thinking about a database. It is an approach to data management and database design that’s useful for very large sets of distributed data and it encompasses a wide range of technologies and architectures.
It is not built on tables and does not employ SQL to manipulate data. It also may not provide full ACID (atomicity, consistency, isolation, durability) guarantees, but still has a distributed and fault tolerant architecture.
It is especially useful when an enterprise needs to access and analyze massive amounts of unstructured data or data that’s stored remotely on multiple virtual servers in the cloud.
Some characteristics of NoSQL are: schema-free, non-relational, distributed, horizontally scalable, easy replication support, simple API, eventually consistent / BASE (not ACID), a huge data. NoSQL means “Not only SQL” and that to emphasize that they may also support SQL-like query languages.
Compared to relational databases (RDBMS), NoSQL databases are more scalable and provide superior performance. Anyhow NoSQL, seeks to solve the scalability and big data performance issues that relational databases weren’t designed to address.
So NoSQL databases address the opportunities that the relational model does not, including:
- Large volumes of structured, semi-structured and unstructured data.
- Agile sprints, quick iteration, and frequent code pushes.
- Flexible, easy to use object-oriented programming.
- Efficient, scale-out architecture instead of expensive, monolithic architecture.
NoSQL is increasingly considered a viable alternative to relational databases for many types of applications. However some operations are faster in NoSQL and some are in RDBMS.
Document-oriented database is designed for storing, retrieving, and managing document-oriented information, also known as semi-structured data. The central concept of a document-oriented database is that Documents that contains a vast amounts of data which can usefully be made available.
Key-value (KV) stores use the associative array (also known as a map or dictionary) as their fundamental data model. In this model, data is represented as a collection of key-value pairs, such that each possible key appears at most once in the collection.
Graph database is a database that uses graph structures with nodes, edges, and properties to represent and store data. A graph database is any storage system that provides index-free adjacency. This means that every element contains a direct pointer to its adjacent elements and no index lookups are necessary.
Column is used as a store for the value and has a timestamp that is used to differentiate the valid content from stale ones. It is a tuple (a key-value pair) consisting of three elements:
- Unique name: Used to reference the column.
- Value: The content of the column. It can have different types.
- Timestamp: The system timestamp used to determine the valid content.
Feel free to follow me on Twitter @Mahmoud_Zalt