Gli sviluppatori di SQLite stanno sviluppando il backend HC-tree con supporto per operazioni di scrittura parallele

Gli sviluppatori del progetto SQLite hanno iniziato i test di un backend sperimentale HCtree, che supporta il blocco a livello di riga (row) e garantisce un alto livello di parallelizzazione nella gestione delle richieste. Il nuovo backend è progettato per aumentare l'efficienza di utilizzo di SQLite nei sistemi client-server, in cui è necessario gestire un elevato numero di richieste simultanee al database per operazioni di scrittura.

Le strutture b-tree, utilizzate originariamente in SQLite per l'archiviazione dei dati, non sono progettate per questo tipo di carico, limitando SQLite alla scrittura in un solo thread. Come esperimento, gli sviluppatori hanno iniziato a sviluppare una soluzione alternativa, che utilizza per l'archiviazione le strutture HC-tree, più adatte per la parallelizzazione delle operazioni di scrittura.

Per organizzare l'esecuzione simultanea di più operazioni in HCtree, viene utilizzato un meccanismo di separazione delle transazioni, che utilizza blocchi a livello di pagina e simile al MVCC (gestione della concorrenza multi-versione), ma con controlli delle transazioni basati su chiavi e intervalli di chiavi anziché su set di pagine. Le operazioni di lettura e scrittura vengono eseguite in collegamento a uno snapshot del database, il cui cambiamento diventa visibile nel database principale solo dopo il completamento della transazione.

I clienti possono utilizzare tre operazioni per aprire transazioni:

  • «BEGIN» — le transazioni non prendono in considerazione i dati di accesso di altri clienti. Se all'interno di una transazione si eseguono operazioni di scrittura, la transazione può essere confermata soltanto se non ci sono state altre operazioni di scrittura nel database durante il suo svolgimento.
  • «BEGIN CONCURRENT» — le transazioni raccolgono informazioni sull'accesso di altri clienti. Se all'interno di una transazione si eseguono operazioni di scrittura, la transazione può essere confermata se, dal momento della creazione dello snapshot, sono state confermate altre transazioni nel database.
  • «BEGIN EXCLUSIVE» — dopo aver aperto una transazione, blocca le operazioni di altre transazioni fino al suo completamento.

HCtree supporta la replicazione in stile «master-slave», consentendo il trasferimento di transazioni in un altro database e mantenendo i database secondari in uno stato sincronizzato con il database principale. HCtree rimuove anche il limite sulle dimensioni del database: invece degli identificatori di pagina dati a 32 bit, HCtree utilizza identificatori a 48 bit, aumentando la dimensione massima del database da 16 tebibyte a 1 exbibyte (un milione di tebibyte). Si prevede che le prestazioni di SQLite con il backend HCtree non siano inferiori a quelle del tradizionale backend a singolo thread. I client SQLite con supporto per HCtree potranno accedere sia ai database basati sulla struttura HC-tree, sia ai vecchi database SQLite.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster