Dezvoltatorii SQLite dezvoltă backend-ul HC-tree cu suport pentru operațiuni de scriere concurente

Dezvoltatorii proiectului SQLite au început testarea unui backend experimental HCtree, care suportă blocarea la nivel de rânduri (row) și oferă un nivel înalt de paralelizare în procesarea interogărilor. Noul backend este destinat îmbunătățirii eficienței utilizării SQLite în sistemele client-server care trebuie să gestioneze un număr mare de interogări simultane la baza de date pentru scriere.

Structurile b-tree, utilizate inițial în SQLite pentru stocarea datelor, nu sunt concepute pentru un astfel de tip de încărcare, ceea ce limitează SQLite la capacitatea de a scrie doar într-un singur fir de execuție. Ca parte a unui experiment, dezvoltatorii au început să dezvolte o soluție alternativă folosind structura HC-tree, mai potrivită pentru paralelizarea operațiunilor de scriere.

Pentru a organiza execuția simultană a mai multor operațiuni în HCtree, înregistrările folosesc un mecanism de separare a tranzacțiilor, care utilizează blocări la nivel de pagini și este similar cu MVCC (managementul concurent al versiunilor multiple), dar folosește verificări ale tranzacțiilor bazate pe chei și intervale de chei în loc de seturi de pagini. Operațiunile de citire și scriere se desfășoară în raport cu un snapshot al bazei de date, modificările căruia devin vizibile în baza de date principală doar după finalizarea tranzacției.

Clienții pot utiliza trei operațiuni pentru deschiderea tranzacțiilor:

  • „BEGIN” — tranzacțiile nu iau în considerare datele de acces ale altor clienți. Dacă în cadrul unei tranzacții sunt efectuate operațiuni de scriere, tranzacția poate fi confirmată doar dacă, în timpul desfășurării acesteia, nu au avut loc alte operațiuni de scriere în baza de date.
  • „BEGIN CONCURRENT” — tranzacțiile colectează informații despre accesul altor clienți. Dacă în cadrul unei tranzacții sunt efectuate operațiuni de scriere, tranzacția poate fi confirmată dacă, de la crearea snapshot-ului, au fost confirmate alte tranzacții în baza de date.
  • „BEGIN EXCLUSIVE” — după deschiderea tranzacției, blochează operațiunile din alte tranzacții până la finalizarea acesteia.

HCtree suportă replicarea de tip „master-slave”, permițând transferul tranzacțiilor către o altă bază de date și menținerea bazelor de date secundare într-o stare sincronizată cu baza de date principală. HCtree, de asemenea, elimină limita de dimensiune a bazei de date — în loc de identificatori de pagini 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 tebibyte la 1 exbibyte (un milion tebibyte). Se așteaptă ca performanța SQLite cu backend-ul HCtree să nu fie mai mică decât cea a backend-ului clasic pe un singur fir. Clienții SQLite care suportă HCtree vor putea accesa atât baza de date bazată pe structura HC-tree, cât și vechile baze de date SQLite.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster