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