Företaget Canonical Betydande lansering av projektet (Distributed SQLite), som utvecklar en SQLite-kompatibel inbäddad SQL-motor som stödjer datareplication, automatisk återställning efter avbrott och säkerställer redundans genom att sprida hanterare över flera noder. Databashanteringssystemet är implementerat i form av ett C-bibliotek som kopplas till applikationer och släpps under Apache 2.0-licensen (den ursprungliga SQLite distribueras som offentlig domän). Bindningar för språket finns tillgängliga. .
Biblioteket är ett tillägg till den befintliga SQLite-koden som lägger till stöd för nätverksprotokoll för att koppla samman flera instanser av applikationen som körs på olika värdar. En applikation som byggts med Dqlite kan fungera som en självbärande redundanskluster utan att vara beroende av externa databashanteringssystem. I praktiken används Dqlite av Canonical i containerhanteringssystemet. Inom områden som bibliotekets tillämpning nämns även skapandet av redundanta Internet of Things-enheter och bearbetare i system
.
För att säkerställa konsistens vid datareplication tillämpas en konsensusmetod baserad på algoritmen , som används i projekt som etcd, RethinkDB, CockroachDB och OpenDaylight. I Dqlite används en egen asynkron implementation av , skriven i C. För multiplexering av anslutningsbehandling och organisering av programmets körning används färdiga bibliotek. och .
Jämfört med det liknande projektet , erbjuder Dqlite fullständigt stöd för transaktioner, kan ansluta till alla projekt skrivna i C, tillåter användning av funktionen time() och tillämpar replikation baserad på ramverk istället för replikation baserad på SQL-uttryck.
Funktioner hos Dqlite:
- Utförande av alla disk- och nätverksoperationer i asynkront läge;
- Tillgång till en testuppsättning för att bekräfta datakorrekthet;
- Lågt minnesutnyttjande och effektiv datakommunikation över nätverket;
- Konsistent lagring av databasen och transaktionsloggen på disken (med möjlighet till caching i minnet);
- Snabb återställning efter avbrott;
- En stabil CLI-klient skriven i Go, som kan användas för att initiera databasen, ställa in replikation och koppla ansluta/koppla från noder;
- Stöd för ARM-, X86-, POWER- och IBM Z-arkitekturer;
- Genomförandet av Raft-algoritmen är optimerat för att minimera fördröjningar vid transaktionsåtaganden.
Källa: opennet.ru
