SQLite projekti arendajad alustasid eksperimentaalse HCtree tagaplaneeringu testimist, mis toetab ridade (row) tasemel lukustamist ja tagab kõrge paralleelsuse päringute töötlemisel. Uus tagaplaneering on suunatud SQLite efektiivsuse suurendamisele kliendiserveri süsteemides, kus tuleb töödelda suurt hulka samal ajal toimuvaid andmebaasi kirjutamis päringuid.
SQLite algselt andmete salvestamiseks kasutatavad b-tree struktuurid ei ole selliseks koormuseks mõeldud, mis piirab SQLite kirjutamisvõimet ainult ühe voolu kaupa. Eksperimendi raames hakkasid arendajad arendama alternatiivset lahendust, mis kasutab andmete salvestamiseks HC-tree struktuure, mis on paremini sobilikud kirjutamisoperatsioonide paralleelseteks toiminguteks.
HCtree'i salvestustes kasutatakse mitme toimingu samaaegseks täitmiseks tehingute eraldamise mehhanismi, mis rakendab lehekülje tasemel lukustusi ja sarnaneb MVCC (mitme versiooni konkurentsi kontrollimise) süsteemiga, kuid kasutab tehingute kontrollimist põhjalikul ja võtmevahemiku alusel, mitte lehekülgede komplektide kaudu. Lugemise ja kirjutamise toimingud toimuvad andmebaasi snapshots'iga seotult ning muudatused muutuvad peamises andmebaasis nähtavaks alles pärast tehingu lõpetamist.
Kliendid saavad kasutada kolme tehingu avamise toimingut:
- «BEGIN» — tehingud ei arvestata teiste klientide juurdepääsuandmeid. Kui tehingu sees on kirjutamise toimingud, võib tehingut kinnitada ainult siis, kui selle täitmise ajal ei ole andmebaasis olnud teisi kirjutamise toiminguid.
- «BEGIN CONCURRENT» — tehingud koguvad teavet teiste klientide juurdepääsu kohta. Kui tehingu sees on kirjutamise toimingud, võib tehingut kinnitada ainult juhul, kui andmebaasis on olnud kinnitatud teisi tehinguid alates snapshots'i loomise hetkest.
- «BEGIN EXCLUSIVE» — avatud tehingu korral blokeerib see muud tehingud, kuni see on lõpule viidud.
HCtree toetab «master-slave» stiilis replikatsiooni, mis võimaldab tehingute edastamist teise andmebaasi ning hoiab sekundaarseid andmebaase sünkroonis peamise andmebaasiga. HCtree kõrvaldab ka andmebaasi suuruse piiri — 32-bitiste andmelehe identifikaatorite asemel kasutab HCtree 48-bitiseid, mis suurendab maksimaalse andmebaasi suuruse 16 tebibaitist 1 eksbibaitini (miljon tebibait). Oodatav SQLite jõudlus HCtree taustaga ei jää maha klassikalisest ühesuunalisest taustast. HCtree tugega SQLite kliendid saavad juurdepääsu nii HC-tree struktuuri andmebaasile kui ka vanadele SQLite andmebaasidele.
Allikas: opennet.ru
