database no-sql: anything else ?

24
<nome relatore> - <e-mail> – <azienda o community> Database NO-SQL: Anything else ? Giorgio Desideri [email protected]

Upload: codemotion

Post on 05-Jul-2015

953 views

Category:

Documents


0 download

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

Page 1: Database NO-SQL: 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 ?

Giorgio [email protected]

Page 2: Database NO-SQL: 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. 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)

Page 3: Database NO-SQL: 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. 3 / 24

Modello E-R (Entità – Relazione):3 oggetti coinvolti

Persone Ruoli

svolge

0,n 1,n

Page 4: Database NO-SQL: 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. 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

Page 5: Database NO-SQL: 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. 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

Page 6: Database NO-SQL: 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. 6 / 24

Anything else ?

Page 7: Database NO-SQL: 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)

Page 8: Database NO-SQL: 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. 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 )

Page 9: Database NO-SQL: 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. 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

Page 10: Database NO-SQL: 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. 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

Page 11: Database NO-SQL: 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. 11 / 24

Anything else ?

Page 12: Database NO-SQL: 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

Page 13: Database NO-SQL: 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. 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

Page 14: Database NO-SQL: 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. 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

Page 15: Database NO-SQL: 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. 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

Page 16: Database NO-SQL: 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. 16 / 24

ColumnFamily: “Users”

KEY (UTF8Type) VALUE

“Ciccio Pasticcio” ColumnsName Value“email” [email protected]“nazione” “Italia”

Page 17: Database NO-SQL: 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. 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”

Page 18: Database NO-SQL: 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. 18 / 24

SuperColumnFamily: “Posts”

KEY (UTF8Type) VALUE

“Argomento del giorno”

SuperColumnsKey Value“Iniziative” Columns

Name Value“Codemotion”

“Spese”

“titolo”

“...”

Page 19: Database NO-SQL: 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. 19 / 24

<ColumnFamily ColumnType="Super" 

CompareWith="UTF8Type" 

CompareSubcolumnsWith="UTF8Type" 

Name="Argomento del giorno"/>

     <ColumnFamily CompareWith="UTF8Type" 

Name="Iniziative"/>

     <ColumnFamily CompareWith="UTF8Type" 

Name="Spese"/>

Page 20: Database NO-SQL: 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. 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

Page 21: Database NO-SQL: 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. 21 / 24

Anything else ?

Page 22: Database NO-SQL: 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)

Page 23: Database NO-SQL: 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. 23 / 24

Page 24: Database NO-SQL: 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. 24 / 24

That's All Folks !!!!