Azienda Canonical importante rilascio del progetto (Distributed SQLite), sviluppando un motore SQL incorporato compatibile con SQLite, che supporta la replica dei dati, il recupero automatico dopo i guasti e la resilienza distribuendo i gestori su più nodi. Il DBMS è implementato come una libreria in C da collegare alle applicazioni e è sotto licenza Apache 2.0 (l'originale SQLite è fornito come pubblico dominio). Sono disponibili binding per il linguaggio .
La libreria è un'estensione della base di codice SQLite esistente, che aggiunge supporto per un protocollo di rete per collegare più istanze dell'applicazione in esecuzione su host diversi. Un'applicazione costruita con Dqlite può funzionare come un cluster autonomo e resiliente, 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 menziona anche la creazione di dispositivi IoT resilienti e gestori in sistemi
.
Per garantire la coerenza nella replica dei dati viene utilizzato un metodo di consenso basato sull'algoritmo , utilizzato in progetti come etcd, RethinkDB, CockroachDB e OpenDaylight. In Dqlite viene utilizzata una propria implementazione asincrona , scritta in C. Per il multiplexing delle connessioni e l'organizzazione dell'esecuzione delle coroutine vengono utilizzate librerie pronte e .
Rispetto a un progetto simile , Dqlite offre supporto completo per le transazioni, può collegarsi a qualsiasi progetto in C, consente l'uso della funzione time() e applica la replica basata su frame invece della replica basata sulla trasmissione delle espressioni SQL.
Caratteristiche di Dqlite:
- Esecuzione di tutte le operazioni su disco e di rete in modalità asincrona;
- Presenza di un insieme di test per confermare la correttezza dei dati;
- Basso consumo di memoria ed efficace scambio di dati attraverso la rete;
- Memorizzazione permanente su disco del DB e del log delle transazioni (con possibilità di caching in memoria);
- Ripristino rapido dopo i guasti;
- Un client CLI stabile in linguaggio Go, utilizzabile per inizializzare il DB, configurare la replica e collegare/disconnettere i nodi;
- Supporto per le architetture ARM, X86, POWER e IBM Z;
- L'implementazione dell'algoritmo Raft è ottimizzata per minimizzare i ritardi nella registrazione delle transazioni.
Fonte: opennet.ru
