Vývojáři SQLite vyvíjejí backend HC-tree s podporou paralelního zápisu

Vývojáři projektu SQLite začali testovat experimentální backend HCtree, který podporuje zamykání na úrovni řádků a poskytuje vysokou úroveň paralelizace při zpracování dotazů. Nový backend je zaměřen na zlepšení efektivity používání SQLite v systémech klient-server, které musí zpracovávat velké množství současných požadavků na zápis do databáze.

Struktury b-stromu nativně používané v SQLite k ukládání dat nejsou navrženy pro tento typ zatížení, což omezuje SQLite na zápis pouze do jednoho vlákna. Jako experiment začali vývojáři vyvíjet alternativní řešení, které používá pro ukládání struktury HC-stromů, které jsou vhodnější pro paralelizaci operací zápisu.

Aby bylo možné souběžně spouštět více operací, používá záznam HCtree mechanismus rozdělení transakcí, který používá zamykání na úrovni stránky a je podobný MVCC (Multi-Version Concurrency Control), ale místo sad stránek používá kontroly transakcí založené na klíčích a rozsahech klíčů. Operace čtení a zápisu se provádějí ve spojení se snímkem databáze, jehož změny se v hlavní databázi projeví až po dokončení transakce.

Klienti mohou využít tři otevřené transakční operace:

  • „BEGIN“ – transakce neberou v úvahu přístupové údaje ostatních klientů. Pokud jsou v rámci transakce prováděny operace zápisu, lze transakci potvrdit pouze v případě, že během jejího provádění nebyly v databázi žádné jiné operace zápisu.
  • "ZAČÁTE SOUČASNĚ" - transakce shromažďují informace o přístupu ostatních klientů. Pokud jsou v rámci transakce prováděny operace zápisu, lze transakci potvrdit, pokud byly v databázi od vytvoření snímku potvrzeny jiné transakce.
  • „ZAČÁTEK EXKLUZIVNĚ“ - po otevření transakce zablokuje operace z jiných transakcí, dokud není dokončena.

HCtree podporuje replikaci master-slave, která umožňuje migrovat transakce do jiné databáze a udržovat sekundární databáze v synchronizaci s primární databází. HCtree také odstraňuje omezení velikosti databáze – místo 32bitových identifikátorů datových stránek používá HCtree 48bitové, což zvyšuje maximální velikost databáze z 16 tebibajtů na 1 exbibajt (milion tebibajtů). 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 mít přístup jak k databázím založeným na stromech HC, tak ke starším databázím SQLite.

Zdroj: opennet.ru

Přidat komentář