in cerca di raccomandazioni per una semplice in-memory database del server * * (senza persistenza necessario) [chiusa]

StackOverflow https://stackoverflow.com/questions/4246675

Domanda

Dovrebbe supportare più connessioni, preferibilmente tramite ODBC. I clienti saranno in esecuzione come processi separati sulla stessa macchina. Non c'è bisogno di persistenza, come i client di gestire la persistenza altrove. I clienti sono scritte in C ++ se è importante.

I dati sono abbastanza semplice, si tratta di una serie di mappe non correlate bidirezionali. L'accesso è direttamente da un valore o da una serie (between X and Y), nessun aggiornamento. Noi in realtà non serve SQL qui, quindi le soluzioni non SQL possono anche essere considerati.

L'applicazione client è multi-processo e può essere eseguito su più macchine. Ogni macchina dovrebbe avere una copia locale di tale DB, che viene aggiornata contro l'archivio centrale per i propri clienti locali.

modifiche multiple :

  1. la piattaforma è Linux
  2. disco RAM non è un'opzione per motivi di sicurezza - non vogliamo che chiunque abbia accesso alla macchina sarebbe in grado di visualizzare i dati
  3. i dati dovrebbero essere persisteva può solo in forma criptata, per cui la soluzione deve o non persistenti i dati affatto o consentire un filtro definito dall'utente / plugin per la persistenza.
È stato utile?

Soluzione

Proprio a causa della mia familiarità con esso, vorrei andare con mysql. Per usarlo come memoria in memoria uso di database come il tipo di tabella. Redis è un database NoSQL in memoria che probabilmente sarebbe una misura perfetta per questo (Si corre in memoria, con la scrittura del disco per la persistenza solo che può essere disabilitata).

Altri suggerimenti

Qual è il motivo particolare per non usare SQLite con un db RAM aperto?

disco RAM non è un'opzione per motivi di sicurezza - non vogliamo che chiunque abbia accesso alla macchina sarebbe in grado di visualizzare i dati

Sei fuori di fortuna. Chiunque abbia accesso alla macchina in grado di visualizzare i dati di / proc / $ PID / mem comunque.

Se stai parlando accesso non root di utilizzo / tmp / $ directory / metodo con chmod 700.

Ecco un trucco si può usare sotto Linux, è chiamato "Lazy smontare".

  1. Montare un qualche tmpfs
  2. Messa in qualche processo (es) di usarlo, che chdir () in quella directory. È possibile utilizzare un'istanza di MySQL; mysql fa sempre un chdir nella directory dei dati.
  3. Dopo il processo è avviato con successo, nello smontare i tmpfs con l'opzione -l (pigro).

Ora esiste il tmpfs ancora e continuerà ad esistere finché processo (es) sono accedervi, ma non è possibile accedervi da processi indipendenti più in quanto non è più presente nel suo mount-point.

Si noti che ciò non si ferma radice di ottenere i dati nelle tmpfs, appena lo rende un po 'più difficile.

Si noti inoltre che possa essere scambiato, quindi è necessario disattivare swap (o l'uso criptato swap) se assolutamente bisogno di essere non-persistente.

Boost.MultiIndex . Non una scelta ovvia, ma si basa su concetti di DB relazionali.

  

Il concetto di multi-indicizzazione sulla   stesso insieme di elementi è   preso in prestito da database relazionale   terminologia e consente la   specificazione dei dati complessi   strutture nello spirito di moltiplicare   tabelle relazionali indicizzati dove semplice   set e le mappe non sono sufficienti. Un'ampia   selezione degli indici è fornito,   modellato contenitori STL analoghi   come std :: set, std :: list e hash   set.

usare MySQL con datadir = un tmpfs che hai montato per lo scopo. Avrete bisogno di cucinare un po 'script di avvio che consente di installare il database (utilizzando mysql_install_db o qualcosa del genere) in fase di avvio, naturalmente, come perderai tutti i dati.

memcached può essere una soluzione praticabile. Si tratta di un negozio valore-chiave che può essere impostato per contenere i valori per un certo periodo di tempo, è scalabile ed è semplice da installare e iniziare a utilizzare. E 'anche eseguito in tutti i tipi di ambienti. Ecco il sito wiki per ulteriori informazioni , tanto più che la pagina principale non è quasi ha utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top