SQLite Entwéckler entwéckelen HC-Bam Backend mat Ënnerstëtzung fir parallel Schreiwen

SQLite Projet Entwéckler hunn ugefaang en experimentellen HCtree Backend ze testen deen Zeilniveau Sperrung ënnerstëtzt an en héije Paralleliséierungsniveau bitt beim Veraarbechtung vun Ufroen. Den neie Backend zielt fir d'Effizienz vun der Benotzung vun SQLite a Client-Server Systemer ze verbesseren, déi eng grouss Zuel vu simultane Schreiwefroen un d'Datebank musse veraarbechten.

D'B-Bam Strukturen, déi natiirlech an SQLite benotzt gi fir Daten ze späicheren, sinn net fir dës Zort Belaaschtung entworf, wat SQLite limitéiert fir op nëmmen ee Fuedem ze schreiwen. Als Experiment hunn d'Entwéckler ugefaang eng alternativ Léisung z'entwéckelen, déi HC-Bamstrukturen fir d'Lagerung benotzt, déi méi gëeegent sinn fir Schreifoperatioune parallel ze maachen.

Fir datt verschidde Operatiounen gläichzäiteg lafen, benotzt en HCtree-Rekord en Transaktiounspartitionéierungsmechanismus deen Säiteniveau Sperrung benotzt an ass ähnlech wéi MVCC (Multi-Version Concurrency Control) awer benotzt Transaktiounschecken op Basis vu Schlësselen a Schlësselbereich amplaz Säitsets. Lies- a Schreifoperatioune ginn am Zesummenhang mat enger Datebank-Snapshot ausgefouert, Ännerungen op déi an der Haaptdatenbank sichtbar ginn nëmmen nodeems d'Transaktioun ofgeschloss ass.

Cliente kënnen dräi oppe Transaktiounsoperatioune benotzen:

  • "BEGIN" - Transaktiounen huelen net Rechnung Zougang Daten vun anere Clienten. Wann Schreifoperatioune bannent enger Transaktioun ausgefouert ginn, kann d'Transaktioun nëmmen engagéiert ginn wann et während senger Ausféierung keng aner Schreifoperatioune an der Datebank waren.
  • "BEGIN CONCURRENT" - Transaktiounen sammelen Informatiounen iwwer den Zougang vun anere Clienten. Wann Schreifoperatioune bannent enger Transaktioun ausgefouert ginn, kann d'Transaktioun engagéiert ginn wann aner Transaktiounen an der Datebank engagéiert sinn zënter dem Snapshot erstallt gouf.
  • "BEGIN EXKLUSIV" - nodeems Dir eng Transaktioun opmaacht, blockéiert se Operatioune vun aneren Transaktiounen bis se ofgeschloss ass.

HCtree ënnerstëtzt Master-Sklave Replikatioun, wat Iech erlaabt Transaktiounen op eng aner Datebank ze migréieren an sekundär Datenbanken synchroniséiert mat der primärer Datebank ze halen. HCtree läscht och d'Begrenzung vun der Datebankgréisst - amplaz vun 32-Bit Datesäitidentifizéierer, benotzt HCtree 48-Bit, wat d'maximal Datebankgréisst vu 16 Tebibyte op 1 Exbibyte (Milliounen Tebibyte) erhéicht. Et gëtt erwaart datt d'Performance vu SQLite mam HCtree Backend net méi niddereg ass wéi de klassesche Single-threaded Backend. SQLite Cliente mat HCtree Support kënnen Zougang zu béide HC-Baum-baséiert Datenbanken an legacy SQLite Datenbanken kréien.

Source: opennet.ru

Setzt e Commentaire