Společnost Canonical významné vydání projektu (Distributed SQLite), vyvíjející kompatibilní s SQLite vestavěný SQL engine, který podporuje replikaci dat, automatickou obnovu po haváriích a zajištění odolnosti proti chybám rozdělením zpracovatelů na více uzlů. Systém správy databází je implementován jako knihovna C připojená k aplikacím a pod licencí Apache 2.0 (původní SQLite je k dispozici jako veřejné vlastnictví). K dispozici jsou vazby pro jazyk .
Knihovna je nadstavbou nad stávající kódovou základnou SQLite, která přidává podporu síťového protokolu pro propojení několika instancí aplikace běžících na různých hostitelích. Aplikace sestavená s Dqlite může fungovat jako samostatný odolný cluster, nespoléhaající se na externí systémy správy databází. V praxi je Dqlite používán společností Canonical v systému správy kontejnerů . Mezi oblasti použití knihovny se také zmiňuje vytváření odolných zařízení internetu věcí a zpracovatelů v systémech
.
Pro zajištění konzistence při replikaci dat se používá metoda dosažení konsensu na bázi algoritmu , který je využíván v projektech jako etcd, RethinkDB, CockroachDB a OpenDaylight. V Dqlite se používá vlastní asynchronní implementace , napsaná v jazyce C. Pro multiplexaci zpracování spojení a organizaci spouštění spolupracujících programů se používají připravené knihovny a .
Ve srovnání s podobným projektem , Dqlite zajišťuje plnou podporu transakcí, může se propojit s jakýmikoli projekty v jazyce C, umožňuje použití funkce time() a používá replikaci na základě snímků místo replikace na základě přenosu SQL výrazů.
Vlastnosti Dqlite:
- Provádění všech diskových a síťových operací v asynchronním režimu;
- Existence testovacího souboru pro potvrzení správnosti dat;
- Nízká spotřeba paměti a efektivní výměna dat po síti;
- Trvalé ukládání na disku DB a logu transakcí (s možností ukládání do paměti);
- Rychlá obnova po haváriích;
- Stabilní CLI klient v jazyce Go, který lze použít k inicializaci DB, konfiguraci replikace a připojení/odpojení uzlů;
- Podpora architektur ARM, X86, POWER a IBM Z;
- Implementace algoritmu Raft byla optimalizována pro minimalizaci zpoždění při potvrzování transakcí.
Zdroj: opennet.ru
