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

SQLite-prosjektutviklere har begynt å teste en eksperimentell HCtree-backend som støtter radnivålåsing og gir et høyt nivå av parallellisering ved behandling av spørringer. Den nye backend er rettet mot å forbedre effektiviteten ved bruk av SQLite i klient-server-systemer som må behandle et stort antall samtidige skriveforespørsler til databasen.

B-trestrukturene som er opprinnelig brukt i SQLite for å lagre data er ikke designet for denne typen belastning, noe som begrenser SQLite til å skrive til bare én tråd. Som et eksperiment begynte utviklerne å utvikle en alternativ løsning som bruker HC-trestrukturer for lagring, som er mer egnet for parallellisering av skriveoperasjoner.

For å tillate flere operasjoner å kjøre samtidig, bruker en HCtree-post en transaksjonspartisjoneringsmekanisme som bruker sidenivålåsing og ligner på MVCC (Multi-Version Concurrency Control), men bruker transaksjonssjekker basert på nøkler og nøkkelområder i stedet for sidesett. Lese- og skriveoperasjoner utføres i forbindelse med et øyeblikksbilde av databasen, endringer som blir synlige i hoveddatabasen først etter at transaksjonen er fullført.

Klienter kan bruke tre åpne transaksjonsoperasjoner:

  • «BEGIN» – transaksjoner tar ikke hensyn til tilgangsdata for andre klienter. Hvis skriveoperasjoner utføres i en transaksjon, kan transaksjonen bare utføres hvis det ikke var andre skriveoperasjoner i databasen under utførelsen.
  • "BEGIN CONCURRENT" - transaksjoner samler inn informasjon om tilgangen til andre klienter. Hvis skriveoperasjoner utføres i en transaksjon, kan transaksjonen utføres hvis andre transaksjoner har blitt utført i databasen siden øyeblikksbildet ble opprettet.
  • "BEGIN EKSKLUSIVT" - etter å ha åpnet en transaksjon, blokkerer den operasjoner fra andre transaksjoner til den er fullført.

HCtree støtter master-slave-replikering, som lar deg migrere transaksjoner til en annen database og holde sekundære databaser synkronisert med primærdatabasen. HCtree fjerner også begrensningen på databasestørrelse - i stedet for 32-biters datasideidentifikatorer, bruker HCtree 48-biters, som øker den maksimale databasestørrelsen fra 16 tebibyte til 1 exbibyte (millioner tebibyte). Det forventes at ytelsen til SQLite med HCtree-backend ikke vil være lavere enn den klassiske entrådede backend. SQLite-klienter med HCtree-støtte vil kunne få tilgang til både HC-trebaserte databaser og eldre SQLite-databaser.

Kilde: opennet.ru

Legg til en kommentar