Linee di evoluzione dei Database DB NoSQL Linked Open Data Semantic Web
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
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
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)
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
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
Categorie/Famiglie Le Categorie si basano ognuno su una specifica organizzazione dei dati 1. Key-value system 2. Document Store 3. Extensible record store 4. Graph database
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.
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.
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).
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.
Es. MongoDB - obiettivi Alta performance. Alta scalabilità. Alta affidabilità. Fornire un insieme semplice ma ricco di funzionalità. Documenti JSON raggruppati in collezioni
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.
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
Es. MongoDB - Query SQL select a,b from Users; select * from users where age=33; select * from users where age=33 order by name; create index myind on users(name); MongoDB ddb.users.find({}, {a:1,b:1}); db.users.find({age:33}); db.users.find({age:33}).sort({name :1}); db.users.ensureindex({name:1});
Es. MongoDB - altre caratteristiche Assenza di transazioni, ma proprietà ACID. Alta affidabilità tramite Replication. Alta scalabilità tramite suddivisione in shard.
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.
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.
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.
Open Linked Data Tim Berners Lee