Community - Cloud AWS su Google+
Amazon Web Services
Introduzione ai database NoSQL
Oggi vediamo le caratteristiche di un database NoSQL
come introduzione utile al servizio DynamoDB
Hangout 22 del 11.08.2014
●
●
Davide Riboldi
Massimo Della Rovere
cloud-aws.com
#cloudaws
CLOUD
AWS
Database NoSQL - Introduzione
●
Ormai è diverso tempo che si parla di database
NoSQL (not only SQL), i quali vengono indicati come
alternativa ai classici database relazionali RDBMS.
●
In realtà come vedremo non sono una sostituzione ai
database SQL, ma sono una cosa molto diversa che
può essere utilizzata in ambienti ad alta scalabilità.
●
Il fattore che ha portato questa tecnologia alla sua
attuale popolarità è il fatto che oggi siamo passati da
una scalabilità verticale ad una orizzontale.
Database NoSQL - Concetto sulla scalabilità
●
Quando parliamo di scalabilità verticale intendiamo
l’aumento di potenza nell’ambito dello stesso server,
quindi aumentiamo i processori, i dischi, la RAM etc.
●
Mentre per scalabilità orizzontale si intende quando
aggiungiamo più server per un’elaborazione parallela
di un’applicazione suddivisa in diverse richieste.
●
Nella prima soluzione abbiamo un limite che è legato
alla potenza massima che un singolo computer può
raggiungere, mentre in quella orizzontale in linea di
principio possiamo aggiungere server all’infinito :)
DOWN < SCALE > UP
Database NoSQL - Concetto sulla scalabilità
IN < SCALE > OUT
Database NoSQL - Concetto sulla scalabilità
●
Anche se la scalabilità verticale ha un limite di
crescita è comunque la tecnologia che ha portato
avanti fino adesso la maggior parte dei computer.
●
Con l’avvento di internet è cambiato tutto e il numero
di connessioni che si potrebbe ricevere non solo è
molto più alto ma è anche imprevedibile.
●
In questo nuovo scenario i database SQL hanno
incominciato ad avere problemi di performance che
sono stati risolti in parte dai database NoSQL.
Database NoSQL - Soluzioni disponibili
●
Attualmente ci sono diverse soluzioni NoSQL, però usano tutte dei protocolli proprietari che
non hanno ancora raggiunto degli ottimi standard come SQL.
●
CouchDB: è un database document-oriented dove il documento è il soggetto unico di
memorizzazione, in questo database non esistono tabelle ma i documenti vengono salvati
direttamente nel database tramite una struttura JSON, questa soluzione è pensata e
indicata per le applicazioni web con cui condivide parecchi aspetti comuni.
●
MongoDB: è un database document-oriented molto performante che mantiene alcuni
aspetti simili ai database SQL, questo aspetto lo rende molto interessante per chi vuole
passare a questa tecnologia venendo da quella relazionale. Vi consiglio di leggere la
documentazione ufficiale in quanto le funzioni interessanti sono veramente tante.
Database NoSQL - Soluzioni disponibili
●
Redis: questo database open source è di tipo key-value store e offre una struttura dati
server per chiave, la quale può contenere strings, hashes, lists, sets e sorted sets. Redis è
scritto in linguaggio C ed è adatto a tutti i sistemi Unix like anche se esiste una versione in
beta per gli ambienti windows. La documentazione in italiano è molto scarsa.
●
DynamoDB: è un database NoSQL presente negli Amazon Web Services, viene definito un
database ultra scalabile che gestisce diverse zone di disponibilità ed è integrabile con Elastic
MapReduce e Amazon S3 per il backup su storage online. La sua caratteristica principale è
legata alla semplicità di configurazione in ambienti complessi.
●
Google Big Table: è un database sviluppato da Google ed è basato su dati compressi, al
momento anche se è molto performante rimane limitato dal fatto che è utilizzabile solo in
ambiente Google App Engine. In questo momento è utilizzato in molti prodotti di google
stessa come ad esempio Google Maps, Gmail, Youtube, etc, etc
Database NoSQL - Soluzioni disponibili
●
Esistono moltissime altre soluzioni NoSQL che potete trovare a
questo indirizzo http://nosql-database.org/
Database NoSQL - Struttura generale
●
Esistono molte soluzioni NoSQL e con caratteristiche
diverse, però hanno in comune di non avere una
struttura rigida come nei database relazionali.
●
In ambito relazionale dobbiamo prima definire lo
schema con i campi, le chiavi etc, e solo dopo
possiamo eseguire le operazioni di lettura, etc.
●
In NoSQL questo processo non è necessario e la
memorizzazione può prevedere strutture diverse che
possono cambiare senza averle prima definite.
Database NoSQL - Struttura generale
RDBMS
NOSQL
Fonte
http://www.internetpost.it/
Database NoSQL - Metodi di implementazione
●
Column Family: le informazioni sono suddivise in righe e colonne come gli schemi, però il
numero di colonne non è prestabilito è può variare tra una riga e un’altra. Esistono due tipi
di soluzioni, una chiamata standard column e l’altra super column.
●
Graph: questi database memorizzano le informazioni con strutture a grafi, rendendo più
performante l’accesso con linguaggi e applicazioni orientate agli oggetti. Alcuni database
presenti in questo gruppo sono Neo4j, FlockDB, AllegroGraph e GraphDB.
●
Key/Value: in questo caso i dati vengono memorizzati in un elemento che contiene una
chiave assieme ai valori, questo metodo è il più semplice da implementare, ma anche il più
inefficiente se le operazioni riguardano soltanto una parte di un elemento.
●
Document store: è l’evoluzione del metodo key/value, rispetto ai database relazionali che
memorizzano i dati in tabelle con dei campi fissi, questi vengono messi in un documento
che può contenere una struttura con diversi campi e diverse lunghezze.
Database NoSQL - Alcuni svantaggi
●
Come tutte le cose, anche nei database NoSQL non
esistono solo vantaggi, ad esempio se da una parte
questa tecnologia risolve il problema di performance,
dall’altra rende le lettura dei dati più complessa.
●
Ci sono strutture che usano MongoDB per delle
applicazione web e poi convertono alcune informazioni
su MySQL proprio per analizzarlo con più semplicità.
●
Un’altro svantaggio dei database NoSQL è la
consistenza che in ambiente relazionale è gestita dal
database mentre in NoSQL dall’applicazione.
Database NoSQL - Ringraziamenti & Video
Cloud
Computing
Amazon Web
Service 1
Amazon Web
Service 2
Amazon
Free Trial
Amazon
S3
Amazon
Glacier
Amazon
RDS
Amazon
CloudFront
Amazon
MFA
Amazon
SNS
Amazon
RDS/MYSQL
Amazon
SES
Storage
gateway
Elastic
Transcoder
Amazon
IAM
Amazon
SQS
Amazon
CloudWatch
Amazon
CloudTrial
Amazon
IAM Top 10