È disponibile Dqlite 1.0, una versione distribuita di SQLite da Canonical

Canonico pubblicato rilascio significativo del progetto Dqlite 1.0 (Distributed SQLite), che sviluppa un motore SQL incorporato compatibile con SQLite che supporta la replica dei dati, il ripristino automatico in caso di errori e la tolleranza agli errori distribuendo i gestori su più nodi. Il DBMS è implementato sotto forma di libreria C allegata alle applicazioni e distribuito da sotto la licenza Apache 2.0 (l'SQLite originale è di pubblico dominio). Collegamenti linguistici disponibili Go.

La libreria è un componente aggiuntivo della codebase SQLite esistente che aggiunge il supporto del protocollo di rete per l'interconnessione di più istanze di un'applicazione in esecuzione su host diversi. Un'applicazione compilata con Dqlite può funzionare come un cluster tollerante agli errori autosufficiente, indipendente da DBMS esterni. In pratica Dqlite viene utilizzato da Canonical nel suo sistema di gestione dei contenitori LXD. Tra gli ambiti di applicazione della biblioteca viene menzionata anche la creazione di dispositivi e processori di Internet of Things tolleranti ai guasti nei sistemi
bordo- calcoli.

Per garantire la coerenza nella replica dei dati, viene utilizzato un metodo di consenso basato su algoritmi Raft, che viene utilizzato in progetti come etcd, RethinkDB, CockroachDB e OpenDaylight. Dqlite utilizza la propria implementazione asincrona Mestiere, scritto in linguaggio C. Le librerie già pronte vengono utilizzate per multiplexare l'elaborazione delle connessioni e organizzare il lancio delle coroutine libuv и libco.

Rispetto ad un progetto simile rqliteDqlite fornisce un supporto transazionale completo, può comunicare con qualsiasi progetto C, consente l'uso della funzione time() e utilizza la replica basata su frame invece della replica basata su traduzione SQL.

Caratteristiche di Dqlite:

  • Eseguire tutte le operazioni su disco e rete in modo asincrono;
  • Disponibilità di un test set per confermare la correttezza dei dati;
  • Basso consumo di memoria ed efficiente scambio di dati sulla rete;
  • Archiviazione permanente del database e del registro delle transazioni su disco (con possibilità di memorizzazione nella cache in memoria);
  • Recupero rapido dai guasti;
  • Client CLI stabile in linguaggio Go, che può essere utilizzato per inizializzare il database, configurare la replica e connettere/disconnettere i nodi;
  • Supporta le architetture ARM, X86, POWER e IBM Z;
  • L'implementazione dell'algoritmo Raft è ottimizzata per ridurre al minimo i ritardi durante l'esecuzione delle transazioni.

Fonte: opennet.ru

Aggiungi un commento