database no-sql: anything else ?
DESCRIPTION
La presentazione di Giorgio Desideri per il Codemotion del 5 marzo 2011 a Roma http://www.codemotion.it/ Un differente approccio alla progettazione e realizzazione di modelli di dati basati su paradigmi diversi da Entità-Relazione. Analisi delle maggiori prestazioni e scalabilità di questi sistemi sui sistemi di archiviazione SQL. Studio dei paradigmi di base su cui è basato il sistema di storage. Integrazione nelle normali applicazioni e trucchi&soluzioni derivanti dall'esperienza diretta di utilizzo.TRANSCRIPT
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Giorgio [email protected]
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 2 / 24
Stato dell'arte:Modello E-R (Entità – Relazione);
Linguaggio SQL, linguaggio formale e dichiarativo
Prestazioni legate esclusivamente al “EngineSQL”, colui che interpreta la query sql (spesso legate al prodotto utilizzato)
Scalabilità / Robustezza / Prestazioni derivanti dalla realizzazione utilizzata (modello, strumenti e dati)
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 3 / 24
Modello E-R (Entità – Relazione):3 oggetti coinvolti
Persone Ruoli
svolge
0,n 1,n
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 4 / 24
Linguaggio SQL: linguaggio formale
Derivato da una grammatica definitaDefinizione degli operatori
linguaggio dichiarativoDefinisce “cosa” voglioRealizzazione spetta all'interprete dei comandi che mi restituirà quello che io ho dichiarato nella mia query
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 5 / 24
CaratteristicheGeneralità: è un modello formale e generale che permette la costruzioni di “qualsiasi” modello reale
Robustezza: definizione di cosa voglio deve essere completa alla mia idea, altrimenti ottengo qualche altra cosa
Scalabilità: espansione sia in prestazioni che in funzionalità legate all'architettura utilizzata dal EngineSQL utilizzato
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 6 / 24
Anything else ?
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 7 / 24
< Key , Value >2 oggettiDefinizione di una struttura generale
“Datemi un punto d'appoggio e vi solleverò il mondo”
(Archimede Siracusano)
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 8 / 24
E-R: $entità1 <---> $relazione <----> $entità2
<K, V>:< $entità1, {($relazione1, entità2),
($relazione2, entità2), … } >
Key: $entità1Value: list( $relazioneN, entitàN )
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 9 / 24
Importanza della progettazioneModello dei dati
COSA è “KEY” ?COSA è “VALUE” ?
Ricerca del modello “ottimale”Analisi nell'interezza del modello reale dei datiDecomposizione/Composizione, interconnessione degli oggetti
Paradigma NON CONTEXT-FREE, anzi CONTEXT-DRIVEN
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 10 / 24
Perché SI ai NO-SQL DB ?
Gestione grandi moli di dati (Gb, Tb, Eb)
Scalabilità (architettura e data-model)
Prestazioni
Perché NO ai No-Sql DB ?
Modello non generale, la cui efficienza è strettamente legata al modello di rappresentazione dei dati
Progettazione feature a carico dell'utente
Software-Legacy
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 11 / 24
Anything else ?
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 12 / 24
Apache Cassandra
Apache HBase
Google BigTable
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 13 / 24
Modello funzionale <Map, Reduce> basato interamente sul paradigma <Key, Value>
Based on:TableRowColumnFamily
Architettura generale e scalabile basata su schemi funzionali di Hadoop, e distribuita su HDFS
Database basato su Apache Hadoop
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 14 / 24
Sistema di storage indipendente, per grandi moli di dati, <Key, Value> structured
Modello di rappresentazione dei dati astratto, basato su ROW / (Super)COLUMN FAMILY e UID.
KEY VALUE
UID
COLUMN FAMILY SUPER COLUMN FAMILY
COLUMN 1 COLUMN 2 COLUMN FAMILY 1COLUMN 1 COLUMN 2
COLUMN FAMILY 2COLUMN 1
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 15 / 24
COLUMN : entità di base, costituita da “Nome:Valore”. I vari data types dei valori possibili sono riassunti nelle seguenti tipologie:
BytesType, AsciiType, UTF8Type, LongType, LexicalUUIDType e TimeUUIDType
Colum FAMILY: entità che raggruppa una o più Column (VALUE), subordinandole a un valore chiave (KEY)
SUPER Column FAMILY: estensione maggiore della Column Family. Questa entità subordina una o più column family ad un valore chiave (KEY)
UID: chiave assoluta della ROW composta dalle entità citate
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 16 / 24
ColumnFamily: “Users”
KEY (UTF8Type) VALUE
“Ciccio Pasticcio” ColumnsName Value“email” [email protected]“nazione” “Italia”
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 17 / 24
<Keyspace Name="Database">
<ColumnFamily CompareWith="UTF8Type" Name="Users"/>
...
</Keyspace>
Definizione della chiave della ColumnFamily chiamata “Users”
Nessuna definizione del campo Value, ovvero delle possibili Column che sono presenti nella ColumnFamily
Riconducibile ad un esempio di matrice “frastagliata”
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 18 / 24
SuperColumnFamily: “Posts”
KEY (UTF8Type) VALUE
“Argomento del giorno”
SuperColumnsKey Value“Iniziative” Columns
Name Value“Codemotion”
“Spese”
“titolo”
“...”
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 19 / 24
<ColumnFamily ColumnType="Super"
CompareWith="UTF8Type"
CompareSubcolumnsWith="UTF8Type"
Name="Argomento del giorno"/>
<ColumnFamily CompareWith="UTF8Type"
Name="Iniziative"/>
<ColumnFamily CompareWith="UTF8Type"
Name="Spese"/>
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 20 / 24
GeneralitàModello E-R e SQL riconducibile in questo modello
RobustezzaControllo del risultato cercato sulle “matrici frastagliate”Replica dei dati
PrestazioniLa row non può superare i 2GB di dimensioneClustering
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 21 / 24
Anything else ?
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 22 / 24
NO-NAME web.applicationBlog/Social networkingModello:
UtenteMessaggio (Post)Notifica del messaggioRisposta al messaggio (Replay-Post)
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 23 / 24
< n o m e r e l at o r e > - < e - ma i l > – < a z i e n d a o c o m mu n it y>
Database NO-SQL: Anything else ?
Pag. 24 / 24
That's All Folks !!!!