Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni3 pagine

Storage NewSQL

Il documento discute vari tipi di database NewSQL, come Google Spanner e VoltDB, che combinano le proprietà ACID con la scalabilità orizzontale. Google Spanner utilizza Paxos per la replicazione e offre transazioni ACID e un linguaggio SQL, mentre VoltDB è un database in-memory partizionato e single-threaded. Inoltre, viene menzionato InfluxDB, un database ottimizzato per gestire dati di serie temporali, con funzionalità di query SQL e integrazione con strumenti di monitoraggio.

Caricato da

gabrieletummolo
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni3 pagine

Storage NewSQL

Il documento discute vari tipi di database NewSQL, come Google Spanner e VoltDB, che combinano le proprietà ACID con la scalabilità orizzontale. Google Spanner utilizza Paxos per la replicazione e offre transazioni ACID e un linguaggio SQL, mentre VoltDB è un database in-memory partizionato e single-threaded. Inoltre, viene menzionato InfluxDB, un database ottimizzato per gestire dati di serie temporali, con funzionalità di query SQL e integrazione con strumenti di monitoraggio.

Caricato da

gabrieletummolo
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd

Storage NewSQL

Datastore che cerca di mantenere le proprietà ACID aggiungendo scalabilità orizzontale agli RDBMS .

Lo scaling può essere ottenuto con uno schema Multi-master

Google Spanner

Utilizza Paxos per la replicazione, in modo da garantire che una sequenza di comandi siano eseguiti nello
stesso ordine in tutte i nodi di replica.

Offre:

- Transazioni ACID
- Linguaggio SQL
- Tabelle semi-relazionali: le tabelle sono raggruppate in modo gerarchico, in modo da permettere
il salvataggio in directory che possono essere facilmente gestite

Riesce a fornire CAP grazie ad hardware specializzato, che possiede solo Google.

Proprietà:

- lock-freedom per transazioni read-only distribuite


 lock-freedom: nessun bisogno di prendere il lock sui dati in lettura
- External consistency per transazioni distribuite”
 External consistency: consistenza più stringente della linearizzabilità. Il
comporamento del sistema è come se tutte le transazioni siano eseguite in
ordine sequenziale

Tutto questo avviene grazie ad una nuova API chiamata True Time:

o Clock distribuito, reso affidabile grazie a dei server speciali che restituiscono un clock
atomico
o Il problema è che richiede risorse hardware inpossibili da utilizzare per la maggior parte
delle aziende
Per mantenere il controllo sulla concorrenza, Spanner utilizza un meccanismo chiamato Multi-Version
Concurrency Control (MVCC), ovvero mantiene versioni multiple e immutabili dei dati:

o Ogni write crea una nuova versione immutabile dei dati, il cui timestamp è quello della
write transaction. In questo modo, readers concorrenti possono ancora vedere la
vecchia versione mentre la transazione di scrittura viene completata
o Una read fatta ad un certo timestamp, ritorna il valore della versione del dato più
recente rispetto a quel timestamp

VoltDB

Database in memory, partizionato, single thread, distribuito e ACID-compliant:

- In memory: i dati sono mantenuti in RAM invece che sul disco


- Partizionato e distribuito: le tabelle del DB sono partizionate su diversi server per avere migliore
concorrenza e altro throughput
- Single-threaded: processamento serializzato dei dati nella stessa partizione, per evitare
overhead dovuto al lock

Altre features:

- Basato sul paradigma dello shared nothing


- Scaling orizzontale

Le tabelle del DB sono automaticamente partizionati su server multipli, e i client possono chiamare
qualsiasi server specificando la partition column.

Se la tabella è partizionata, ogni volta in cui inserisco una riga in questa tabella, VoltDB in base al valore
della partitioning column stabilisce a quale partizione dovrà andare quella riga.

La gestione della concorrenza si basa su due concetti:

- Tutta la RAM disponibile è sufficiente per salvare il db


- Tutte le transazioni sono brevi e possono essere eseguite sui dati in memoria

Le transazioni che coinvolgono una singola partizione sono eseguite in modo sequenziale in un ambiente
single thread e lock-free. Le transazioni che vengono eseguite su partizioni multiple sono inviate ad uno
speciale global controller, che decide l’ordine di esecuzione

TIME SERIES DATABASE

Modelli di database ottimizzati per gestire grandi volumi di dati relativi a serie temporali.
Le serie temporali possono essere organizzate in modo gerarchico
Fornisce computazioni di basi sulle serie (somme, moltiplicazioni e merge con un’altra serie) e funzioni
statistiche come media, deviazione standard ecc.

InfluxDB

Fornisce delle query SQL per interagire con database di serie temporali

Inoltre fornisce delle API per interagire col db.

Le serie temporali sono organizzate come “punti”, ognuno dei quali è composto da:

- Timestamp
- Misurazione: simile ad una tabella SQL con indice primario sul timestamp. Rispetto al DBMS, non
c’è bisogno di definire lo schema a priori e non accetta valori a null
- Almeno una coppia (chiave,valore) che rappresenta il valore misurato in quel timestamp
- Può contenere coppie (chiave,valore) per gestire i metadati

La limitazione è data dalla scalabilità orizzontale.

Viene integrato con Telegraph, Chronograf e Kapacitor per realizzare un MAPE control loop.

Potrebbero piacerti anche