SQLite programeri razvijaju pozadinu HC-stabla s podrškom za paralelno upisivanje

Programeri SQLite projekta počeli su testirati eksperimentalni HCtree backend koji podržava zaključavanje na nivou reda i pruža visok nivo paralelizacije prilikom obrade upita. Novi backend ima za cilj poboljšanje efikasnosti korištenja SQLite-a u klijent-server sistemima koji moraju obraditi veliki broj simultanih zahtjeva za pisanje u bazu podataka.

Strukture b-stabla koje se izvorno koriste u SQLite-u za pohranjivanje podataka nisu dizajnirane za ovu vrstu opterećenja, što ograničava SQLite na pisanje na samo jednu nit. Kao eksperiment, programeri su počeli da razvijaju alternativno rešenje koje koristi HC-stablo strukture za skladištenje, koje su pogodnije za paralelizaciju operacija pisanja.

Da bi se omogućilo istovremeno izvođenje više operacija, HCtree zapis koristi mehanizam particioniranja transakcija koji koristi zaključavanje na razini stranice i sličan je MVCC-u (Kontrola konkurentnosti više verzija), ali koristi provjere transakcija zasnovane na ključevima i rasponima ključeva umjesto skupova stranica. Operacije čitanja i pisanja izvode se u vezi sa snapshot-om baze podataka, čije promjene postaju vidljive u glavnoj bazi podataka tek nakon što se transakcija završi.

Klijenti mogu koristiti tri otvorene transakcije:

  • “BEGIN”—transakcije ne uzimaju u obzir pristupne podatke drugih klijenata. Ako se operacije pisanja izvode unutar transakcije, transakcija se može izvršiti samo ako tokom njenog izvođenja nije bilo drugih operacija pisanja u bazi podataka.
  • "POČNI CONCURRENT" - transakcije prikupljaju informacije o pristupu drugih klijenata. Ako se operacije pisanja izvode unutar transakcije, transakcija se može predati ako su druge transakcije predane u bazi podataka od kreiranja snimka.
  • “ZAPOČNI ISKLJUČIVO” - nakon otvaranja transakcije blokira operacije drugih transakcija dok se ne završi.

HCtree podržava master-slave replikaciju, što vam omogućava da migrirate transakcije u drugu bazu podataka i držite sekundarne baze podataka u sinhronizaciji sa primarnom bazom podataka. HCtree također uklanja ograničenje veličine baze podataka - umjesto 32-bitnih identifikatora stranica podataka, HCtree koristi 48-bitne, što povećava maksimalnu veličinu baze podataka sa 16 tebibajta na 1 eksbibajt (milion tebibajta). Očekuje se da performanse SQLite-a sa HCtree pozadinom neće biti niže od klasičnog jednonitnog pozadina. SQLite klijenti sa podrškom za HCtree moći će da pristupe i bazama podataka zasnovanim na HC stablu i starim SQLite bazama podataka.

izvor: opennet.ru

Dodajte komentar