NoSQL database stands for “Not Only SQL” or “Not SQL.
” Though a
better term would be “NoREL”, NoSQL caught on. Carl Strozz
introduced the NoSQL concept in 1998.
Traditional RDBMS uses SQL syntax to store and retrieve data for
further insights. Instead, a NoSQL database system encompasses a
wide range of database technologies that can store structured, semi-
structured, unstructured and polymorphic data.
Features of NoSQL
Non-relational
NoSQL databases never follow the relational model
Never provide tables with flat fixed-column records
Work with self-contained aggregates or BLOBs
Doesn’t require object-relational mapping and data normalization
No complex features like query languages, query
planners,referential integrity joins, ACID
Schema-free
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
Types of NoSQL Databases:
Key-value Pair Based
Column-oriented Graph
Graphs based
Document-oriented
Key Value Pair Based
Data is stored in key/value pairs. It is designed in such a way to
handle lots of data and heavy load.
Key-value pair storage databases store data as a hash table where
each key is unique, and the value can be a JSON, BLOB(Binary Large
Objects), string, etc.
For example, a key-value pair may contain a key like “Website”
associated with a value like “Guru99”.
Column-based
Column-oriented databases work on columns and are based on
BigTable paper by Google. Every column is treated separately. Values
of single column databases are stored contiguously.
Document-Oriented
Document-Oriented NoSQL DB stores and retrieves data as a key
value pair but the value part is stored as a document. The document is
stored in JSON or XML formats. The value is understood by the DB
and can be queried.
Graph-Based
A graph type database stores entities as well the relations amongst
those entities. The entity is stored as a node with the relationship as
edges. An edge gives a relationship between nodes. Every node and
edge has a unique identifier.
What is the CAP Theorem?
CAP theorem is also called brewer’s theorem. It states that is
impossible for a distributed data store to offer more than two out of
three guarantees
1. Consistency
2. Availability
3. Partition Tolerance
Consistency:
The data should remain consistent even after the execution of an
operation. This means once data is written, any future read request
should contain that data. For example, after updating the order status,
all the clients should be able to see the same data.
Availability:
The database should always be available and responsive. It should
not have any downtime.
Partition Tolerance:
Partition Tolerance means that the system should continue to function
even if the communication among the servers is not stable. For
example, the servers can be partitioned into multiple groups which
may not communicate with each other. Here, if part of the database is
unavailable, other parts are always unaffected.
Eventual Consistency
The term “eventual consistency” means to have copies of data on
multiple machines to get high availability and scalability. Thus,
changes made to any data item on one machine has to be propagated
to other replicas.
Data replication may not be instantaneous as some copies will be
updated immediately while others in due course of time. These copies
may be mutually, but in due course of time, they become consistent.
Hence, the name eventual consistency.
BASE: Basically Available, Soft state, Eventual consistency
Basically, available means DB is available all the time as per
CAP theorem
Soft state means even without an input; the system state may
change
Eventual consistency means that the system will become
consistent over time
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 don’t 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
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
Doesn’t work as well with relational data