Dqlite 1.0, en distribuerad version av SQLite från Canonical, är tillgänglig

Kanonisk опубликовала betydande projektrelease Dqlite 1.0 (Distribuerad SQLite), som utvecklar en SQLite-kompatibel inbäddad SQL-motor som stöder datareplikering, automatisk återställning från fel och feltolerans genom att distribuera hanterare över flera noder. DBMS implementeras i form av ett C-bibliotek kopplat till applikationer och levererad av under Apache 2.0-licensen (den ursprungliga SQLite tillhandahålls i det offentliga området). Språkbindningar finns Go.

Biblioteket är ett tillägg till den befintliga SQLite-kodbasen som lägger till nätverksprotokollstöd för sammankoppling av flera instanser av en applikation som körs på olika värdar. En applikation kompilerad med Dqlite kan fungera som ett självförsörjande feltolerant kluster, oberoende av externa DBMS. I praktiken används Dqlite av Canonical i sitt containerhanteringssystem LXD. Bland tillämpningsområdena för biblioteket nämns också skapandet av feltoleranta Internet of Things-enheter och processorer i system
kant- beräkningar.

För att säkerställa konsekvens i datareplikeringen används en algoritmbaserad konsensusmetod Raft, som används i projekt som etcd, RethinkDB, CockroachDB och OpenDaylight. Dqlite använder sin egen asynkrona implementering Hantverk, skriven på C-språk. Färdiga bibliotek används för att multiplexa anslutningsbearbetning och organisera lanseringen av koroutiner libuv и libco.

Jämfört med ett liknande projekt rqlite,Dqlite ger fullständigt transaktionsstöd, kan kommunicera med vilket C-projekt som helst, tillåter användning av funktionen time() och ,använder rambaserad replikering istället för SQL-översättningsbaserad replikering.

Funktioner hos Dqlite:

  • Utför alla disk- och nätverksoperationer asynkront;
  • Tillgänglighet av en testuppsättning för att bekräfta riktigheten av data;
  • Låg minnesförbrukning och effektivt datautbyte över nätverket;
  • Permanent lagring av databasen och transaktionslogg på disk (med möjlighet till cachelagring i minnet);
  • Snabb återhämtning från fel;
  • Stabil CLI-klient i Go-språk, som kan användas för att initiera databasen, konfigurera replikering och ansluta/koppla från noder;
  • Stöder ARM, X86, POWER och IBM Z-arkitekturer;
  • Implementeringen av Raft-algoritmen är optimerad för att minimera förseningar när transaktioner genomförs.

Källa: opennet.ru

Lägg en kommentar