Introduction to NoSQL and MongoDB

Topics

  • What Is NoSQL?
  • NoSQL vs SQL
  • Why NoSQL?
  • TYPES of NO SQL
  • CAP THEOREM
  • Usage of NoSQL Databases at scale
  • MongoDB

NoSQL stands for “Not Only SQL”.

 

NoSQL database environment is, simply put, a non
relational, schema-less and largely distributed database.

 

Developed in late 2000s to deal with limitations of SQL databases.

What is NoSQL

NoSQL vs SQL

  • free from joins and relationships
  •  lower maintenance cost compared to RDBMS
  • NoSQL increases the need for developers and database designers 
  • Structure and data types are fixed in advance in RDBMS

Why NoSQL

Agility

  • SQL databases do not support agile development very well due to their fixed data model.
  • A core principle of agile development is adapting to evolving application requirements.

Handling Unstructured Data

  • overhead of joins and maintaining relationships amongst various data. Also joins are expensive.

Why NoSQL

Scaling

  • Scaling vertically vs horizontally.
  • Scaling vertically meaning a single server must be made increasingly powerful in order to deal with increased demand.
  • Vertically scaling SQL databases requires significant additional engineering, and core relational features such as JOINs, referential integrity and transactions are typically lost.
  • Horizontal scaling means to addmore commodity servers or cloud instances.

Why NoSQL

Auto-sharding

 

  • The solution to support rapidly growing applications is to scale horizontally, by adding servers instead of concentrating more capacity in a single server.
  • NoSQL databases, on the other hand, usually support auto-sharding, meaning that they natively and automatically spread data across an arbitrary number of servers

PolyGlot Persistence

  • Polyglot Persistence means that when storing data, it is best to use multiple data storage technologies, chosen based upon the way data is being used
  • It’s the same idea behind Polyglot Programming

Data Storage Needs

  • The rise of the web as a platform
  • Relational databases were not designed to run efficiently on clusters.
  •  Ensuring global availability is difficult for relational databases where separate add-ons are required – which increases complexity.

Why NoSQL

The Shift to the Digital Economy option

  • mobile games can reach tens of millions of users in a matter of months e.g. Pokemon GO, Clash of Clans etc
  • With a distributed, scale-out database, mobile applications can start with a small deployment and expand as the user base grows, rather than deploying an expensive, large relational database server from the beginning.

Why NoSQL

Internet of Things (IoT)

  • some 20 billion devices are connected to the Internet
  • The volume, velocity of data is increasing which is semi-structured and continuous
  • Relational databases struggle with the three well-known challenges from big data IoT applications: Scalability, Throughput, and data variety.

Why NoSQL

The Shift to the Digital Economy

  • mobile games can reach tens of millions of users in a matter of months e.g. Pokemon GO, Clash of Clans etc
  • With a distributed, scale-out database, mobile applications can start with a small deployment and expand as the user base grows, rather than deploying an expensive, large relational database server from the beginning.

Why NoSQL

Personalization

Integrated Caching

Analytics and Business Intelligence (Big Data)

Types of NoSQL Databases

   1. Document based Database

  • Instead of using tables and rows as in relational databases, Document Stored NoSQL databases are built on an architecture of collections and documents.
  •  Documents are stored in XML / JSON / BSON
  • Document databases are essentially the next level of key-value, allowing nested values associated with each key.
  •  Document databases are generally useful for CMS, blogging platforms, real-time analytics, ecommerce-applications
  • examples include MongoDB, RethinkDB, CouchDB

Types of NoSQL Databases

2. Key-value Pairs

  • Similar to a hash table where there is a unique key and a pointer to a particular item of data. the value is usually BLOBs.
  • Redis, Riak, Local Storage (browser) and Amazon DynamoDB are examples of key-value NoSQL databases.
  •  Key-value databases are generally useful for storing session information, user profiles, preferences, shopping cart data.
  • We would avoid using Key-value databases when we need to query by data.

Types of NoSQL Databases

3. Graph Store

  • Graph stores are used to store information about networks of data, such as social connections. Graph stores include Neo4J and Giraph.

4. Column based

  • There are still keys but they point to multiple columns.

  • These were created to store and process very large amounts of data distributed over many machines.

  • Examples of column-oriented databases are Cassandra and HBase.

CAP Theorem

  • DBMS follows the ACID property. Eric Brewer put forth the CAP theorem which states that in any distributed system we can choose only two of consistency, availability or partition tolerance.
  • Consistency – once data is written, all future read requests will contain that data.
  • Availability – the database is always available and responsive.
  • Partition tolerance – if one part of the database is unavailable, other parts are unaffected.

Usage of NoSQL DBs at scale

Facebook

  • RocksDB - Embeddable persistent key-value store.
  • Cassandra - Column-based database
  • Memcached - An in-memory key-value store

Pokemon GO

  • Google Cloud Datastore’s NoSQL database.

Clash of Clans

  • DynomoDB Amazon Web Services(AWS)

MongoDB

  • document store with BSON (extension of JSON) type system.
  • Schema-free structure
  • CP in CAP Theorem
  • To connect to a MongoDB server, use Mongo client (not HTTP)
  • Values may contain documents, arrays and arrays of documents
  • Joins or cross collection queries are not available.

MongoDB

MongoDB

Sample schema

MongoDB CRUD Operations

Create

MongoDB CRUD Operations

Read

In Mongoose

User.find({
  user_id: "123"
})
  .then(docs => {
    
    socket.emit("sync success", data);

  })
  .catch(err => {
    console.log("err", err.stack);
  });

MongoDB CRUD Operations

Update

MongoDB CRUD Operations

Delete

MongoDB Relationships

  • Embedded Documents

  • References

 

 

Embedded Documents

An embedded document is when one document (often a structured text file, or a binary, or anything else is embedded within another.

 

 

MongoDB One to One Relationships

From

{

_id: "123",

name: "Leo Messi",

address: {
            street: "123 Fake Street",
            city: "Faketon"
            }
}

To

{

_id: "123",
name: "Leo Messi"

}

{

user_id: "123",
street: "123 Fake Street",
city: "Faketon"

}

MongoDB One to Many Relationships

{
_id: "123",
name: "Leo Messi",
addresses: [
                {
                street: "123 Fake Street",
                city: "Faketon"                  
                },
                {
                street: "1 Some Other Street",
                city: "Boston"
                }
            ]
}

Thank You !

 

Link to the slides

https://slides.com/alamgirqazi/nosql

 

Complete notes

https://github.com/alamgirqazi/IntroToNoSQL​

Made with Slides.com