Canonical een belangrijke release van het project (Distributed SQLite), ontwikkelt een compatibele embedded SQL-engine met SQLite, die databasereplicatie, automatische herstel na storingen en failover-mogelijkheden via gedistribueerde handlers op meerdere knooppunten ondersteunt. De DBMS is geĆÆmplementeerd in de vorm van een C-bibliotheek die aan toepassingen kan worden gekoppeld en is beschikbaar onder de Apache 2.0-licentie (de originele SQLite wordt geleverd als openbare doman). Bindings voor de taal zijn beschikbaar .
De bibliotheek is een uitbreiding op de bestaande SQLite-codebasis en voegt ondersteuning toe voor netwerken om meerdere exemplaren van de toepassing, die op verschillende hosts draaien, aan elkaar te koppelen. Een met Dqlite-gecompileerde toepassing kan functioneren als een zelfstandige, fouttolerante cluster, onafhankelijk van externe DBMS. In de praktijk wordt Dqlite gebruikt door Canonical in het containerbeheersysteem . Tot de toepassingsgebieden van de bibliotheek behoren ook de ontwikkeling van fouttolerante Internet-of-Things-apparaten en gateways in systemen
.
Om consistentie bij databasereplicatie te waarborgen, wordt een consensusmethode gebruikt op basis van het -algoritme, dat wordt toegepast in projecten zoals etcd, RethinkDB, CockroachDB en OpenDaylight. In Dqlite wordt een eigen asynchrone implementatie van , geschreven in de programmeertaal C. Voor het multiplexen van verbindingen en het opzetten van co-routines worden kant-en-klare bibliotheken gebruikt en .
In vergelijking met een vergelijkbaar project , biedt Dqlite volledige ondersteuning voor transacties, kan koppelen aan elk project in de programTaal C, maakt gebruik van de functie time() en past frame-gebaseerde replicatie toe in plaats van replicatie op basis van SQL-uitdrukkingen.
Kenmerken van Dqlite:
- Uitvoering van alle schijf- en netwerkoperaties in asynchrone modus;
- Beschikbaarheid van een testset om de gegevensintegriteit te bevestigen;
- Laag geheugenverbruik en efficiƫnte gegevensoverdracht via het netwerk;
- Duurzaam opslaan van de database en logboeken op schijf (met mogelijkheid tot cachen in het geheugen);
- Snelle herstel na storingen;
- Stabiele CLI-client in de programmeertaal Go, die kan worden gebruikt voor het initialiseren van de database, het configureren van replicatie en het aansluiten/afkoppelen van knooppunten;
- Ondersteuning voor architecturen ARM, X86, POWER en IBM Z;
- De implementatie van het Raft-algoritme is geoptimaliseerd om vertragingen bij het vastleggen van transacties te minimaliseren.
Bron: opennet.ru
