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

50
SQL o NoSQL? Progettare applicazioni 'Big Data-ready' attraverso l'utilizzo della Polyglot Persistence Mario Cartia ROME 18-19 MARCH 2016

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

Page 1: 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

Mario Cartia

ROME 18-19 MARCH 2016

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

$ whoami

Mario CartiaChief System Egineer

Page 3: 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

Page 4: 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

Page 5: 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

A.C.I.DTwo Phase Commit

WriteAhead Logging

ResourceContention

DistributedLock

Shared DiskShadow Paging

Shared Memory

Page 6: 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

ü Basicallyü Availableü Soft stateü Eventual consistency

B.A.S.E.

Page 7: 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

Scalability

ACID vs. BASE

Page 8: 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

CAP Theorem (Brewer)

Page 9: 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

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

? ? ? ?

? ? ? ?

Page 10: 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

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

? RDBMS ? ?

? ? ? ?

Page 11: 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

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

? RDBMS ? ?

? RDBMS ? ?

Page 12: 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

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

Most Popular NoSQL Databases

Page 13: 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

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

Page 14: 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

Key-Value Store

Page 15: 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

ü Simple Data Modelü Ease of useü Horizontal scaling

ü No complex queries

Page 16: 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

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

? RDBMS ? ?

? RDBMS ? ?

Page 17: 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

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

? RDBMS ? ?

Page 18: 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

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.

Page 19: 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

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” }

]}

Page 20: 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

ü Schema Freeü Ease of useü Horizontal scaling

ü Slow complex queriesü Not ACID*

Page 21: 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

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

? RDBMS ? ?

Page 22: 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

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

Document RDBMS ? ?

Page 23: 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

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)

Page 24: 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

Columnar / Tabular

Page 25: 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

ü OLAP Performancesü Horizontal scaling

ü OLTP Performancesü Handling SingleRecords

Page 26: 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

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

Document RDBMS ? ?

Page 27: 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

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

Document RDBMS Tabular Tabular

Page 28: 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

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)

Page 29: 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

Graph

Page 30: 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

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

ü Complex queriesü Not ACID*

Page 31: 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

Sample Retailers Web ApplicationUser Sessions Financial Data Shopping Cart Recommendations

Product Catalog Reporting Analytics Logs

KV(Mem) RDBMS KV

(Disk) ?

Document RDBMS Tabular Tabular

Page 32: 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

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

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

Best Practices

Page 34: 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

Best Practices

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

Page 35: 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

Best Practices

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

Page 36: 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

Best Practices

üData duplication and denormalization are first-class citizens

Page 37: 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

Page 38: 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!!!

Page 39: 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

Success Case

Page 40: 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

Success Case

FlockDB

Page 41: 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

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

Page 42: 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

Design Patterns

Page 43: 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

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

Page 44: 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

CQRS

Page 45: 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

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

Page 46: 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

Page 47: 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

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

Big Data Processing Bootcampwith Hadoop and Spark

Dove: Roma

Quando: 5 Aprile 2016

Info: desk Codemotion

Prossimo appuntamento!

Email: [email protected]

Page 49: 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

Question Time!

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

Thanks!

ROME 18-19 MARCH 2016

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

Email:[email protected]

All pictures belongto their respective authors