Vývojáři SQLite rozvíjejí backend HC-tree s podporou paralelních zápisových operací

Vývojáři projektu SQLite zahájili testování experimentálního backendu HCtree, který podporuje zámky na úrovni řádků a zajišťuje vysokou úroveň paralelizace při zpracování dotazů. Nový backend je zaměřen na zvýšení efektivity využití SQLite v klient-server systémech, kde je třeba zpracovávat velké množství simultánních zápisových dotazů do databáze.

Struktury b-tree, původně používané v SQLite pro ukládání dat, nejsou přizpůsobeny takovému zatížení, což omezuje SQLite na možnost zápisu pouze v jednom vlákně. Jako experiment začali vývojáři rozvíjet alternativní řešení, které používá pro skladování strukturu HC-tree, vhodnější pro paralelizaci zápisových operací.

Pro organizaci paralelního provádění více zápisových operací v HCtree se používá mechanismus dělení transakcí, který využívá zámky na úrovni stránek a je podobný MVCC (víceverzní řízení současného přístupu), ale používá kontroly transakcí na základě klíčů a rozsahů klíčů namísto sad stránek. Operace čtení a zápisu se provádějí vázány na snapshot databáze, jehož změny se stanou viditelnými v hlavní databázi až po dokončení transakce.

Klienti mohou použít tři operace pro zahájení transakcí:

  • „BEGIN“ — transakce neberou v úvahu údaje o přístupu jiných klientů. Pokud jsou v rámci transakce prováděny zápisové operace, transakce může být potvrzena pouze pokud během jejího provádění nedošlo k žádným jiným zápisovým operacím v databázi.
  • „BEGIN CONCURRENT“ — transakce shromažďují informace o přístupu jiných klientů. Pokud jsou v rámci transakce prováděny zápisové operace, transakce může být potvrzena, pokud od doby vytvoření snapshotu v databázi byly potvrzeny jiné transakce.
  • „BEGIN EXCLUSIVE“ — po otevření transakce zablokuje operace z jiných transakcí až do svého dokončení.

HCtree podporuje replikaci ve stylu „master-slave“, což umožňuje přenášet transakce do jiného databázového systému a udržovat sekundární databáze ve stavu synchronizovaném s hlavní databází. HCtree také odstraňuje omezení velikosti databáze — místo 32bitových identifikátorů stránkových dat používá HCtree 48bitové, což zvyšuje maximální velikost databáze ze 16 tebibyte na 1 exbibyte (milion tebibyte). Očekává se, že výkon SQLite s backendem HCtree nebude nižší než u klasického jednovláknového backendu. Klienti SQLite s podporou HCtree budou moci přistupovat jak k databázím založeným na struktuře HC-tree, tak k starým databázím SQLite.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster