Chi sono- Laureato in Informatica
- +10 Anni di esperienzanel settore IT Enterprise
- Blockchain e NoSQL Trainer
- Head of Software Development– Agile Skill
- Apache Camel Community Committer
- IoTeX BlockchainCommunity Committer
Database Relazionale
E' basato sul principio di Entità - Relazione
Entità = attori del sistema
Relazioni = collegamentitra le entità
Deve avere un sistemaper recuperare, inserire,
modificare e cancellare le informazioni
Database Relazionale
SQL – Structured Query Language
Linguaggio che permette di interagire con il
Database.
Esistono 3 tipologie di istruzioni:
- DDL – definire le strutture
- DML – manipolare i dati
- DCL – per il controllo del database
Database Relazionale
ACID
Atomicity
- Concetto di transazione atomica
Consistency
- Sicurezza della transazione
Isolation
- Esecuzioniconcorrentivs transazioni
Durability
- Sicurezza della scrittura del dato
Database Relazionale
L' utilizzo di un database relazionale è comune
e corretto per risolvere svariati use case
memorizzazione del dato. In particolare è una
scelta obbligataquando è richiesta la corretta
applicazione dei principi di ACID
L'aumento del carico di lavoro può comportare
uno stress aggiuntivo che può risultare
insostenibile
La soluzione più comune è aumentare le risorse
dedicate al database (scaling verticale)
Database NoSQL
BASE
Basically Available
- I dati possono essere temporaneamente non
disponibili(un nodo è down)
Softstate
- L'intero stato del sistemapuò cambiare nel
tempo
Eventual consistency
- E' accettabile che venga letto un dato non
aggiornato
Database NoSQL
Not Only SQL
E' un paradigma pensato per sistemiche devono essere in
grado di gestire grandi quantità di dati (BigData)
Principi
- Scalabilità orizzontale
- Partizionamento dei dati (Sharding)
Esistono vari tipologie di database NoSQL
- Key / Value
- Document Oriented
- Columnar
- Graph Oriented
Apache Cassandra DB
NoSQL
Opensource
Distribuito (Peer 2 Peer)
Cluster altamente configurabile secondologiche di
- Single Node
- Rack
- Data Center
Per distribuire i dati utilizza il concetto di Token Range
suddiviso per sezioni per ogni nodo della rete
Apache Cassandra DB
NO SIGLE POINT FAILURE
Qualsiasi client può connettersiad un nodo del cluster
In quel caso il nodo è il coordinatoreche ha il compito di
gestire il routing e recuperare / inviare il dato al corretto
nodo del cluster
REPLICATORFACTOR
Indica quante volte il dato dev'essere replicato all'interno del
cluster
CONSISTENT LEVEL
Gestisce deilivelli di consistenzadel dato
Apache Cassandra DB
In pratica con CASSANDRApossosemplicemente
aggiungere più nodi ed avere un incremento delle
performancelineare
Apache Cassandra DB
Ma come riesce ad essere così veloce?
Tra le tante feature (per i più curiosi ne possiamo parlare in
separata sede)i dati vengono sempre scritti "in coda" su un
log apposito
Così facendo non occorre effettuare nessuna lettura prima
di una scrittura ottimizzando il carico globale
Apache Cassandra DB
WRITEPATH- COMPONENTS
MEMTABLE
- E' una memoria(in RAM) che riporta parti di tabella (con
indici)
COMMIT LOG
- E' un log (solo scrittura in coda) con tutte le operazioni
SSTABLES
- Flush (periodico)su disco della MEMTABLE
COMPACTION OPERATION
- Operazioni periodiche di merge SSTables
Apache Cassandra DB
READ PATH - COMPONENTS
MEMTABLE
- E' una memoria(in RAM) che riporta parti di tabella (con
indici)
ROW CACHE
- Cache (in memoria) con le ultime righe lette
BLOOMFILTER
- Algoritmo per identificare quale SSTABLEcontiene il dato
KEY CACHE
- Cache per mapping del dato sul tutte le SSTABLE