Zhvilluesit e projektit SQLite filluan testimin e një backend-i eksperimental HCtree, i cili mbështet bllokimin në nivelin e rreshtave (row) dhe siguron një nivel të lartë të paralelizmit gjatë përpunimit të kërkesave. Backend-i i ri synon të rrisë efikasitetin e përdorimit të SQLite në sistemet klient-server, ku duhet të përpunohen shumë kërkesa të njëkohshme për shkruarje në bazën e të dhënave.
Strukturat b-tree, që në fillim ishin përdorur në SQLite për ruajtjen e të dhënave, nuk janë të dizajnuara për këtë lloj ngarkese, çka e kufizon SQLite në mundësinë e shkruarjes vetëm në një rrjedhë. Si një eksperiment, zhvilluesit filluan të zhvillojnë një zgjidhje alternative që përdor strukturën HC-tree për ruajtjen, e cila është më e përshtatshme për paralelizmin e operacioneve të shkruarjes.
Për të organizuar ekzekutimin e shumicës së operacioneve në HCtree, aplikohet një mekanizëm për ndarjen e transaksioneve, i cili përdor bllokime në nivelin e faqeve dhe është i ngjashëm me MVCC (menaxhimi me shumë versione i qasjes konkuruese), por përdor kontrollin e transaksioneve të bazuara në çelësa dhe grupe çelësash në vend të grupeve të faqeve. Operacionet e leximit dhe shkrimit kryhen në lidhje me snapshot-in e DB-së, ndërsa ndryshimet bëhen të dukshme në DB-në kryesore vetëm pas përfundimit të transaksionit.
Klientët mund të përdorin tre operacione për hapjen e transaksioneve:
- «BEGIN» â transaksionet nuk kanĂ« parasysh tĂ« dhĂ«nat mbi qasjen e klientĂ«ve tĂ« tjerĂ«. NĂ« rast se gjatĂ« ekzekutimit tĂ« operacioneve tĂ« shkrimit brenda njĂ« transaksioni, transaksioni mund tĂ« konfirmohet vetĂ«m nĂ«se gjatĂ« zhvillimit tĂ« tij nuk ka pasur operacione tĂ« tjera shkrimi nĂ« DB.
- «BEGIN CONCURRENT» â transaksionet grumbullojnĂ« informacione mbi qasjen e klientĂ«ve tĂ« tjerĂ«. NĂ« rast se gjatĂ« ekzekutimit tĂ« operacioneve tĂ« shkrimit brenda njĂ« transaksioni, transaksioni mund tĂ« konfirmohet nĂ«se qĂ« nga momenti i krijimit tĂ« snapshot-it nĂ« DB janĂ« konfirmuar transaksione tĂ« tjera.
- «FILLON EKSKLUZIV» â pas hapjes transaksioni bllokon operacionet nga transaksione tĂ« tjera deri nĂ« pĂ«rfundimin e saj.
HCtree mbĂ«shtet replikimin nĂ« stilin «master-slave», duke lejuar transferimin e transaksioneve nĂ« njĂ« DB tjetĂ«r dhe mbĂ«shtetje tĂ« DB-ve sekondare nĂ« njĂ« gjendje tĂ« sinkronizuar me DB-nĂ« kryesore. HCtree gjithashtu heq kufizimin mbi madhĂ«sinĂ« e DB-sĂ« â nĂ« vend tĂ« identifikuesve tĂ« faqeve tĂ« dhĂ«nash 32-bit, HCtree pĂ«rdor identifikues 48-bit, gjĂ« qĂ« rrit madhĂ«sinĂ« maksimale tĂ« DB-sĂ« nga 16 tebibajt nĂ« 1 eksbibajt (million tebibajt). Pritet qĂ« performanca e SQLite me backend-in HCtree tĂ« jetĂ« tĂ« paktĂ«n e njĂ«jtĂ« me backend-in klasik njĂ«-fije. KlientĂ«t e SQLite me mbĂ«shtetje pĂ«r HCtree do tĂ« kenĂ« mundĂ«si tĂ« qasje nĂ« tĂ« njĂ«jtĂ«n kohĂ« si nĂ« DB-nĂ« mbi strukturĂ«n HC-tree ashtu edhe nĂ« DB-tĂ« e vjetra SQLite.
Burimi: opennet.ru
