SQLite-udviklere udvikler HC-træ-backend med understøttelse af parallelskrivning

SQLite-projektudviklere er begyndt at teste en eksperimentel HCtree-backend, der understøtter rækkeniveaulåsning og giver et højt niveau af parallelisering ved behandling af forespørgsler. Den nye backend er rettet mod at forbedre effektiviteten af ​​at bruge SQLite i klient-server-systemer, der skal behandle et stort antal samtidige skriveanmodninger til databasen.

De b-træstrukturer, der oprindeligt bruges i SQLite til at gemme data, er ikke designet til denne type belastning, hvilket begrænser SQLite til kun at skrive til én tråd. Som et eksperiment begyndte udviklerne at udvikle en alternativ løsning, der bruger HC-træstrukturer til lagring, som er mere egnede til parallelisering af skriveoperationer.

For at tillade flere operationer at køre samtidigt, bruger en HCtree-post en transaktionspartitioneringsmekanisme, der bruger sideniveaulåsning og ligner MVCC (Multi-Version Concurrency Control), men bruger transaktionstjek baseret på nøgler og nøgleområder i stedet for sidesæt. Læse- og skrivehandlinger udføres i forbindelse med et database-snapshot, hvor ændringer først bliver synlige i hoveddatabasen, efter at transaktionen er gennemført.

Kunder kan bruge tre åbne transaktionsoperationer:

  • "BEGIN" - transaktioner tager ikke højde for adgangsdata for andre klienter. Hvis skriveoperationer udføres inden for en transaktion, kan transaktionen kun udføres, hvis der under udførelsen ikke var andre skriveoperationer i databasen.
  • "BEGIN CONCURRENT" - transaktioner indsamler oplysninger om andre klienters adgang. Hvis skriveoperationer udføres inden for en transaktion, kan transaktionen udføres, hvis der er foretaget andre transaktioner i databasen, siden øjebliksbilledet blev oprettet.
  • "BEGIN EKSKLUSIVT" - efter åbning af en transaktion, blokerer den operationer fra andre transaktioner, indtil den er afsluttet.

HCtree understøtter master-slave-replikering, som giver dig mulighed for at migrere transaktioner til en anden database og holde sekundære databaser synkroniseret med den primære database. HCtree fjerner også begrænsningen på databasestørrelse - i stedet for 32-bit dataside-id'er bruger HCtree 48-bit, hvilket øger den maksimale databasestørrelse fra 16 tebibyte til 1 exbibyte (millioner tebibyte). Det forventes, at ydelsen af ​​SQLite med HCtree-backend ikke vil være lavere end den klassiske single-threaded backend. SQLite-klienter med HCtree-understøttelse vil være i stand til at få adgang til både HC-træbaserede databaser og ældre SQLite-databaser.

Kilde: opennet.ru

Tilføj en kommentar