Förra veckan Canonical meddelade lanseringen av en större version av Dqlite 1.0-projektet, du utvecklar en SQL-motor Inbyggd SQLite-kompatibel som stöder datareplikering, automatisk katastrofåterställning och feltolerans genom att spänna över flera noder.
Dqlite är ett C-bibliotek Det implementerar en replikerad och SQL-databasmotor med hög tillgänglighet och automatisk redundans. Förkortningen "dqlite" står för "Distribuerad SQLite", vilket innebär att dqlite utökar SQLite med ett nätverksprotokoll som kan ansluta flera instanser av din applikation och få dem att fungera som ett mycket tillgängligt kluster, utan beroende av externa databaser.
Såsom nämnts DBMS implementeras i form av ett C-bibliotek kopplat till applikationer och distribueras under Apache 2.0-licensen (den ursprungliga SQLite tillhandahålls i det offentliga området). Biblioteket är ett plugin baserat på befintlig SQLite-kod, vilket ger stöd för nätverksprotokoll för att länka flera instanser av applikationen som körs på olika värdar.
En applikation byggd med Dqlite kan fungera som ett failover-kluster av autonomt misstag, oberoende av extern DBMS.
I praktiken, Canonical använder Dqlite i LXD-containerhanteringssystemet. Bland bibliotekets applikationsområden nämns också skapandet av feletoleranta enheter för Internet of Things och processorer i Edge-datorsystem.
För att säkerställa konsekvens i datareplikering används en konsensusmetod baserad på Raft-algoritmen, som används i projekt som etcd, RethinkDB, CockroachDB och OpenDaylight. Dqlite använder sin egen asynkrona C-raft-implementering, skriven i C.
För att multiplexera anslutningsbehandlingen och organisera lanseringen av coroutines används de förberedda biblioteken libuv och libco.
Jämfört med ett liknande rqlite-projekt ger Dqlite fullständigt transaktionsstöd, det kan kommunicera med vilket C-projekt som helst, låter dig använda time () -funktionen och använder rambaserad replikering istället för SQL-uttryck översättningsbaserad replikering.
Av funktionerna som kan markeras i Dqlite är följande:
- Utför alla disk- och nätverksoperationer i asynkront läge
- Förekomsten av en uppsättning tester för att bekräfta noggrannheten i uppgifterna
- Låg minnesförbrukning och effektivt datautbyte över nätverket
- Permanent lagrings- och transaktionslogg för databas (med cacheminne i minnet)
- Snabb återhämtning efter misslyckanden
- Stabil CLI-klient i Go-språket, som kan användas för att initialisera databasen, konfigurera replikering och ansluta / koppla bort noder
- Stöd för ARM-, X86-, POWER- och IBM Z-arkitekturer
- Implementeringen av Raft-algoritmen är optimerad för att minimera transaktionslatens.
- Asynkron enkel trådad implementering med libuv som en händelsesslinga.
- Anpassat trådprotokoll optimerat för SQLite-primitiver och datatyper.
- Datareplikering baserad på Raft-algoritmen och dess effektiva implementering i C-raft.
Hur installerar jag Dqlite på Ubuntu och derivat?
Canonical ger information om hur du kan bygga en klient för att interagera med Dqlite, du kan konsultera I följande länk.
Nu när det gäller att installera biblioteket på systemet, Detta kan installeras på två sätt för dem som är Ubuntu-användare eller något annat derivat av det. Canonical tillhandahåller en PPA varifrån det kan erhållas på ett ganska enkelt sätt.
Denna PPA kan läggas till från en terminal och utföra följande kommandon i den:
sudo add-apt-repository ppa:dqlite/v1 sudo apt-get update sudo apt-get install libdqlite-dev
Den andra metoden för att installera detta bibliotek är att kompilera av detta på systemet så det här är en mer allmän metod för både Ubuntu och andra Linux-distributioner.
För att göra detta behöver de bara öppna en terminal och utföra följande kommandon:
git clone --depth 100 https://github.com/canonical/sqlite.git cd sqlite ./configure --enable-replication make sudo make install cd .. git clone https://github.com/canonical/libco.git cd libco make sudo make install cd .. git clone https://github.com/canonical/raft.git cd raft autoreconf -i ./configure make sudo make install cd ..
När alla nödvändiga bibliotek är installerade kan du köra för att bygga det delade biblioteket dqlite:
autoreconf -i ./configure make sudo make install