Virksomheden Canonical betydelig udgivelse af projektet (Distributed SQLite), der udvikler en SQLite-kompatibel indbygget SQL-motor, der understøtter datarapportering, automatisk fejlgendannelse og sikring af fejltolerance ved at sprede håndteringsfunktioner på flere noder. DBMS'en er implementeret som en tilknyttet C-bibliotek til applikationer og er under Apache 2.0 licens (den originale SQLite leveres som offentlig ejendom). Bindings til sprog .
Biblioteket er et lag oven på den eksisterende SQLite-kodebase, som tilføjer support til netværksprotokoller for at forbinde flere tilfælde af applikationen, der kører på forskellige værter. En Dqlite-applikation kan fungere som et selvstændigt fejltolerant klynge uden afhængighed af eksterne DBMS. I praksis anvendes Dqlite af Canonical i containerstyringssystemer . Blandt anvendelsesområderne for biblioteket nævnes også oprettelse af fejltolerante internet-of-things-enheder og behandlere i
.
For at sikre konsistens ved datarapportering anvendes en metode til at nå konsensus baseret på en algoritme , som bruges i projekter som etcd, RethinkDB, CockroachDB og OpenDaylight. I Dqlite anvendes en egen asynkron implementering af , skrevet i C. Til multiplexering af forbindelsebehandling og organisering af start af koroutiner anvendes eksisterende biblioteker og .
Sammenlignet med det lignende projekt , tilbyder Dqlite fuld støtte til transaktioner, kan forbindes til alle projekter skrevet i C, muliggør brug af funktionen time() og anvender rammebaseret replikering i stedet for SQL-udtryksspredning.
Funktioner ved Dqlite:
- Udførelse af alle disk- og netværksoperationer i asynkron tilstand;
- Tilgængeligheden af et testsæt til at bekræfte dataintegriteten;
- Lavt hukommelsesforbrug og effektiv dataudveksling over netværket;
- Vedvarende opbevaring på disk af database og transaktionslog (med mulighed for caching i hukommelsen);
- Hurtig fejlgendannelse;
- Stabil CLI-klient skrevet i Go, der kan bruges til at initialisere DB, konfigurere replikering og tilslutte/frakoble noder;
- Understøttelse af arkitekturer ARM, X86, POWER og IBM Z;
- Implementeringen af Raft-algoritmen er optimeret for at minimere forsinkelser ved bekræftelse af transaktioner.
Kilde: opennet.ru
