SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot...

Post on 21-Apr-2017

704 views 0 download

Transcript of SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot...

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Mario Cartia

ROME 18-19 MARCH 2016

$ whoami

Mario CartiaChief System Egineer

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

ü Atomicityü Consistencyü Isolationü Durability

A.C.I.D

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

A.C.I.DTwo Phase Commit

WriteAhead Logging

ResourceContention

DistributedLock

Shared DiskShadow Paging

Shared Memory

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

ü Basicallyü Availableü Soft stateü Eventual consistency

B.A.S.E.

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Scalability

ACID vs. BASE

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

CAP Theorem (Brewer)

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

? ? ? ?

? ? ? ?

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

? RDBMS ? ?

? ? ? ?

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

? RDBMS ? ?

? RDBMS ? ?

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

ü Key-Valueü Document storeü Columnar / Tabularü Graph

Most Popular NoSQL Databases

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Key-Value StoreKey-Value stores use theassociative array (also known as amap or dictionary) as theirfundamental data model

In this model, data is representedas a collection of key-value pairs

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Key-Value Store

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

ü Simple Data Modelü Ease of useü Horizontal scaling

ü No complex queries

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

? RDBMS ? ?

? RDBMS ? ?

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

? RDBMS ? ?

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Document StoreThe central concept of a documentstore is the notion of a Document

Documents encapsulate andencode data (or information) insome standard formats like JSON,XML, etc.

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Document StoreKey-Valueuser:1632 => {

"firstName":"John","lastName":"Smith","age":25,"address":{

"streetAddress":"21 2nd Street","city":"New York","state":"NY","postalCode":"10021"

},"phoneNumber":[

{"type":"home","number":"212 555-1234"

},{

"type":"fax","number":"646 555-4567” }

]}

Document orienteduser:1632 => {

"firstName":"John","lastName":"Smith","age":25,"address":{

"streetAddress":"21 2nd Street","city":"New York","state":"NY","postalCode":"10021"

},"phoneNumber":[

{"type":"home","number":"212 555-1234"

},{

"type":"fax","number":"646 555-4567” }

]}

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

ü Schema Freeü Ease of useü Horizontal scaling

ü Slow complex queriesü Not ACID*

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

? RDBMS ? ?

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

Document RDBMS ? ?

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Columnar / TabularA column-oriented DBMS storesdata tables as sections of columnsof data rather than as rows of data

This column-oriented DBMS hasperformance advantages for OLAPworkloads (data warehouse)

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Columnar / Tabular

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

ü OLAP Performancesü Horizontal scaling

ü OLTP Performancesü Handling SingleRecords

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

Document RDBMS ? ?

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

Document RDBMS Tabular Tabular

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

GraphThis kind of database is designedfor data whose relations are wellrepresented as a graph consistingof elements interconnected with afinite number of relations betweenthem (eg. social, maps, networks)

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Graph

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

ü Handling Relationsü Optimal for someUse Cases (maps, social)

ü Complex queriesü Not ACID*

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

Document RDBMS Tabular Tabular

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) Graph

Document RDBMS Tabular Tabular

Best Practices

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Best Practices

ü NoSQL data modeling oftenstarts from the application-specific queries as opposed to relational modeling

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Best Practices

ü NoSQL data modeling oftenrequires a deeper understandingof data structures and algorithms than relationaldatabase modeling does

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Best Practices

üData duplication and denormalization are first-class citizens

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

BOTH!!!

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Success Case

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Success Case

FlockDB

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Design PatternsData Access Object Pattern (or DAOpattern) is used to separate low level dataaccessing API or operations from high levelbusiness services

Data access object (DAO) is an object thatprovides an abstract interface to some typeof database or other persistence mechanism

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Design Patterns

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Design PatternsCQRS is a simple pattern that strictlysegregates the responsibility ofhandling command input into anautonomous system from theresponsibility of handling side-effect-free query/read access on the samesystem

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

CQRS

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Design PatternsThe fundamental idea of Event Sourcingis that of ensuring every change to thestate of an application is captured in anevent object

These event objects are themselves storedin the sequence they were applied for thesame lifetime as the application state itself

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

I corsi di Codemotion Training

Percorsi didattici dal taglio pratico – anche online

WEB APP SECURITY

WEB DEVELOPMENT

IOT

UX & UI

BIG DATA

MOBILE DEVELOPMENT

LEGAL SOFTWARE DISCIPLINE

FRONTEND DEVELOPMENT

Big Data Processing Bootcampwith Hadoop and Spark

Dove: Roma

Quando: 5 Aprile 2016

Info: desk Codemotion

Prossimo appuntamento!

Email: training@codemotion.it

SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence

Question Time!

Thanks!

ROME 18-19 MARCH 2016

Follow me!https://twitter.com/mariocartiahttps://it.linkedin.com/in/mariocartia

Email:mario@big-data.ninja

All pictures belongto their respective authors