SQLite projekti arendajad on alustanud eksperimentaalsete HCtree taustade testimist, mis toetavad ridade tasemel lukustamist ja tagavad kĂ”rge taseme töötlemise paralleelsuse pĂ€ringute kĂ€itlemisel. Uue tausta siht on suurendada SQLite tĂ”husust kliendiserveri sĂŒsteemides, kus tuleb töödelda suurt hulka samal ajal toimuvaid andmebaasi kirjutamise pĂ€ringuid.
Algusest peale SQLite-s andmete salvestamiseks kasutatud b-tree struktuurid ei ole mĂ”eldud selliseks koormuseks, mis piirab SQLite kirjutamise vĂ”imalusi ainult ĂŒhes niidis. Eksperimendi raames hakkasid arendajad arendama alternatiivset lahendust, mis kasutab salvestamiseks HC-tree struktuure, mis on rohkem sobilikud kirjutamise toimingute paralleelseks kĂ€itlemiseks.
HCtree-s kirjutamisoperatsioonide samal ajal tĂ€itmiseks kasutatakse tehingute jagamise mehhanismi, mis rakendab lehekĂŒlgede tasemel lukustusi ning on sarnane MVCC-le (mitme versiooni konkurentsi juhtimine), kuid kasutab tehingute kontrollimiseks vĂ”tmete ja vĂ”tmevahemike pĂ”hiseid kontseptsioone lehekĂŒlgede kogumite asemel. Lugemis- ja kirjutamisoperatsioonid viiakse ellu andmebaasi hetkeseisu pĂ”hjal, mille muutused on peamises andmebaasis nĂ€htavad alles pĂ€rast tehingu lĂ”petamist.
Kliendid saavad kasutada kolme tehingute avamise operatsiooni:
- «BEGIN» â tehingud ei arvesta teiste klientide juurdepÀÀsu andmeid. Kui tehingu kĂ€igus toimub kirjutamisoperatsioone, saab tehingut kinnitada ainult siis, kui selle teostamise ajal ei ole andmebaasis toimunud teisi kirjutamisoperatsioone.
- «BEGIN CONCURRENT» â tehingud koguvad teavet teiste klientide juurdepÀÀsu kohta. Kui tehingu kĂ€igus toimub kirjutamisoperatsioone, saab tehingut kinnitada, kui andmebaasis on selle hetkeseisu loomise hetkest alates kinnitatud teisi tehinguid.
- «BEGIN EXCLUSIVE» â pĂ€rast tehingu avamist lukustab see teised tehingute operatsioonid kuni oma lĂ”petamiseni.
HCtree toetab "master-slave" stiilis replikatsiooni, mis vĂ”imaldab edastada tehingud teise andmebaasi ja hoida teisi andmebaase sĂŒnkroonis pĂ”hjaandmebaasiga. HCtree kaotab andmebaasi suuruse piiri â 32-bitiste andmelehekĂŒlgede identifikaatorite asemel kasutatakse HCtree-s 48-bitiseid, mis suurendab andmebaasi maksimaalset suurust 16 tebibaitilt 1 eksbibaitini (miljon tebibaiti). Oodatakse, et SQLite jĂ”udlus HCtree taustal ei jÀÀ alla klassikalisele ĂŒhetaktilisele taustale. HCtree toe saanud SQLite kliendid saavad pöörduda nii HC-tree struktuuri pĂ”hinevate andmebaaside kui ka vanade SQLite andmebaaside poole.
Allikas: opennet.ru
