In order to understand NoSQL database management systems, let us review relational database systems (rdbms). Relational databases were introduced in 1970s, are traditional databases that follow ACID nature and lets different applications to store data using standard data modelling and query language ( SQL). When these databases were developed the users on the web were so less that they are incomparable with today’s internet users. Since the web explosion, the amount of data stored about users, events etc. has also exploded. In order to store large amount of data NoSQL came into existence. NoSql is a non-relational database management system that was designed for distributed data stores where very large scale of data storing is needed. For example, Google and Facebook collect terabits of
data regularly for their users. These types of data storing may not require fixed schema, avoid join operations and typically scale horizontally.
NoSQL databases and data-processing frameworks are primarily utilized because of their speed, scalability and flexibility. It looks beyond the ACID to something called BASE, coined by Eric Brewer:
- Basic Availability: Each request is guaranteed a response – successful or failed execution.
- Soft State: The state of the system may change over time, at times without any input (for eventual consistency).
- Eventual Consistency: The database may be momentarily inconsistent but will be consistent eventually
NoSQL databases have emerged in response to cope with the challenges of scalability and agility of relational database system which were tried to overcome with manual sharing and distributed Cache otherwise.
- Schema-Less Data Representation: Almost all NoSQL implementations offer schema-less data representation. This means that you don’t have to think too far ahead to define a structure and you can continue to evolve over time- including adding new fields or even nesting the data, for example, in case of JSON representation.
- Development Time: Reduced development time because one doesn’t have to deal with complex SQL queries. Developers can concentrate on writing effective application codes without worrying about constructing complex and expensive applications in order to support their applications.
- Speed: Even with the small amount of data that you have, if you can deliver in milliseconds rather than hundreds of milliseconds – especially over mobile and other intermittently connected devices – you have much higher probability of winning users over.
- Plan Ahead for Scalability: The application can be quite elastic- it can handle sudden spikes of load.
- Automatic Replication: As NoSQL databases has support for automatic replication that means one receives high availability and disaster recovery and would not require separate applications to manage these tasks.
- Integrated Caching: Many NoSQL databases removes the need of a separate caching layer and uses integrated caching capabilities to keep as much frequently-used data in system memory as possible, removing the need for a separate caching layer.
NoSQL Storage Types
Different ways to implement NoSQL technology are:
- Key-value store, allows the storage of a value against a key. Every single item in the database is stored as an attribute name, or key, together with its value. Examples of key-value stores are Redis and Voldemort. Key-value stores are optimized for querying against keys. As such, they serve great in-memory caches.
- Document Store also referred to as document-oriented database, a document store allows the inserting, retrieving, and manipulating of semi-structured data. This is very useful in web-based applications where there is a need for storing different types of content that may evolve over time.
- Column oriented store databases store data as columns as opposed to rows that is prominent in RDBMS. For example: Cassandra and HBase are optimized for queries over large datasets, and store columns of data together, instead of rows. This gives flexibility in model and entity design allowing one to account for new columns in future for unforeseen scenarios and new requirements.
- Graph stores represent a special category of NoSQL databases where relationships are represented as graphs. There can be multiple links between two nodes in a graph – representing the multiple relationships that the two nodes share. These are used to store information about networks, such as social connections. Graph stores include Neo4J and HyperGraphDB.
Why Implementing NoSQL Database in Your Organization
The above mentioned differences clearly illustrates why NoSQL is fit for today’s data storage challenges, and is far more effective in terms of cost. Downloading, implementing and scaling of NoSQL databases can be done at little cost as they are open source database systems.
MongoDB is the Leading NoSQL Database
Among various NoSQL databases, MongoDB is widely recognized as the leading NoSQL database. For developers and database administrators, MongoDB provides agility, scalability, performance and high availability. MongoDB also provides immense business value: enabling new applications, as well as providing dramatically improved customer experience, time to market and total cost of ownership (TCO).