V SQLite již fungují na backendu HCTree s podporou paralelních zápisů

SQLite

je ACID-kompatibilní systém pro správu relačních databází, obsažený v relativně malé knihovně napsané v C

Vývojáři projektu SQLite začali testovat experimentální backend HCtree , který podporuje zamykání na úrovni řádků a poskytuje vysokou úroveň paralelismu při zpracování dotazů.

Pokud jde o nový backend, na kterém pracují, uvádí se, že jeho cílem je zlepšit efektivitu používání SQLite v systémech klient-server , které musí zpracovávat velké množství simultánních požadavků na zápis do databáze.

Struktury b-tree původně používané v SQLite k ukládání dat nejsou pro tento typ zátěže navrženy , což omezuje SQLite na zápis pouze do jedné sekvence. Jako experiment začali vývojáři vyvíjet alternativní řešení, které pro ukládání používá struktury HCtree, jež jsou vhodnější pro paralelizaci operací zápisu.

Projekt HC-tree (hctree) je pokusem o vývoj nového databázového backendu, který vylepšuje běžný SQLite takto:

Vylepšená souběžnost: Použití rozšíření begin-concurrent to mění tak, aby to mohlo běžet souběžně s optimistickým zamykáním na úrovni stránky. To mírně zlepšuje souběžnost, ale zamykání na úrovni stránky dokáže detekovat konflikty mezi logicky nezávislými transakcemi a operace COMMIT je stále nutné serializovat.

Podpora replikace: Stock SQLite podporuje rozšíření relace , které umožňuje serializaci obsahu potvrzené transakce pro přenos a aplikaci do druhé databáze. Hctree integruje toto do backendu databáze a přidává podporu pro aplikaci takových transakcí na databáze sledujících v konfiguracích leader-follower. V tomto případě lze transakce přijaté z databáze leader aplikovat rychleji a s vyšší souběžností než ty, které byly původně aplikovány na databázi leader, protože není vyžadováno ověření transakcí.

Odstranění omezení velikosti databáze: Stock SQLite používá 32bitové číslování stránek. Při výchozí velikosti stránky 4 KiB to vede k maximální velikosti databáze 2^44 bajtů neboli 16 TiB.

Pro zpracování více operací současně používají záznamy HCtree mechanismus oddělení transakcí , který využívá zámky na úrovni stránek, podobné MVCC (Multi-Version Contention Control), ale používá řízení transakcí založené na rozsazích klíčů a rozsazích klíčů místo sad stránek.

Operace čtení a zápisu se provádějí vzhledem ke snímku databáze, jehož změny jsou viditelné v hlavní databázi až po dokončení transakce.

Klienti mohou k otevření transakcí použít tři operace:

  • «ZAČÍT«: Transakce nezohledňují přístupové údaje ostatních zákazníků. Jsou-li operace zápisu prováděny v rámci transakce, lze transakci potvrdit pouze tehdy, pokud v době jejího provádění nebyly do databáze žádné jiné operace zápisu.
    «ZAČNĚTE SOUČASNĚ«: Transakce shromažďují informace o přístupu jiných klientů. Pokud jsou v rámci transakce prováděny operace zápisu, lze transakci potvrdit, pokud byly do databáze od vytvoření snímku potvrzeny jiné transakce.
    «ZAČNĚTE EXKLUZIVNĚ«: po otevření transakce zablokuje operace ostatních transakcí, dokud nebude dokončena.

HCtree podporuje replikaci master-slave, která umožňuje přenášet 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é stránky používá HCtree 48bitové identifikátory, 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 bude minimálně tak dobrý jako u klasického jednovláknového backendu. Klienti SQLite s podporou HCtree budou mít přístup jak k databázím stromu HC, tak ke starším databázím SQLite.

Zdroj: https://sqlite.org/


Přidat jako preferovaný zdroj v Googlu