Dezvoltatorii SQLite dezvoltă backend HC-tree cu suport pentru scrieri paralele

Dezvoltatorii de proiecte SQLite au început să testeze un backend experimental HCtree care acceptă blocarea la nivel de rând și oferă un nivel ridicat de paralelizare la procesarea interogărilor. Noul backend are ca scop îmbunătățirea eficienței utilizării SQLite în sistemele client-server care trebuie să proceseze un număr mare de solicitări de scriere simultane în baza de date.

Structurile b-tree utilizate nativ în SQLite pentru a stoca date nu sunt proiectate pentru acest tip de încărcare, ceea ce limitează SQLite să scrie doar la un singur fir. Ca experiment, dezvoltatorii au început să dezvolte o soluție alternativă care utilizează structuri HC-tree pentru stocare, care sunt mai potrivite pentru paralelizarea operațiunilor de scriere.

Pentru a permite rularea simultană a mai multor operațiuni, o înregistrare HCtree folosește un mecanism de partiționare a tranzacțiilor care folosește blocarea la nivel de pagină și este similar cu MVCC (Control de concurență cu versiuni multiple), dar utilizează verificări ale tranzacțiilor bazate pe chei și intervale de chei în loc de seturi de pagini. Operațiile de citire și scriere sunt efectuate în legătură cu un instantaneu al bazei de date, modificările la care devin vizibile în baza de date principală numai după finalizarea tranzacției.

Clienții pot utiliza trei operațiuni de tranzacție deschise:

  • „ÎNCEPE” — tranzacțiile nu iau în considerare datele de acces ale altor clienți. Dacă în cadrul unei tranzacții se efectuează operațiuni de scriere, tranzacția poate fi comisă numai dacă în timpul executării acesteia nu au existat alte operațiuni de scriere în baza de date.
  • „BEGIN CONCURRENT” – tranzacțiile colectează informații despre accesul altor clienți. Dacă operațiunile de scriere sunt efectuate în cadrul unei tranzacții, tranzacția poate fi comisă dacă alte tranzacții au fost comise în baza de date de când a fost creat instantaneul.
  • „BEGIN EXCLUSIVE” - după deschiderea unei tranzacții, blochează operațiunile din alte tranzacții până când aceasta este finalizată.

HCtree acceptă replicarea master-slave, ceea ce vă permite să migrați tranzacțiile către o altă bază de date și să păstrați bazele de date secundare sincronizate cu baza de date primară. HCtree elimină, de asemenea, limitarea dimensiunii bazei de date - în loc de identificatorii de pagină de date de 32 de biți, HCtree folosește identificatori de 48 de biți, ceea ce crește dimensiunea maximă a bazei de date de la 16 tebibytes la 1 exbibyte (milioane de tebibytes). Este de așteptat ca performanța SQLite cu backend-ul HCtree să nu fie mai mică decât backend-ul clasic cu un singur thread. Clienții SQLite cu suport HCtree vor putea accesa atât bazele de date bazate pe arbore HC, cât și bazele de date SQLite vechi.

Sursa: opennet.ru

Adauga un comentariu