Forrige uke Canonical kunngjorde lanseringen av en større versjon av Dqlite 1.0-prosjektet, du utvikler en SQL-motor Innebygd SQLite-kompatibel som støtter datareplikering, automatisk katastrofegjenoppretting og feiltoleranse ved å strekke seg over flere noder.
Dqlite er et C-bibliotek Den implementerer en replikert og SQL-databasmotor med høy tilgjengelighet og automatisk failover. Forkortelsen "dqlite" står for "Distribuert SQLite", som betyr at dqlite utvider SQLite med en nettverksprotokoll som kan koble flere forekomster av applikasjonen din og få dem til å fungere som en svært tilgjengelig klynge, uten avhengighet av eksterne databaser.
Som nevnt DBMS er implementert i form av et C-bibliotek knyttet til applikasjoner og distribueres under Apache 2.0-lisensen (den opprinnelige SQLite tilbys i det offentlige området). Biblioteket er et plugin på grunnlag av eksisterende SQLite-kode, som legger til nettverksprotokollstøtte for å koble flere forekomster av applikasjonen som kjører på forskjellige verter.
Et program bygget med Dqlite kan fungere som en failover-klynge ved autonom feil, uavhengig av ekstern DBMS.
I praksis, Canonical bruker Dqlite i LXD container management system. Blant bruksområdene i biblioteket nevnes også opprettelsen av feiltolerante Internet of Things-enheter og prosessorer i Edge-datasystemer.
For å sikre konsistens i datareplikering brukes en konsensusmetode basert på Raft-algoritmen, som brukes i prosjekter som etcd, RethinkDB, CockroachDB og OpenDaylight. Dqlite bruker sin egen asynkrone implementering av C-flåte, skrevet i C.
For å multiplexere forbindelsesbehandling og organisere lanseringen av coroutines, brukes de forberedte bibliotekene libuv og libco.
Sammenlignet med et lignende rqlite-prosjekt, gir Dqlite full transaksjonsstøtte, kan den kommunisere med ethvert C-prosjekt, lar deg bruke time () -funksjonen, og bruker rammebasert replikering i stedet for SQL-uttrykk oversettelsesbasert replikering.
Av funksjonene som kan fremheves i Dqlite er følgende:
- Utfør alle disk- og nettverksoperasjoner i asynkron modus
- Tilstedeværelsen av et sett med tester for å bekrefte nøyaktigheten av dataene
- Lavt minneforbruk og effektiv datautveksling over nettverket
- Permanent databaselagrings- og transaksjonslogg (med lagringsbuformulering i minnet)
- Rask gjenoppretting etter feil
- Stabil CLI-klient i Go-språket, som kan brukes til å initialisere databasen, konfigurere replikering og koble til / koble fra noder
- Støtte for ARM-, X86-, POWER- og IBM Z-arkitekturer
- Implementeringen av Raft-algoritmen er optimalisert for å minimere transaksjonsforsinkelse.
- Asynkron implementering av enkelt tråder med libuv som en hendelsessløyfe.
- Tilpasset trådprotokoll optimalisert for SQLite-primitive og datatyper.
- Datareplikering basert på Raft-algoritmen og effektiv implementering i C-raft.
Hvordan installere Dqlite på Ubuntu og derivater?
Canonical gir informasjon om hvordan du kan bygge en klient for interaksjon med Dqlite, du kan konsultere dette I den følgende lenken.
Nå som for å installere biblioteket på systemet, Dette kan installeres på to måter for de som er Ubuntu-brukere eller noe annet avledet av det. Canonical gir en PPA hvorfra det kan fås på en ganske enkel måte.
Denne PPA kan legges til fra en terminal og utføre følgende kommandoer i den:
sudo add-apt-repository ppa:dqlite/v1 sudo apt-get update sudo apt-get install libdqlite-dev
Den andre metoden for å installere dette biblioteket er ved å kompilere av dette på systemet, så dette er en mer generell metode for både Ubuntu og andre Linux-distribusjoner.
For å gjøre dette trenger de bare å åpne en terminal og utføre følgende kommandoer:
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 alle nødvendige biblioteker er installert, kan du kjøre for å bygge det delte biblioteket dqlite:
autoreconf -i ./configure make sudo make install