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.
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Database NO-SQL: Anything else ?
1. Database NO-SQL: Anything else ?
Giorgio Desideri
giorgio.desideri@gmail.com
<nome relatore> - <e-mail> – <azienda o community>
2. Database NO-SQL: Anything else ?
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)
Pag. 2 / 24 <nome relatore> - <e-mail> – <azienda o community>
4. Database NO-SQL: Anything else ?
Linguaggio SQL:
linguaggio formale
Derivato da una grammatica definita
Definizione degli operatori
linguaggio dichiarativo
Definisce “cosa” voglio
Realizzazione spetta all'interprete dei comandi che mi restituirà quello che io ho
dichiarato nella mia query
Pag. 4 / 24 <nome relatore> - <e-mail> – <azienda o community>
5. Database NO-SQL: Anything else ?
Caratteristiche
Generalità: è 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
Pag. 5 / 24 <nome relatore> - <e-mail> – <azienda o community>
7. Database NO-SQL: Anything else ?
< Key , Value >
2 oggetti
Definizione di una struttura generale
“Datemi un punto d'appoggio
e vi solleverò il mondo”
(Archimede Siracusano)
Pag. 7 / 24 <nome relatore> - <e-mail> – <azienda o community>
9. Database NO-SQL: Anything else ?
Importanza della progettazione
Modello dei dati
COSA è “KEY” ?
COSA è “VALUE” ?
Ricerca del modello “ottimale”
Analisi nell'interezza del modello reale dei dati
Decomposizione/Composizione, interconnessione degli oggetti
Paradigma NON CONTEXT-FREE, anzi CONTEXT-DRIVEN
Pag. 9 / 24 <nome relatore> - <e-mail> – <azienda o community>
10. Database NO-SQL: Anything else ?
Perché SI ai NO-SQL DB ? Perché NO ai No-Sql DB ?
Gestione grandi moli di dati (Gb, Tb, Eb) Modello non generale, la cui efficienza
Scalabilità (architettura e data-model) è strettamente legata al modello di
rappresentazione dei dati
Prestazioni
Progettazione feature a carico
dell'utente
Software-Legacy
Pag. 10 / 24 <nome relatore> - <e-mail> – <azienda o community>
13. Database NO-SQL: Anything else ?
Database basato su Apache Hadoop
Modello funzionale <Map, Reduce> basato interamente sul paradigma <Key, Value>
Based on:
Table
Row
ColumnFamily
Architettura generale e scalabile basata su schemi funzionali di Hadoop, e distribuita su
HDFS
Pag. 13 / 24 <nome relatore> - <e-mail> – <azienda o community>
14. Database NO-SQL: Anything else ?
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
COLUMN FAMILY SUPER COLUMN FAMILY
UID COLUMN 1 COLUMN 2 COLUMN FAMILY 1 COLUMN FAMILY 2
COLUMN 1 COLUMN 2 COLUMN 1
Pag. 14 / 24 <nome relatore> - <e-mail> – <azienda o community>
15. Database NO-SQL: Anything else ?
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
Pag. 15 / 24 <nome relatore> - <e-mail> – <azienda o community>
16. Database NO-SQL: Anything else ?
ColumnFamily: “Users”
KEY (UTF8Type) VALUE
“Ciccio Pasticcio” Columns
Name Value
“email” ciccio.pasticcio@email.com
“nazione” “Italia”
Pag. 16 / 24 <nome relatore> - <e-mail> – <azienda o community>
17. Database NO-SQL: Anything else ?
<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”
Pag. 17 / 24 <nome relatore> - <e-mail> – <azienda o community>
18. Database NO-SQL: Anything else ?
SuperColumnFamily: “Posts”
KEY (UTF8Type) VALUE
“Argomento SuperColumns
del giorno” Key Value
“Iniziative” Columns
Name Value
“titolo” “Codemotion”
“Spese” “...”
Pag. 18 / 24 <nome relatore> - <e-mail> – <azienda o community>
20. Database NO-SQL: Anything else ?
Generalità
Modello E-R e SQL riconducibile in questo modello
Robustezza
Controllo del risultato cercato sulle “matrici frastagliate”
Replica dei dati
Prestazioni
La row non può superare i 2GB di dimensione
Clustering
Pag. 20 / 24 <nome relatore> - <e-mail> – <azienda o community>