NoSQL, What it is and how our projects can benefit from it

Post on 20-Jun-2015

165 views 0 download

Tags:

description

A very high level introduction to NoSQL. Introducing the main categories of NoSQL database and the business drivers that could lead you to use it.

Transcript of NoSQL, What it is and how our projects can benefit from it

NoSQL What it is and

how Our projects can benefit from it

What this is Not ...

SQL

The Plan

Not Only SQL

Relational Love

Polyglot Persistence

The Range

What is NoSQL?

You have a Choice!

It’s not just about ...

Driving Forces

Volume Velocity Variety Cost

Agility Mismatch Productivity Availability

Volume

My application need to be able

to handle large volumes of

data.

Volume

Simple Horizontal Scaling

Automatic Sharding

Distributed Querying

Velocity

My application needs to store and serve relevant information

to users in real-time to

provide a high-quality user experience

Velocity

Distributed Load

Store as Used

Real-time Analytics

Integrated Caching

Variety

My application needs to be able to handle market data from

multiple internal and external

systems each with its own

schema

Variety

Handles Sparsely Populated Data

Well

Dynamic Schema

No need to define one schema for all

Easier integration of new system’s data

Cost

We are a public sector organisation which need to

account to the local

community for our spending.

Cost

Commodity Hardware

Open Source

Lower Support Fees

Agility

My application's data models

need to be updated weekly

to keep pace with business

and market developments.

Agility

Dynamic Schemas

OO Like Structures

Easy to Scale Out

Productivity

My application deals with patient health records and I’m

finding it complex to model in my relational database.

Productivity

Data Complex to Model in Relational

Easier to Adopt

Avoid Complex Reads/Writes

No Upfront Schema Design

Mismatch

The team developing my

application are not database experts

Mismatch

Store as Used

Familiar Formats

ORM Redundant

Availability

My application is critical it needs

to be available 24 x 7. I can’t afford a lot of

downtime for upgrade.

Availability

Dynamic Schema

Upgrade Without Downtime

Simple Replication

Simple Load Balancing

Key Value

Key Value

Familiar

Simple API

Just a BLOB

The Good

Familiar

Simple to Build

Easy to Scale

Great Performance

X The Bad

XQueries

XComplex Data

XNo Schema

XNot ACID

Uses

Media Stores

User profiles

User sessions

Shopping carts

Document

Vs

Document

{

name: “NoSQL”,

categories: [“document”,

“columnar”,

“graph”,

“key-value”]

}

The Good

No Mismatch

Productivity

Flexible Schema

Agile

Availability

X The Bad

X Querying

X Transactions

X Multiple Uses

X Responsibility

X Flexible Schema

Uses • High Volume Data Feeds

• Customer Facing Dashboards

• News Sites/Blogs

Graph

Graph

Relations over Data

The Good

Relationships

Whiteboard

Graph Algorithms

Schema Free

Performance

Acid Transactions

X The Bad

XSpecialised

X Immature

XPartitioning

Uses • Recommendations

• Social Networking

• Business Intelligence

• Fraud Detection

Column Orientated

Column Orientated

BigTable

Column, Column Families

Ragged

Examples

The Good

Aggregate Column

Fast lookups

Distributed storage

MapReduce

Write Loads

X The Bad

X API

X No Idea of Use

Uses Large Deployments

Statistics & Analysis

Polyglot Persistence

Polyglot Persistence

Don’t Dismiss Relational

Use Relational

Transactions

Unsure

Flexibility

Use Relational

Integrity

Standardisation

Tried & Tested

Knowledge

Use Relational

Help

Tooling

Security & Compliance

The Hybrid

Questions???