Linee di evoluzione dei Database DB NoSQL Linked Open Data Semantic Web L. Vigliano Database NoSQL Esigenze e caratteristiche • Presenza di grandi volumi di dati…..crescenti • Struttura non regolare dei dati da gestire • Elementi relativamente omogenei fra loro (senza particolari correlazioni tra loro) • Tipi di operazioni semplici L. Vigliano Database NoSQL Esigenze e caratteristiche • Esempio : Twitter (insieme di utenti che pubblicano interventi) • Poche collezioni di interesse (due entità : utenti e interventi), ma voluminose • Poche operazioni (inserimento/modifica utente, inserimento intervento) • Dati identificati da una chiave, ma solo parzialmente strutturati L. Vigliano Database NoSQL Esigenze e caratteristiche • gestire oggetti non rigidamente strutturati • gestire la scalabilità dei dati. • offrire solo alcune delle funzioni dei sistemi tradizionali • Sistemi NoSQL (Not only SQL) L. Vigliano Database NoSQL Esigenze e caratteristiche “One size does not fit all” • Modello relazionale come base, ma non basta • Sistema non transazionale • Grande scalabilità (molti processori, partizionamento orizzontale dei dati, architettura distribuita a bassi costi) • Adattabilità a diversi scenari applicativi L. Vigliano Database NoSQL Transazionale ? • No ACID ma BASE (Basically Available, Soft state, Eventually consistent) • CAP Theorem : ‘ In un sistema distribuito non è possibile soddisfare contemporaneamente : consistency, availability, partition tolerance’ L. Vigliano Database NoSQL Categorie/Famiglie Le Categorie si basano ognuno su una specifica organizzazione dei dati 1. 2. 3. 4. Key-value system Document Store Extensible record store Graph database L. Vigliano Database NoSQL Key-value • • • I dati sono coppie chiave-valore definiti dal programma (basi di dati senza schema). La struttura degli oggetti è trasparente al sistema e lasciata all’ applicazione che vi accede. Es. Oracle NoSQL. L. Vigliano Database NoSQL Document Store • • • Gli oggetti hanno struttura complessa (documenti) anche se sono organizzati in collezioni. Formato JSON. Indici secondari non predefiniti e non hanno tipo. Es. MongoDB e CoachDB. L. Vigliano Database NoSQL Extensible record store • • • Collezioni ( dette tabelle) senza struttura predefinita, eccetto che per una prima struttura di ‘famiglie’, o gruppi di colonne. Possono essere nidificate. Es. Big Table (Google), Hbase e HyperTable (Open Source). L. Vigliano Database NoSQL Graph Database • Database che si adattano a tutti quei dati che possono essere efficientemente rappresentati come grafi, anche di grandi dimensioni. • Es. di utilizzo per topologie di reti e collegamenti stradali. L. Vigliano Database NoSQL Es. MongoDB - obiettivi • • • • Alta performance. Alta scalabilità. Alta affidabilità. Fornire un insieme semplice ma ricco di funzionalità. Documenti JSON raggruppati in collezioni L. Vigliano Database NoSQL Es. MongoDB - formato dati • • • • Dati memorizzati in BSON e rappresentati in JSON. Documento JSON come insieme di chiave-valore. Un valore può essere un JSON annidato. Assenza di una definizione di schema. Assenza di tipizzazione dei dati. L. Vigliano Database NoSQL Es. MongoDB - formato dati { “nome”: “Loredana”, “cognome”: “Vigliano” } { “nome”: “automobile”, “modello”: { “produttore”: “Fiat”, “tipo”: “Tipo”, “colore”: “grigio” } “targa”: “AA 999 BB” } Definisce semplice oggetto con una chiave “nome” e una chiave “cognome” Es. di JSON annidato con informazioni dettagliate sul modello dell’ auto L. Vigliano Database NoSQL Es. MongoDB - Query SQL MongoDB select a,b from Users; dDb.users.find({}, {a:1,b:1}); select * from users where age=33; db.users.find({age:33}); select * from users where age=33 order by name; db.users.find({age:33}).sort({name :1}); create index myind on users(name); db.users.ensureIndex({name:1}); L. Vigliano Database NoSQL Es. MongoDB - altre caratteristiche • Assenza di transazioni, ma proprietà ACID. • Alta affidabilità tramite Replication. • Alta scalabilità tramite suddivisione in “shard”. L. Vigliano Database NoSQL Es. BigTable - obiettivi • • • • Alta scalabilità nella gestione dei diversi server e dei petabyte necessari per immagazzinare i dati. Controllo caratteristiche prestazionali. Persistenza e tolleranza degli errori. Generazione mappe multilivello. Sistema di memorizzazione distribuito, dati semistrutturati, basato su Google File System. L. Vigliano Database NoSQL Es. BigTable - formato dati • Formato SSTable : – Mappa persistente, ordinata e immutabile di associazioni chiave-valore, viste come stringhe arbitrarie. • Indice dei blocchi finale per localizzare ogni SSTable. L. Vigliano Database NoSQL Es. BigTable - modello di dati • • • • • Non relazionale, ma basato sul layout di ogni proprietà del DB. Mappa multidimensionale, ordinata, sparsa, distribuita e persistente, indicizzata per chiave di riga, chiave di colonna e timestamp. Righe raggruppate in maniera dinamica. Colonne non predefinite Multiversioning dei dati di ogni cella. L. Vigliano Open Linked Data • Tim Berners Lee L. Vigliano