Vývojári SQLite vyvíjajú backend HC-tree s podporou paralelných zápisov

Vývojári projektu SQLite začali testovať experimentálny backend HCtree, ktorý podporuje uzamykanie na úrovni riadkov a poskytuje vysokú úroveň paralelizácie pri spracovaní dotazov. Nový backend je zameraný na zlepšenie efektívnosti používania SQLite v systémoch klient-server, ktoré musia spracovávať veľké množstvo súčasných požiadaviek na zápis do databázy.

Štruktúry b-stromu, ktoré sa natívne používajú v SQLite na ukladanie údajov, nie sú navrhnuté pre tento typ zaťaženia, čo obmedzuje SQLite na zápis iba do jedného vlákna. Ako experiment začali vývojári vyvíjať alternatívne riešenie, ktoré využíva na ukladanie štruktúry HC-strom, ktoré sú vhodnejšie na paralelizáciu operácií zápisu.

Aby sa umožnilo súbežné spustenie viacerých operácií, záznam HCtree používa mechanizmus rozdeľovania transakcií, ktorý používa uzamykanie na úrovni stránky a je podobný MVCC (Multi-Version Concurrency Control), ale namiesto sád stránok používa kontroly transakcií založené na kľúčoch a rozsahoch kľúčov. Operácie čítania a zápisu sa vykonávajú v spojení so snímkou ​​databázy, ktorej zmeny sú viditeľné v hlavnej databáze až po dokončení transakcie.

Klienti môžu využiť tri otvorené transakcie:

  • “BEGIN”—transakcie nezohľadňujú prístupové údaje iných klientov. Ak sa v rámci transakcie vykonávajú operácie zápisu, transakcia môže byť potvrdená iba vtedy, ak počas jej vykonávania neboli v databáze žiadne iné operácie zápisu.
  • "ZAČIATOK SÚČASNE" - transakcie zhromažďujú informácie o prístupe iných klientov. Ak sa v rámci transakcie vykonávajú operácie zápisu, transakcia môže byť potvrdená, ak boli v databáze od vytvorenia snímky potvrdené iné transakcie.
  • „ZAČIATOK EXKLUZÍVNE“ - po otvorení transakcie zablokuje operácie z iných transakcií až do jej dokončenia.

HCtree podporuje replikáciu master-slave, ktorá vám umožňuje migrovať transakcie do inej databázy a udržiavať sekundárne databázy v synchronizácii s primárnou databázou. HCtree tiež odstraňuje obmedzenie veľkosti databázy – namiesto 32-bitových identifikátorov dátových stránok používa HCtree 48-bitové, čo zvyšuje maximálnu veľkosť databázy zo 16 tebibajtov na 1 exbibajt (milión tebibajtov). Očakáva sa, že výkon SQLite s backendom HCtree nebude nižší ako klasický jednovláknový backend. Klienti SQLite s podporou HCtree budú môcť pristupovať k databázam založeným na stromoch HC aj k starším databázam SQLite.

Zdroj: opennet.ru

Pridať komentár