In SQLite werken ze al aan een HCTree-backend met ondersteuning voor parallel schrijven

SQLite

is een ACID-compatibel relationeel databasebeheersysteem, opgenomen in een relatief kleine bibliotheek geschreven in C

De projectontwikkelaars SQLite is begonnen met het testen van een experimentele HCtree-backend die vergrendeling op rijniveau ondersteunt en een hoog niveau van parallellisme biedt bij het verwerken van query's.

Met betrekking tot de nieuwe backend waarin ze werken, wordt vermeld dat dit heeft tot doel de efficiëntie van het gebruik van SQLite in client-serversystemen te verbeteren Ze moeten een groot aantal gelijktijdige schrijfverzoeken naar de database verwerken.

De oorspronkelijk gebruikte b-tree-structuren in SQLite om gegevens op te slaan Ze zijn niet ontworpen voor dit type belasting., wat SQLite beperkt tot het schrijven naar slechts één stream. Als experiment begonnen de ontwikkelaars een alternatieve oplossing te ontwikkelen die HCtree-structuren gebruikt voor opslag, geschikter voor het parallelliseren van schrijfbewerkingen.

Het HC-tree (hctree) project is een poging om een ​​nieuwe database-backend te ontwikkelen die de reguliere SQLite als volgt verbetert:

Verbeterde gelijktijdigheid: Het gebruik van de begin-concurrent-extensie verandert dit zodat het gelijktijdig kan worden uitgevoerd met behulp van optimistische vergrendeling op paginaniveau. Dit verbetert de gelijktijdigheid enigszins, maar vergrendeling op paginaniveau kan conflicten tussen logisch onafhankelijke transacties detecteren, en COMMIT-bewerkingen moeten nog steeds worden geserialiseerd.

Ondersteuning voor replicatie: Stock SQLite ondersteunt de sessie verlenging, waarmee de inhoud van een vastgelegde transactie kan worden geserialiseerd voor verzending en toepassing in een tweede database. Hctree integreert dit in de database-backend en voegt ondersteuning toe voor het toepassen van dergelijke transacties op volger-databases in leider-volger-configuraties. In dit geval kunnen transacties die zijn ontvangen van een leidende database sneller en met grotere gelijktijdigheid worden toegepast dan de transacties die oorspronkelijk werden toegepast op de leidende database, omdat er geen transactie validatie.

Eliminatie van beperkingen voor de databasegrootte: Stock SQLite gebruikt 32-bits paginanummers. Met de standaardpaginagrootte van 4 KiB leidt dit tot een maximale databasegrootte van 2^44 bytes of 16 TiB.

Om meerdere bewerkingen tegelijkertijd uit te voeren, HCtree-logboeken gebruiken een transactiescheidingsmechanisme die vergrendelingen op paginaniveau gebruikt, vergelijkbaar met MVCC (multiple version containment control), maar transactiecontroles gebruikt op basis van sleutelbereiken en sleutelbereiken in plaats van paginasets.

Lees- en schrijfbewerkingen worden uitgevoerd ten opzichte van de momentopname van de database, waarvan de wijzigingen pas zichtbaar worden voor de hoofddatabase nadat de transactie is voltooid.

Klanten kunnen drie bewerkingen gebruiken om transacties te openen:

  • «BEGINNEN«: Transacties houden geen rekening met de toegangsgegevens van andere klanten. Als er binnen een transactie schrijfbewerkingen worden uitgevoerd, kan de transactie alleen worden vastgelegd als er tijdens de uitvoering ervan geen andere schrijfbewerkingen naar de database hebben plaatsgevonden.
    «BEGIN GELIJKTIJDIG«: Transacties verzamelen informatie over de toegang van andere klanten. Als er binnen een transactie schrijfbewerkingen worden uitgevoerd, kan de transactie worden vastgelegd als andere transacties zijn vastgelegd in de database sinds de momentopname is gemaakt.
    «BEGIN EXCLUSIEF«: blokkeert na het openen van een transactie de bewerkingen van andere transacties totdat deze is voltooid.

HCtree ondersteunt master-slave-replicatie, waarmee u transacties naar een andere database kunt overbrengen en secundaire databases synchroon kunt houden met de primaire database.

HCtree verwijdert ook de limiet voor de databasegrootte: in plaats van 32-bits gegevenspagina-ID's gebruikt HCtree 48-bits ID's, waardoor de maximale databasegrootte toeneemt van 16 tebibytes tot 1 exbibyte (miljoen tebibytes).

De prestaties van SQLite met de HCtree-backend zullen naar verwachting minstens zo goed zijn als de klassieke single-threaded backend. SQLite-clients met HCtree-ondersteuning hebben toegang tot zowel HC-tree-databases als verouderde SQLite-databases.

bron: https://sqlite.org/


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.