+1

NoSQL Database

NoSQL (Not Only SQL) database is a non-relational and largely distributed database management system that's useful for those enterprise which needs to access and analyze extremely high-volume of distributed unstructured data that may be stored remotely on multiple virtual servers in the cloud. NoSQL databases are increasingly used in big data and real-time web applications. This concept emerged as a result of the exponential growth of the Internet and the rise of web applications.

Contrary to the misconceptions caused by its name, NoSQL does not prohibit structured query language. Instead of using fixed schema structure, a NoSQL database might organize data into objects, key/value pairs or tuples.

NoSQL databases are sometimes referred to as cloud databases, non-relational databases, Big Data databases. A very flexible and schema-less data model, horizontal scalability, distributed architectures and the use of languages and interfaces that are not only SQL typically characterize this technology.

Why to choose NoSQL database

The Growth of Big Data: Big Data is one of the key forces driving the growth and popularity of NoSQL for business. Due to the Internet, social media, mobile devices and other technologies, massive volumes of varied and unstructured data in at unprecedented speeds are bombarding today’s businesses. This explosion of data is proving to be too large and too complex for relational databases (RDBMS) to handle on their own. NoSQL has risen for this big data challenge.

Easiest Data representation: SQL table structure maintains a strict data template whereas NoSQL is more flexible and forgiving, but being able to store any data anywhere can lead to consistency issues. Ideally, in case of NoSQL, a single document will be the sole source of all information about an object.

Screenshot from 2016-09-07 19:25:40.png

While designing with RDBMS, we need to create three tables, particularly for skills, experiences and users. These three tables are associated with each other using foreign key constraints.

Screenshot from 2016-09-07 19:26:13.png

With document based NoSQL database, we need only one table where all associated information regarding an object will be located.

Screenshot from 2016-09-07 19:26:39.png

Performance: NoSQL is generally faster than SQL. Due to NoSQL’s simpler denormalized store allows us to retrieve all information about a specific item in a single request. There’s no need for related JOINs or complex SQL queries.

Continuous Data Availability: NoSQL database environments are built with a distributed architecture so there are no single points of failure and there is built-in redundancy of both function and data. If one or more database servers or nodes go down, the other nodes in the system are able to continue with operations without data loss, thereby showing true fault tolerance. In this way, NoSQL database environments are able to provide continuous availability whether in single locations, across data centers and in the cloud. When deployed appropriately, NoSQL databases can supply high performance at massive scale, which never go down. This is immensely beneficial as any system upgradations or modifications can be made without having to take the database offline. Delivering 24x7 availability is a challenge for relational databases that are deployed in a single physical server or clustering with shared storage.

Flexible Data Models: A core principle of agile development is adapting to evolving application requirements: when the requirements change, the data model also changes. This is a problem for relational databases because the data model is fixed and defined by a static structure and relationship between tables. So in order to change the data model, developers have to modify the schema. This slows down or may stop development, not only because it is a manual, time-consuming process, but also it impacts other applications and services. By comparison, a NoSQL document database fully supports agile development, because it is schema-less and does not statically define how the data must be modeled.

Operate at Any Scale: Databases that support web, mobile applications must be able to operate at any scale. While it is possible to scale a relational database like, but doing so is typically complex, expensive and not fully reliable. With Oracle, for example, scaling out using RAC technology requires numerous components and creates a single point of failure that jeopardizes availability. By comparison, a NoSQL distributed database designed with a scale-out architecture and no single point of failure provides compelling operational advantages.

Simplicity for Easier Development: Relational databases model data as tables of rows and columns – related data as rows within different tables, multi-valued data as rows within the same table. The problem with relational databases is that data is read and written by disassembling and reassembling objects. This is the object-relational impedance mismatch. In contrast, a document-oriented NoSQL database reads and writes data formatted in JSON. It not only eliminates the object-relational impedance mismatch, but also eliminates the overhead of ORM frameworks and simplifies application development because objects are read and written without shredding them. For example: a single object can be read or written as a single document.

Elasticity for Performance at Scale: Applications and services have to support an ever increasing number of users and data – hundreds to millions of users, and gigabytes to terabytes of operational data. At the same time, they have to scale to maintain performance and they have to do it efficiently. The database has to be able to scale reads, writes and storage. This is a problem for relational databases that are limited to scaling up i.e., adding more processors, memory, and storage to a single physical server. As a result, the ability to scale efficiently is a challenge. It becomes increasingly expensive, because enterprises have to purchase bigger and bigger servers to accommodate more users and more data.

With NoSQL, enterprises are better able to develop with agility and operate at any scale and to deliver the performance and availability required to meet the demands of Digital Economy businesses. That’s why NoSQL is increasingly the preferred database technology to power today’s web and mobile applications.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí