In SQLite lavorano già su un backend HCTree con supporto per scritture parallele

SQLite

è un sistema di gestione di database relazionali conforme ad ACID, contenuto in una libreria relativamente piccola scritta in C

Gli sviluppatori del progetto SQLite ha iniziato a testare un backend HCtree sperimentale che supporta il blocco a livello di riga e fornisce un elevato livello di parallelismo nell'elaborazione delle query.

Per quanto riguarda il nuovo backend in cui stanno lavorando, si dice che questo mira a migliorare l'efficienza dell'utilizzo di SQLite nei sistemi client-server Devono elaborare un numero elevato di richieste di scrittura simultanee nel database.

Le strutture b-tree originariamente utilizzate in SQLite per memorizzare i dati Non sono progettati per questo tipo di carico., che limita SQLite alla scrittura su un solo flusso. Come esperimento, gli sviluppatori hanno iniziato a sviluppare una soluzione alternativa che utilizza strutture HCtree per l'archiviazione, più adatte per parallelizzare le operazioni di scrittura.

Il progetto HC-tree (hctree) è un tentativo di sviluppare un nuovo database back-end che migliora il normale SQLite come segue:

Concorrenza migliorata: L'utilizzo dell'estensione begin-concurrent modifica questo in modo che possa essere eseguito contemporaneamente utilizzando il blocco ottimistico a livello di pagina. Ciò migliora in qualche modo la concorrenza, ma il blocco a livello di pagina può rilevare conflitti tra transazioni logicamente indipendenti e le operazioni COMMIT devono ancora essere serializzate.

Supporto per la replica: Stock SQLite supporta il estensione della sessione, che consente di serializzare il contenuto di una transazione di cui è stato eseguito il commit per la trasmissione e l'applicazione a un secondo database. Hctree lo integra nel back-end del database e aggiunge il supporto per l'applicazione di tali transazioni ai database follower nelle configurazioni leader-follower. In questo caso, le transazioni ricevute da un database principale possono essere applicate più velocemente e con maggiore simultaneità rispetto a quelle originariamente applicate al database principale, perché non convalida della transazione.

Eliminazione dei limiti di dimensione del database: Stock SQLite utilizza numeri di pagina a 32 bit. Utilizzando la dimensione predefinita della pagina di 4 KiB, questo porta a una dimensione massima del database di 2^44 byte o 16 TiB.

Per gestire più operazioni contemporaneamente, I log di HCtree utilizzano un meccanismo di separazione delle transazioni che utilizza blocchi a livello di pagina, simili a MVCC (controllo del contenimento di più versioni), ma utilizza controlli delle transazioni basati su intervalli di chiavi e intervalli di chiavi anziché su set di pagine.

Le operazioni di lettura e scrittura vengono eseguite in relazione allo snapshot del database, le cui modifiche diventano visibili al database principale solo dopo il completamento della transazione.

I clienti possono utilizzare tre operazioni per aprire transazioni:

  • «INIZIO«: Le transazioni non tengono conto dei dati di accesso di altri clienti. Se le operazioni di scrittura vengono eseguite all'interno di una transazione, è possibile eseguire il commit della transazione solo se non ci sono state altre operazioni di scrittura nel database durante il tempo della sua esecuzione.
    «INIZIA CONCORRENTE«: Le transazioni raccolgono informazioni sull'accesso di altri client. Se le operazioni di scrittura vengono eseguite all'interno di una transazione, è possibile eseguire il commit della transazione se altre transazioni sono state salvate nel database dopo la creazione dello snapshot.
    «INIZIA IN ESCLUSIVA«: dopo aver aperto una transazione, blocca le operazioni di altre transazioni fino al suo completamento.

HCtree supporta la replica master-slave, consentendo il trasferimento delle transazioni a un altro database e mantenendo i database secondari sincronizzati con il database primario.

HCtree rimuove anche il limite della dimensione del database: invece di identificatori di pagine di dati a 32 bit, HCtree utilizza identificatori a 48 bit, che aumentano la dimensione massima del database da 16 tebibyte a 1 exbibyte (milioni di tebibyte).

Le prestazioni di SQLite con il backend HCtree dovrebbero essere buone almeno quanto il classico backend a thread singolo. I client SQLite con supporto HCtree saranno in grado di accedere sia ai database HC-tree che ai database SQLite legacy.

fonte: https://sqlite.org/


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.