Possiedo un'applicazione C++ Linux multi-thread che richiede una funzione di ricerca dei dati di riferimento ad alte prestazioni. Ho cercato di utilizzare un database SQLite in memoria per questo, ma non vedo un modo per farlo scalare nel mio ambiente multi-thread.È possibile ottenere un accesso multithreading scalabile a un database SQLite in memoria
La modalità di thread predefinita (serializzata) sembra soffrire di un singolo blocco a grana grossa anche quando tutte le transazioni sono di sola lettura. Inoltre, non credo di poter utilizzare la modalità multi-thread perché non riesco a creare più connessioni a un singolo database in memoria (perché ogni chiamata a sqlite3_open (": memory:", & db) crea un database di memoria).
Quindi quello che voglio sapere è: c'è qualcosa che ho perso nella documentazione ed è possibile avere più thread condividere l'accesso allo stesso database in memoria dalla mia applicazione C++.
In alternativa, c'è qualche alternativa a SQLite che potrei considerare?
Dato che la pagina di riferimento è l'unica nella documentazione sui database in memoria, non sorprende che l'abbia già letto.Non dice nulla sul fatto di non essere in grado di accedere da più thread in base alla progettazione e infatti la mia applicazione funziona bene da più thread - semplicemente non scala mentre aggiungo thread. – Fergus
Benvenuti al primo aggiornamento! Vale la pena allevare quel bicchiere di vino, penso;) – mlvljr