What is NoSQL?
A NoSQL database
environment is, simply put, a non-relational and largely
distributed database system that enables rapid, ad-hoc organization
and analysis of extremely high-volume, disparate data types.
NoSQL databases are sometimes referred to as cloud databases,
non-relational databases, Big Data databases and a myriad of other
terms and were developed in response to the sheer volume of data
being generated, stored and analyzed by modern users (user-generated
data) and their applications (machine-generated data).
In general, NoSQL
databases have become the first alternative to relational
databases, with scalability, availability, and fault tolerance
being key deciding factors. They go well beyond the more widely
understood legacy, relational databases (such as Oracle, SQL Server
and DB2 databases) in satisfying the needs of today’s modern
business applications. 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.
From a business
standpoint, considering a NoSQL or ‘Big Data’ environment has
been shown to provide a clear competitive advantage in numerous
industries. In the ‘age of data’, this is compelling information
as a great saying about the importance of data is summed up with the
following “if your data isn’t growing then neither is your
business”.
Types of NoSQL
Databases
There are four
general types of NoSQL databases, each with their own specific
attributes:
-
Graph database – Based on graph theory, these databases are designed for data whose relations are well represented as a graph and has elements which are interconnected, with an undetermined number of relations between them. Examples include: Neo4j and Titan.
-
Key-Value store – we start with this type of database because these are some of the least complex NoSQL options. These databases are designed for storing data in a schema-less way. In a key-value store, all of the data within consists of an indexed key and a value, hence the name. Examples of this type of database include: Cassandra, DyanmoDB, Azure Table Storage (ATS), Riak, BerkeleyDB.
-
Column store – (also known as wide-column stores) instead of storing data in rows, these databases are designed for storing data tables as sections of columns of data, rather than as rows of data. While this simple description sounds like the inverse of a standard database, wide-column stores offer very high performance and a highly scalable architecture. Examples include: HBase, BigTable and HyperTable.
-
Document database – expands on the basic idea of key-value stores where “documents” contain more complex in that they contain data and each document is assigned a unique key, which is used to retrieve the document. These are designed for storing, retrieving, and managing document-oriented information, also known as semi-structured data. Examples include: MongoDB and CouchDB.
What is MongoDb?
MongoDb is a Open
Source database written in C++.
Drivers and client
libraries are typically written in their respective languages,
although some drivers use C extensions for better performance.
If the load
increases, by adding more nodes (such as a computer), the performance
can be retained.
It can be used to
store data for very high performance applications (for example
Foursquare is using it in production).
MongoDB does not
support SQL It supports a rich, ad-hoc query language of its own.
MongoDb stores data
as documents. So it is a document oriented database.
FirstName="Arun",
Address="St. Xavier's Road", Spouse=[{Name:"Kiran"}],
Children=[{Name:"Rihit", Age:8}].
FirstName="Sameer",Address="8
Gandhi Road".
Notice there are two different documents (separated by ".").
Storing data in this fashion is called as document oriented database.
MongoDb is a document oriented database.
MongoDB : Databases,
Schemas and Tables
Databases :
MongoDB is a document-oriented DBMS, with JSON-like objects
comprising the data model, rather than RDBMS tables. MongoDB does not
support joins nor transactions. However, it features secondary
indexes, an expressive query language, atomic writes on a
per-document level, and fully-consistent reads. MongoDB uses BSON, a
binary object format similar to, but more expressive than JSON.
Schemas :
MongoDB uses dynamic schemas. We can create collections without
defining the structure, i.e. the fields or the types of their values,
of the documents. You can change the structure of documents simply by
adding new fields or deleting existing ones. Documents in a
collection need unique set of fields.
Tables :
MongoDB database stores its data in collections not in tables The
collections are the rough equivalent of RDBMS tables. A collection
holds one or more documents, which corresponds to a record or a row
in a relational database table, and each document has one or more
fields, which corresponds to a column in a relational database table.
MongoDB and ACID
transactions
MongoDB does not
support multi-document transactions, but provides atomic operations
on a single document. Often these document-level atomic operations
are sufficient to solve problems that would require ACID transactions
in a relational database.
In MongoDB, you can
embed related data in nested arrays or nested documents within a
single document and update the entire document in a single atomic
operation. Relational databases might represent the same kind of data
with multiple tables and rows, which would require transaction
support to update the data atomically.
CRUD operations
create, read, update, and delete documents.
Create Operations
Create or insert
operations add new documents to a collection. If the collection does
not currently exist, insert operations will create the collection.
MongoDB provides the
following methods to insert documents into a collection:
-
db.collection.insert()
-
db.collection.insertOne() New in version 3.2
-
db.collection.insertMany() New in version 3.2
Ex:
db.users.insert({name:”sue”, age:26, status: “A”})
Read Operations
Read operations
retrieves documents from a collection; i.e. queries a collection for
documents. MongoDB provides the following methods to read documents
from a collection:
-
db.collection.find()
Ex:
db.users.find({age: {$gt:18}}, {name:1, addess:1}).limit(5)
Update Operations
Update operations
modify existing documents in a collection. MongoDB provides the
following methods to update documents of a collection:
-
db.collection.update()
-
db.collection.updateOne() New in version 3.2
-
db.collection.updateMany() New in version 3.2
-
db.collection.replaceOne() New in version 3.2
In MongoDB, update
operations target a single collection. All write operations in
MongoDB are atomic on the level of a single document.
You can specify
criteria, or filters, that identify the documents to update. These
filters use the same syntax as read operations.
Ex:
db.users.update({age: {$gt:18 }}, {$set: {status: “D”}},
{multi:true})
Delete Operations
Delete operations
remove documents from a collection. MongoDB provides the following
methods to delete documents of a collection:
-
db.collection.remove()
-
db.collection.deleteOne() New in version 3.2
-
db.collection.deleteMany() New in version 3.2
In MongoDB, delete
operations target a single collection. All write operations in
MongoDB are atomic on the level of a single document.
You can specify
criteria, or filters, that identify the documents to remove. These
filters use the same syntax as read operations.
Ex:
db.users.delete({status: “D”})
No comments:
Post a Comment