Azienda Canonical rilascio significativo del progetto (SQLite distribuito), un motore SQL integrato compatibile con SQLite in sviluppo, che supporta la replica dei dati, il ripristino automatico da guasti e la tolleranza ai guasti tramite la distribuzione dei gestori su nodi diversi. Il DBMS è realizzato come una libreria C collegata alle applicazioni e è concesso in licenza sotto Apache 2.0 (l'originale SQLite è fornito come dominio pubblico). Sono disponibili binding per il linguaggio .
La libreria è un'estensione dell'attuale base di codice SQLite, che aggiunge il supporto per il protocollo di rete per connettere tra loro più istanze dell'applicazione in esecuzione su host diversi. Un'applicazione costruita con Dqlite può funzionare come un cluster autonomo a prova di guasto, senza dipendere da DBMS esterni. In pratica, Dqlite è utilizzato da Canonical nel sistema di gestione dei container . Tra le aree di applicazione della libreria si menzionano anche la creazione di dispositivi a prova di guasto per l'Internet delle Cose e i gestori nei sistemi
.
Per garantire coerenza nella replica dei dati viene utilizzato un metodo di consenso basato su un algoritmo , usato in progetti come etcd, RethinkDB, CockroachDB e OpenDaylight. In Dqlite si applica una propria implementazione asincrona , scritta in linguaggio C. Per il multiplexing della gestione delle connessioni e l'avvio delle coroutine si utilizzano librerie pronte e .
Rispetto a un progetto simile , Dqlite offre pieno supporto per le transazioni, può interagire con qualsiasi progetto in linguaggio C, permette di utilizzare la funzione time() e applica la replica basata su snapshot invece della replica basata sulla traduzione delle espressioni SQL.
Caratteristiche di Dqlite:
- Esecuzione di tutte le operazioni su disco e di rete in modalità asincrona;
- Disponibilità di un insieme di test per confermare la correttezza dei dati;
- Basso consumo di memoria e scambio dati efficiente sulla rete;
- Archiviazione permanente dei dati e del log delle transazioni (con possibilità di caching in memoria);
- Ripristino rapido dopo i guasti;
- Un client CLI stabile scritto in Go, utilizzabile per l'inizializzazione del database, la configurazione della replica e la connessione/disconnessione dei nodi;
- Supporto per le architetture ARM, X86, POWER e IBM Z;
- L'implementazione dell'algoritmo Raft è ottimizzata per ridurre al minimo i ritardi nella conclusione delle transazioni.
Fonte: opennet.ru
