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

Programeri SQLite projekta započeli su testiranje eksperimentalne pozadine HCtree koja podržava zaključavanje na razini retka i pruža visoku razinu paralelizacije prilikom obrade upita. Novi backend ima za cilj poboljšati učinkovitost korištenja SQLite-a u sustavima klijent-poslužitelj koji moraju obraditi veliki broj istodobnih zahtjeva za pisanje u bazu podataka.

Strukture b-stabla koje se izvorno koriste u SQLiteu za pohranu podataka nisu dizajnirane za ovu vrstu opterećenja, što ograničava SQLite da piše samo u jednu nit. Kao eksperiment, programeri su počeli razvijati alternativno rješenje koje koristi strukture HC-stabla za pohranu, koje su prikladnije za paraleliziranje operacija pisanja.

Kako bi se omogućilo istovremeno izvođenje više operacija, HCtree zapis koristi mehanizam particioniranja transakcije koji koristi zaključavanje na razini stranice i sličan je MVCC-u (Kontrola istovremenosti više verzija), ali koristi provjere transakcija na temelju ključeva i raspona ključeva umjesto skupova stranica. Operacije čitanja i pisanja izvode se u vezi sa snimkom baze podataka, čije promjene postaju vidljive u glavnoj bazi podataka tek nakon dovršetka transakcije.

Klijenti mogu koristiti tri otvorene transakcijske operacije:

  • “POČETAK”—transakcije ne uzimaju u obzir pristupne podatke drugih klijenata. Ako se unutar transakcije izvode operacije pisanja, transakcija se može predati samo ako tijekom njezina izvođenja nije bilo drugih operacija pisanja u bazi podataka.
  • "BEGIN CONCURRENT" - transakcije prikupljaju informacije o pristupu drugih klijenata. Ako se unutar transakcije provode operacije pisanja, transakcija se može izvršiti ako su druge transakcije izvršene u bazi podataka otkad je snimka stvorena.
  • “POČNI EKSKLUZIVNO” - nakon otvaranja transakcije blokira operacije iz drugih transakcija dok se ne završi.

HCtree podržava master-slave replikaciju, što vam omogućuje migriranje transakcija u drugu bazu podataka i održavanje sinkronizacije sekundarnih baza podataka s primarnom bazom podataka. HCtree također uklanja ograničenje veličine baze podataka - umjesto 32-bitnih identifikatora podatkovne stranice, HCtree koristi 48-bitne, što povećava maksimalnu veličinu baze podataka sa 16 tebibajta na 1 eksbibajt (milijun tebibajta). Očekuje se da performanse SQLite-a s pozadinom HCtree neće biti niže od klasične pozadine s jednom niti. SQLite klijenti s podrškom za HCtree moći će pristupiti bazama podataka temeljenim na HC-stablu i naslijeđenim SQLite bazama podataka.

Izvor: opennet.ru

Dodajte komentar