SQLite'i projekti arendajad on alustanud eksperimentaalse HCtree-taustaprogrammi testimist, mis toetab rea tasemel lukustamist ja pakub päringute töötlemisel kõrgetasemelist paralleelsust. Uue taustaprogrammi eesmärk on parandada SQLite'i tõhusust klient-server süsteemides, mis käsitlevad suurt hulka samaaegseid andmebaasi kirjutamispäringuid.
Algselt SQLite'is andmesalvestuseks kasutatud b-puu struktuurid ei ole seda tüüpi töökoormuse jaoks loodud, mis piirab SQLite'i ühelõimeliste kirjutamistega. Eksperimendina hakkasid arendajad välja töötama alternatiivset lahendust, kasutades salvestamiseks HC-puu struktuure, mis sobivad paremini kirjutamisoperatsioonide paralleelseks muutmiseks.
Mitme operatsiooni samaaegse teostamise korraldamiseks kasutab HCtree tehingute jaotamise mehhanismi, mis kasutab lehekülje tasemel lukke ja sarnaneb MVCC-ga (mitme versiooni samaaegsuse kontroll), kuid kasutab tehingute kontrollimist leheküljekomplektide asemel võtmete ja võtmevahemike põhjal. Lugemis- ja kirjutamisoperatsioone teostatakse andmebaasi hetktõmmise suhtes, mille muudatused muutuvad peaandmebaasis nähtavaks alles pärast tehingu lõpuleviimist.
Kliendid saavad kasutada kolme tehingu avamise toimingut:
- "BEGIN" — tehingud ei arvesta teiste klientide juurdepääsuandmeid. Kui tehingu sees teostatakse kirjutamisoperatsioone, saab tehingu kinnitada ainult siis, kui selle täitmise ajal ei teostatud andmebaasis ühtegi teist kirjutamisoperatsiooni.
- "ALGAB SAMAAEGSELT" – tehingud koguvad teavet teiste klientide juurdepääsu kohta. Kui tehingu sees tehakse kirjutamisoperatsioone, saab tehingu kinnitada, kui pärast hetktõmmise loomist on andmebaasi kinnitatud muid tehinguid.
- "AINULT ALGUSEGA" - pärast tehingu avamist blokeerib see teiste tehingute toimingud kuni selle lõpuleviimiseni.
HCtree toetab master-slave replikatsiooni, võimaldades tehingute migreerimist teise andmebaasi ja hoides sekundaarsed andmebaasid esmase andmebaasiga sünkroniseerituna. HCtree eemaldab ka andmebaasi suuruse piirangu – 32-bitiste andmelehe identifikaatorite asemel kasutab HCtree 48-bitiseid, suurendades andmebaasi maksimaalset suurust 16 tebibaidilt 1 eksbibaidile (üks miljon tebibaiti). SQLite'i jõudlus HCtree taustaprogrammiga peaks olema võrreldav klassikalise ühelõimelise taustaprogrammi jõudlusega. HCtree toega SQLite'i kliendid saavad juurde pääseda nii HC-puu-põhistele andmebaasidele kui ka pärand-SQLite'i andmebaasidele.
Allikas: opennet.ru
