De ontwikkelaars van SQLite ontwikkelen de backend HC-tree met ondersteuning voor parallelle schrijfoperaties.

De ontwikkelaars van het SQLite-project zijn begonnen met het testen van een experimentele backend, HCtree, die row-level locking ondersteunt en een hoog niveau van parallelisatie biedt bij het verwerken van verzoeken. De nieuwe backend is gericht op het verbeteren van de efficiëntie van SQLite in client-server systemen, waar een groot aantal gelijktijdige schrijfverzoeken aan de database moet worden afgehandeld.

De b-tree structuren, die oorspronkelijk in SQLite werden gebruikt voor het opslaan van gegevens, zijn niet ontworpen voor deze soorten belasting, wat de mogelijkheden van SQLite beperkt tot schrijven in één thread. Als experiment zijn de ontwikkelaars begonnen met het ontwikkelen van een alternatieve oplossing, die gebruik maakt van de HC-tree structuren, die beter geschikt zijn voor het parallel verwerken van schrijfoperaties.

Voor het gelijktijdig uitvoeren van meerdere schrijfoperaties in HCtree wordt een transactie-splitsingsmechanisme toegepast, dat paginalock gebruikt en lijkt op MVCC (multi-version concurrency control), maar transacties controleert op basis van sleutels en sleuteldomeinen in plaats van paginagroepen. Lezen en schrijven gebeurt met een snapshot van de database, waarvan de wijzigingen pas zichtbaar worden in de hoofd database na de voltooiing van de transactie.

Klanten kunnen drie transactiebewakingsoperaties gebruiken:

  • ‘BEGIN’ — transacties houden geen rekening met de gegevens over de toegang van andere klanten. Wanneer er binnen een transactie schrijfoperaties worden uitgevoerd, kan de transactie alleen worden vastgelegd als er tijdens de uitvoering daarvan geen andere schrijfoperaties in de database zijn geweest.
  • ‘BEGIN CONCURRENT’ — transacties verzamelen informatie over de toegang van andere klanten. Wanneer er binnen een transactie schrijfoperaties worden uitgevoerd, kan de transactie worden vastgelegd als er sinds het maken van het snapshot andere transacties in de database zijn vastgelegd.
  • ‘BEGIN EXCLUSIVE’ — na de opening van de transactie blokkeert deze de operaties van andere transacties tot zijn voltooiing.

HCtree ondersteunt master-slave replicatie, waarmee transacties naar een andere database kunnen worden verplaatst en secundaire databases in een gesynchroniseerde staat met de primaire database kunnen worden gehouden. HCtree heft ook de beperking op de grootte van de database — in plaats van 32-bits pagina-ID's worden in HCtree 48-bits ID's toegepast, wat de maximale grootte van de database verhoogt van 16 tebibyte tot 1 exbibyte (miljoen tebibyte). De verwachting is dat de prestaties van SQLite met de HCtree backend niet lager zullen zijn dan die van de klassieke single-threaded backend. SQLite-clients met ondersteuning voor HCtree kunnen zowel toegang krijgen tot databases op basis van de HC-tree structuur als tot oudere SQLite-databases.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster