Kompania Canonical çlirimi i rëndësishëm i projektit (SQLite e Shpërndarë), duke zhvilluar një motor SQL të integruar të pajtueshëm me SQLite, që mbështet replikimin e të dhënave, rikuperimin automatik nga dështimet dhe sigurimin e disponueshmërisë duke shpërndarë menaxherët në disa node. DBMS është implementuar si një bibliotekë C e lidhur me aplikacionet dhe ndodhet nën licencën Apache 2.0 (SQLite origjinal ofrohet si pronë publike). Disponohen lidhje për gjuhën .
Biblioteka është një shtresë mbi bazën ekzistuese të kodit SQLite, e cila shton mbështetje për protokollin rrjetësor për lidhjen e disa instancave të aplikacionit të ekzekutuar në hoste të ndryshëm. Një aplikacion i ndërtuar me Dqlite mund të funksionojë si një klaster i disponueshëm që nuk varet nga DBMS-të e jashtme. Në praktikë, Dqlite përdoret nga Canonical në sistemin e menaxhimit të kontejnerëve . Ndër fushat e aplikimit të bibliotekës përfshihet gjithashtu krijimi i pajisjeve të disponueshme për Internetin e Gjërave dhe menaxherëve në sistemet
.
Për të siguruar koherencën gjatë replikimit të të dhënave, aplikohet një metodë konsensusi e bazuar në algoritmin , i cili përdoret në projekte të tilla si etcd, RethinkDB, CockroachDB dhe OpenDaylight. Në Dqlite aplikohet një implementim asinkron i veçantë , i shkruar në gjuhën C. Për shumëfishimin e përpunimit të lidhjeve dhe organizimin e ekzekutimit të korutinave përdoren biblioteka të gatshme dhe .
. Krahasuar me një projekt të ngjashëm , Dqlite ofron mbështetje të plotë për transaksionet, mund të lidhet me çdo projekt në gjuhën C, lejon përdorimin e funksionit time() dhe aplikon replikimin të bazuar në korniza në vend të replikimit të bazuar në transmetimin e shprehjeve SQL.
Veçoritë e Dqlite:
- Kryerja e të gjitha operacioneve disk dhe rrjet në mënyrë asinkrone;
- Prania e një grupi testesh për të konfirmuar korrektësinë e të dhënave;
- Konsumi i ulët i memories dhe shkëmbimi efektiv i të dhënave përmes rrjetit;
- Ruajtja e përhershme në disk e DB dhe logut të transaksioneve (me mundësi për memorizimin në memorje);
- Rikuperim i shpejtë pas dështimeve;
- Një klient stabil CLI në gjuhën Go, i cili mund të përdoret për të inicializuar DB, konfiguruar replikimin dhe lidhur/ndaluar node-t;
- Mbështetje për arkitekturën ARM, X86, POWER dhe IBM Z;
- Implementimi i algoritmit Raft është optimizuar për të minimizuar vonesat gjatë ngadalësimit të transaksioneve.
Burimi: opennet.ru
