Post on 21-Apr-2017
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