Razvijalci SQLite razvijajo zaledje drevesa HC s podporo za vzporedno pisanje

Razvijalci projekta SQLite so začeli preizkušati eksperimentalno zaledje HCtree, ki podpira zaklepanje na ravni vrstice in zagotavlja visoko raven paralelizacije pri obdelavi poizvedb. Novo zaledje je namenjeno izboljšanju učinkovitosti uporabe SQLite v sistemih odjemalec-strežnik, ki morajo obdelati veliko število hkratnih zahtev za pisanje v bazo podatkov.

Strukture b-drevesa, ki se izvorno uporabljajo v SQLite za shranjevanje podatkov, niso zasnovane za to vrsto obremenitve, kar omejuje SQLite na pisanje samo v eno nit. Kot poskus so razvijalci začeli razvijati alternativno rešitev, ki za shranjevanje uporablja drevesne strukture HC, ki so bolj primerne za vzporedno pisanje.

Za omogočanje hkratnega izvajanja več operacij zapis HCtree uporablja mehanizem particioniranja transakcij, ki uporablja zaklepanje na ravni strani in je podoben MVCC (nadzor sočasne več različic), vendar uporablja preverjanja transakcij na podlagi ključev in obsegov ključev namesto naborov strani. Operacije branja in pisanja se izvajajo v povezavi s posnetkom baze podatkov, katerega spremembe postanejo vidne v glavni bazi podatkov šele po zaključku transakcije.

Stranke lahko uporabljajo tri odprte transakcijske operacije:

  • “ZAČETI”—transakcije ne upoštevajo dostopnih podatkov drugih strank. Če se operacije pisanja izvajajo znotraj transakcije, se transakcija lahko odobri le, če med njenim izvajanjem v bazi podatkov ni bilo drugih operacij pisanja.
  • "BEGIN CONCURRENT" - transakcije zbirajo podatke o dostopu drugih strank. Če se znotraj transakcije izvedejo operacije pisanja, je transakcijo mogoče potrditi, če so bile v bazi podatkov odobrene druge transakcije, odkar je bil ustvarjen posnetek.
  • “ZAČNI EKSKLUZIVNO” - po odprtju transakcije blokira operacije drugih transakcij, dokler ni zaključena.

HCtree podpira replikacijo master-slave, ki vam omogoča selitev transakcij v drugo bazo podatkov in ohranjanje sinhronizacije sekundarnih baz podatkov s primarno bazo podatkov. HCtree prav tako odpravlja omejitev glede velikosti podatkovne baze – namesto 32-bitnih identifikatorjev podatkovnih strani HCtree uporablja 48-bitne, kar poveča največjo velikost baze podatkov s 16 tebibajtov na 1 eksbibajt (milijon tebibajtov). Pričakuje se, da zmogljivost SQLite z zaledjem HCtree ne bo nižja od klasičnega enonitnega zaledja. Odjemalci SQLite s podporo za HCtree bodo lahko dostopali do podatkovnih baz, ki temeljijo na drevesu HC, in podedovanih baz podatkov SQLite.

Vir: opennet.ru

Dodaj komentar