DataBase NoSQL Prof. Marco Pedroni – Unversità degli Studi di Ferrara Definizione DB NoSQL = sistemi software di archiviazione, in cui la persistenza dei dati è caratterizzata dal fatto di non utilizzare il modello relazionale, di solito usato dai database tradizionali (RDBMS) Modello relazionale “Next generation databases mostly addressing some of the points: being non-relational, distributed, open source and horizzontally scalable” (definizione da http://nosql-database.org/) DB NoSQL - caratteristiche Database distribuiti Strumenti generalmente open-source NON dispongono di schema NON supportano operazioni di join Implementano parzialmente le proprietà ACID delle transazioni Sono scalabili orizzontalmente Sono in grado di gestire grandi moli di dati Supportano le repliche dei dati ACID Le proprietà logiche che devono avere le transazioni per operare in modo corretto sui dati: Atomicità, Coerenza, Isolamento, Durabilità Perché le transazioni operino in modo corretto sui dati è necessario che i meccanismi che le implementano soddisfino queste quattro proprietà: atomicità: la transazione è indivisibile nella sua esecuzione e la sua esecuzione deve essere o totale o nulla, non sono ammesse esecuzioni parziali coerenza: quando inizia una transazione il database si trova in uno stato coerente e quando la transazione termina il database deve essere in un altro stato coerente, ovvero non deve violare eventuali vincoli di integrità, quindi non devono verificarsi contraddizioni (inconsistenza) tra i dati archiviati nel DB isolamento: ogni transazione deve essere eseguita in modo isolato e indipendente dalle altre transazioni, l'eventuale fallimento di una transazione non deve interferire con le altre transazioni in esecuzione durabilità: detta anche persistenza, si riferisce al fatto che una volta che una transazione abbia richiesto un commit work, i cambiamenti apportati non dovranno essere più persi DB NoSQL - caratteristiche ● Leggerezza computazionale: i database NoSQL non prevedono operazioni di aggregazione sui dati (JOIN), molto dispendiose in termini dipeso computazionale, in quanto tutte le informazioni sono già raccolte in un unico documento associato all’oggetto da trattare. Ne derivano migliori performance, ma si generano duplicazioni delle informazioni (i costi attuali dei sistemi di storage rendono questo svantaggio poco importante) e si richiede un controllo diretto dell'integrità dei dati ● Assenza di schema: i database NoSQL sono privi di schema in quanto ogni documento contiene tutti i campi necessari, senza necessità di predefinizione. In questo modo, si possono aggiungere nuovi dati e informazioni, definibili liberamente all’interno dei documenti, senza rischi per l’integrità dei dati. Sono quindi adatti a inglobare velocemente nuovi tipi di dati, anche semistrutturati o non strutturati ● Scalabilità orizzontale: l’aggregazione dei dati e l’assenza di uno schema definito a priori offre l’opportunità di scalare orizzontalmente i database NoSQL senza difficoltà e senza rischi operativi DB NoSQL - ambiti di utilizzo Volume Velocità Dati semistrutturati – non strutturati Varietà DB NoSQL - ambiti di utilizzo Motivazioni della diffusione dei database NoSQL: Gestione dei Big-data Limitazioni del modello relazionale Teorema CAP DB NoSQL - Volume Volume: Big data = grandi moli di dati Dati Scientifici PB Web Server Log Sensori Transazioni finanziarie TB GB ERP CRM Social Media User Generated Contents Documenti Word, Excel, PDF MB Complessità bassa Complessità media Complessità alta DB NoSQL - Velocità Velocità: Big data = stream di dati Stream MorningStar di dati NASDAQ: oltre 5.000 record di transazioni /secondo DB NoSQL - Varietà Varietà: Big data = dati eterogenei, multi-sorgente SOCIAL MEDIA DBMS OPERATIVO SITO WEB DATA WAREHOUSE SOFTWARE DI SUPPORTO DECISIONALE REPORT DB NoSQL - Limiti dei modelli relazionali Il modello relazionale presuppone una rappresentazione tabellare, che accade se i dati non si presentano in tale forma? ANAGRAFICA PAGINA WEB CF Nome ? ? Cognome ? Luogo ? ? Data DB NoSQL - Limiti dei modelli relazionali Alcune operazioni sono complesse da implementare in SQL. Memorizzazione di un grafo, e calcolo del percorso minimo tra due punti. Esempi: DB NoSQL - Limiti dei modelli relazionali Scalabilità orizzontale dei DMBS relazionali. PROBLEMI Gestione dei vincoli Throughput (operazioni / sec) Repliche dei dati Gestione delle transazioni Soddisfacimento delle proprietà ACID Servers DB NoSQL - Teorema di CAP Il teorema di Brewer (CAP Theorem) afferma che un sistema distribuito può soddisfare al massimo solo due delle tre proprietà elencate sotto: Consistency Tutti i nodi della rete vedono gli stessi dati Availability Il servizio è sempre disponibile Partition Tolerance Il servizio continua a funzionare correttamente anche in presenza di perdita di messaggi o di partizionamenti della rete. Consistenza (tutti i nodi vedono gli stessi dati nello stesso momento) Disponibilità (la garanzia che ogni richiesta riceva una risposta su ciò che è riuscito o fallito) Tolleranza di partizione (il sistema continua a funzionare nonostante le perdite di messaggi) DB NoSQL - Teorema di CAP DB risponde sempre DB risponde correttamente DB distribuito DB NoSQL - Teorema di CAP DB NoSQL - Teorema di CAP Comportamento dei database NoSQL Basically Available I nodi del sistema distribuito possono essere soggetti a guasti, ma il servizio è sempre disponibile. Soft State La consistenza dei dati non è garantita in ogni istante. Eventually Consistent Il sistema diventa consistente dopo un certo intervallo di tempo, se le attività di modifica dei dati cessano. DB NoSQL - Modelli logici Il termine NoSQL identifica diverse tipologie di database, basate su modelli logici differenti: Database chiave/valore Database document-oriented Database column-oriented Database graph-oriented DB NoSQL - modello Chiave-Valore Esempi: BerkeleyDB, Project Voldemort Dati di un DB come liste di coppie chiave/valore (array associativi o dizionari) Chiave valore univoco per operazioni di ricerca Valore qualsiasi tipo di dato Chiave Valore 1 {Mario Rossi, 02311323} 2 {Mario Bianchi, 23} 3 {Dipartimento Informatica, Via Zamboni, 05143242} DB NoSQL - modello Document oriented Esempi: MongoDB, CouchDB Gestione di dati eterogeneei e complessi (semi-strutturati) Scalabili orizzontalmente, supporto per partizionamento (sharding) dei dati in sistemi distribuiti Documenti coppie chiave/valore (JSON) Forniscono funzionalità per aggregazione/analisi dei dati (MapReduce) DB NoSQL - modello Column oriented Esempi: HBase, Cassandra Dati organizzati su colonne anziché su righe. Column family: contenitore di colonne. Ogni column family è scritta su un file diverso. Ogni riga dispone di una chiave primaria (row key). Schema flessibile Maggiore efficienza nello storage Maggiore possibilità di compressione dati Usato in sistemi dati read-oriented (es. warehousing) DB NoSQL - modello Column oriented ID Nome Cognome Nascita Chiave della riga Column Family 1 (dati anagrafica) FILE 1 Lavoro Salario Contratto Column Family 2 (dati lavoro) FILE 2 DB NoSQL - modello Graph oriented Esempi: Neo4J, Titan PROPERTY GRAPH Dati strutturati sotto forma di grafi: nodi = attributi/righe, archi = relazioni tra attributi/righe Hadoop Apache Hadoop è un framework che supporta applicazioni distribuite con elevato accesso ai dati. È composto da due elementi fondamentali: HDFS Hadoop Distributed File System è un file system distribuito e scalabile MapReduce MapReduce è un framework software che supporta la computazione distribuita su grandi quantità di dati in cluster di computer, usando le funzioni map e reduce HBase • HBase è un ambiente di archiviazione di dati distribuito, column-oriented, costruito su HDFS e fondato sul modello di Google BigTable • HBase è un progetto Apache open source il cui obiettivo è archiviare dati per Hadoop Distributed Computing • I dati sono organizzati logicamente in tables, rows, families e columns Hbase – Data model Hbase – Operations