I sviluppatori SQLite sviluppanu backend HC-tree cù supportu per scrittura parallela

I sviluppatori di prughjetti SQLite anu cuminciatu à pruvà un backend HCtree sperimentale chì sustene u bloccu à livellu di fila è furnisce un altu livellu di parallelizazione durante u processu di e dumande. U novu backend hè destinatu à migliurà l'efficienza di l'usu di SQLite in sistemi client-server chì anu da processà un gran numaru di richieste di scrittura simultanea à a basa di dati.

E strutture b-tree usate nativamente in SQLite per almacenà e dati ùn sò micca pensati per stu tipu di carica, chì limita SQLite per scrive à un solu filu. Cum'è un esperimentu, i sviluppatori cuminciaru à sviluppà una suluzione alternativa chì usa strutture HC-tree per u almacenamentu, chì sò più adattati per parallelizà l'operazioni di scrittura.

Per permette à parechje operazioni per eseguisce simultaneamente, un record HCtree usa un mecanismu di particionamentu di transazzione chì usa un bloccu à livellu di pagina è hè simile à MVCC (Multi-Version Concurrency Control) ma usa cuntrolli di transazzione basati nantu à e chjavi è intervalli di chjave invece di set di pagine. L'operazioni di lettura è scrittura sò realizate in cunnessione cù una snapshot di basa di dati, i cambiamenti chì diventanu visibili in a basa di dati principale solu dopu chì a transazzione hè finita.

I clienti ponu aduprà trè operazioni di transazzione aperta:

  • "BEGIN" - e transazzione ùn piglianu micca in contu i dati d'accessu di altri clienti. Se l'operazioni di scrittura sò realizate in una transazzione, a transazzione pò esse impegnata solu s'ellu durante a so esecuzione ùn ci era micca altre operazioni di scrittura in a basa di dati.
  • "BEGIN CONCURRENT" - e transazzione recullanu infurmazioni nantu à l'accessu di altri clienti. Se l'operazioni di scrittura sò realizate in una transazzione, a transazzione pò esse impegnata se altre transazzione sò state impegnate in a basa di dati da quandu a snapshot hè stata creata.
  • "BEGIN EXCLUSIVE" - dopu avè apertu una transazzione, blucca l'operazioni da altre transazzione finu à ch'ella hè cumpletata.

HCtree supporta a replicazione maestru-slave, chì vi permette di migrà e transazzione à una altra basa di dati è mantene e basa di dati secundariu in sincronia cù a basa di dati primaria. HCtree elimina ancu a limitazione di a dimensione di a basa di dati - invece di identificatori di pagina di dati 32-bit, HCtree usa 48-bit, chì aumenta a dimensione massima di a basa di dati da 16 tebibyte à 1 exbibyte (milioni di tebibyte). Hè previstu chì u rendiment di SQLite cù u backend HCtree ùn serà micca più bassu di u backend classicu single-threaded. I clienti SQLite cù supportu HCtree puderanu accede à e basa di dati basati in HC-tree è basati di dati SQLite legacy.

Source: opennet.ru

Add a comment