Alternativa o successore di GDBM
-
22-08-2019 - |
Domanda
Abbiamo un abbiamo un href="http://www.delorie.com/gnu/docs/gdbm/gdbm.html" rel="nofollow noreferrer"> GDBM database di
Questo ha influenzato le prestazioni. I nostri test di performance (in un ambiente di test) mostrano i tempi di caricamento della pagina saltando da centinaia di millisecondi (per disco locale) a diversi secondi (su NFS, rete locale), e, a volte ottenendo alto come 30 secondi. Credo che gran parte del problema è che l'applicazione fa un sacco di letture casuali dai file GDBM, e che questi sono lenti su NFS, e questo sarà ancora peggio della produzione (in cui il front-end e back-end hanno anche più hardware di rete tra loro) e come la nostra base di dati diventa ancora più grande. Anche se questo non è un'applicazione critica, vorrei migliorare le prestazioni, e hanno alcune risorse disponibili, compreso il tempo sviluppatore di applicazioni e amministratori Unix. Il mio vincolo principale è ora hanno solo le risorse per un paio di settimane. Come la vedo io, le mie opzioni sono: Migliorare le prestazioni NFS parametri di ottimizzazione. Il mio istinto è che non otterrete molto di questo, ma mi è stato sbagliato prima, e io non so davvero molto sull'ottimizzazione NFS. Sposta in un altro database di chiave-valore, come ad esempio memcachedb o Tokyo Gabinetto Sostituire NFS con qualche altro protocollo (iSCSI è stato menzionato, ma non ho familiarità con esso). Come dovrei affrontare questo problema?
Soluzione
Non fatevi troppo appeso sulla “relazionale rispetto a non-relazionale” confronto. Sembra essere irrilevante per questo problema.
La linea l'applicazione ha attraversato è un altro: da una piccola base di dati su storage locale veloce di file, ad un ampio database accessibile attraverso la rete . Attraversando questa linea significa che si sta ora meglio servita da un sistema dedicato di gestione di database della rete di assistenza. Se il server di gestione gestisce i database relazionali non è rilevante per questo aspetto.
Per ottenere installato e funzionante in fretta, MariaDB (il successore di MySQL) è probabilmente la soluzione migliore. Se si prevede che cresce molto al di là dove è ora, si potrebbe anche metterlo in PostgreSQL poiché è lì avrà bisogno di andare alla fine in ogni caso: -)
Altri suggerimenti
Questo sembra non essere quello che si desidera ascoltare, ma onestamente, se fossi in te mi piacerebbe gettare in una tabella mysql. Non è come se fosse significato più difficile con cui lavorare, e si ottiene un sacco di vantaggi con esso, anche un protocollo di accesso remoto che in realtà è destinato per la vostra situazione, a differenza GDBM-over-NFS.
Se si vuole attaccare alle basi di dati non relazionali si potrebbe provare BDB o DJB di CDB . Ho usato sia finora e penso che quando si tratta di prestazioni di cui hanno sovraperformare GDBM.
Ma tenere la risposta di bignose in mente come anch'io penso che il collo di bottiglia potrebbe non essere la data-struttura (GDBM) che si sta utilizzando, ma l'infrastruttura.
File system I / O con file flat su una rete non è una buona idea, ma si dovrebbe non crei un server multi-threaded tcp che rende i / o, interrogare, ecc. su quella macchina, allora si restituisce i risultati indietro. Trasferire piccoli pezzi di dati non tutto il file db ..
Sto progettando un meccanismo di cache di persistenza per superare un problem.I ad alta disponibilità sarà codificarlo, in pitone.