SQLite-utviklere utvikler HC-tree-backend med støtte for parallellskriving

SQLite-prosjektutviklere har begynt å teste den eksperimentelle HCtree-backend-en, som støtter låsing på radnivå og gir et høyt nivå av parallellisme i spørrebehandling. Den nye backend-en tar sikte på å forbedre effektiviteten til SQLite i klient-server-systemer som håndterer et stort antall samtidige databaseskriveforespørsler.

B-trestrukturene som opprinnelig ble brukt i SQLite for datalagring er ikke designet for denne typen arbeidsmengde, noe som begrenser SQLite til enkelttrådede skrivinger. Som et eksperiment begynte utviklerne å utvikle en alternativ løsning ved bruk av HC-trestrukturer for lagring, som er mer egnet for parallellisering av skriveoperasjoner.

For å organisere samtidig utførelse av flere operasjoner bruker HCtree en transaksjonspartisjoneringsmekanisme som benytter sidenivålåser og ligner på MVCC (multi-version concurrency control), men bruker transaksjonskontroller basert på nøkler og nøkkelområder i stedet for sidesett. Lese- og skriveoperasjoner utføres mot et database-øyeblikksbilde, og endringer i disse blir synlige i hoveddatabasen først etter at transaksjonen er fullført.

Klienter kan bruke tre transaksjonsåpningsoperasjoner:

  • "BEGIN" – transaksjoner tar ikke hensyn til tilgangsdata fra andre klienter. Hvis skriveoperasjoner utføres i en transaksjon, kan transaksjonen bare utføres hvis ingen andre skriveoperasjoner ble utført i databasen i løpet av tiden den ble utført.
  • "BEGIN CONCURRENT" – transaksjoner samler inn informasjon om tilgang fra andre klienter. Hvis skriveoperasjoner utføres i en transaksjon, kan transaksjonen bli iverksatt hvis andre transaksjoner har blitt iverksatt til databasen siden øyeblikksbildet ble opprettet.
  • "BEGIN EXCLUSIVE" – etter å ha åpnet en transaksjon, blokkeres operasjoner fra andre transaksjoner inntil den er fullført.

HCtree støtter master-slave-replikering, slik at transaksjoner kan migreres til en annen database og sekundære databaser holdes synkronisert med primærdatabasen. HCtree fjerner også begrensningen på databasestørrelse – i stedet for 32-bits datasideidentifikatorer bruker HCtree 48-bits, noe som øker den maksimale databasestørrelsen fra 16 tebibyte til 1 exbibyte (én million tebibyte). SQLite-ytelsen med HCtree-backend forventes å være sammenlignbar med en klassisk enkelttrådet backend. SQLite-klienter med HCtree-støtte vil kunne få tilgang til både HC-tree-baserte databaser og eldre SQLite-databaser.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster