What is NoSQL?
When people use the term “NoSQL database”, they typically use it to refer to any non-relational database. Some say the term “NoSQL” stands for “non-SQL” while others say it stands for “not only SQL.” Either way, most agree that NoSQL databases are databases that store data in a format other than relational tables.
A common misconception is that NoSQL databases or non-relational databases do not store relationship data well. NoSQL databases can store relationship data—they just store it differently than relational databases do. In fact, when compared with SQL databases, many find modelling relationship data in NoSQL databases to be easier than in SQL databases, because related data does not have to be split between tables.
NoSQL data models allow related data to be nested within a single data structure.
NoSQL databases emerged in the late 2000s as the cost of storage dramatically decreased. Gone were the days of needing to create a complex, difficult-to-manage data model simply for the purposes of reducing data duplication. Developers (rather than storage) were becoming the primary cost of software development, so NoSQL databases optimized for developer productivity.
The concept of NoSQL databases became popular with Internet giants like Google, Facebook, Amazon, etc. who deal with huge volumes of data. The system response time becomes slow when you use RDBMS for massive volumes of data.
To resolve this problem, we could "scale up" our systems by upgrading our existing hardware. This process is expensive.
The alternative for this issue is to distribute database load on multiple hosts whenever the load increases. This method is known as "scaling out."
NoSQL database is non-relational, so it scales out better than relational databases as they are designed with web applications in mind.
Features of NoSQL
⦁ NoSQL databases never follow the relational model.
⦁ Never provide tables with flat fixed-column records
⦁ Work with self-contained aggregates or BLOBs
⦁ Does not require object-relational mapping and data normalization.
⦁ No complex features like query languages, query planners, referential integrity joins, ACID.
⦁ NoSQL databases are either schema-free or have relaxed schemas.
⦁ Do not require any sort of definition of the schema of the data.
⦁ Offers heterogeneous structures of data in the same domain.
⦁ Offers easy to use interfaces for storage and querying data provided.
⦁ APIs allow low-level data manipulation & selection methods.
⦁ Text-based protocols mostly used with HTTP REST with JSON
⦁ Mostly used no standard based NoSQL query language.
⦁ Web-enabled databases running as internet-facing services.
⦁ Multiple NoSQL databases can be executed in a distributed fashion.
⦁ Offers auto-scaling and fail-over capabilities.
⦁ Often ACID concept can be sacrificed for scalability and throughput.
⦁ Mostly no synchronous replication between distributed nodes Asynchronous Multi-Master Replication, peer-to-peer, HDFS Replication
⦁ Only providing eventual consistency
⦁ Shared Nothing Architecture. This enables less coordination and higher distribution.
NoSQL Databases are mainly categorized into four types: Key-value pair, Column-oriented, Graph-based and Document-oriented. Every category has its unique attributes and limitations. None of the above-specified database is better to solve all the problems. Users should select the database based on their product needs.
Types of NoSQL Databases:
⦁ Key-value Pair Based.
⦁ Column-oriented Graph
⦁ Graphs based.
Advantages of NoSQL
⦁ Can be used as Primary or Analytic Data Source
⦁ Big Data Capability
⦁ No Single Point of Failure
⦁ Easy Replication
⦁ No Need for Separate Caching Layer
⦁ It provides fast performance and horizontal scalability.
⦁ Can handle structured, semi-structured, and unstructured data with equal effect.
⦁ Object-oriented programming which is easy to use and flexible.
⦁ NoSQL databases do not need a dedicated high-performance server.
⦁ Support Key Developer Languages and Platforms
⦁ Simple to implement than using RDBMS.
⦁ It can serve as the primary data source for online applications.
⦁ Handles big data which manages data velocity, variety, volume, and complexity.
⦁ Excels at distributed database and multi-data center operations.
⦁ Eliminates the need for a specific caching layer to store data.
⦁ Offers a flexible schema design which can easily be altered without downtime or service disruption.
Disadvantages of NoSQL
⦁ No standardization rules.
⦁ Limited query capabilities
⦁ RDBMS databases and tools are comparatively mature.
⦁ It does not offer any traditional database capabilities, like consistency when multiple transactions are performed simultaneously.
⦁ When the volume of data increases it is difficult to maintain unique values as keys become difficult
⦁ Does not work as well with relational data.
⦁ The learning curve is stiff for new developers.
⦁ Open-source options so not so popular for enterprises.
⦁ NoSQL is a non-relational DMS, that does not require a fixed schema, avoids joins, and is easy to scale.
⦁ The concept of NoSQL databases became popular with Internet giants like Google, Facebook, Amazon, etc. who deal with huge volumes of data.
⦁ In the year 1998- Carlo Strozzi use the term NoSQL for his lightweight, open-source relational database.
⦁ NoSQL databases never follow the relational model it is either schema-free or has relaxed schemas.
⦁ Four types of NoSQL Database are 1). Key-value Pair Based 2). Column-oriented Graph 3). Graphs based 4). Document-oriented
⦁ NOSQL can handle structured, semi-structured, and unstructured data with equal effect.
⦁ CAP theorem consists of three words Consistency, Availability, and Partition Tolerance
⦁ BASE stands for Basically Available, Soft state, Eventual consistency
⦁ The term "eventual consistency" means to have copies of data on multiple machines to get high availability and scalability.
⦁ NOSQL offer limited query capabilities.