Ho refactored un programma per rimuovere la sua dipendenza da un database sql memorizzando tutto lo stato in un modello di memoria. Tuttavia, al gestore è piaciuta la possibilità di ispezionare facilmente lo stato del dominio semplicemente eseguendo un join / filtro SQL sul database in qualsiasi momento; e desidera mantenere alcune capacità di controllo del dominio simili. Abbiamo discusso di una chiamata che scarica lo stato del modello in un file che può essere ispezionato. Non c'è molto stato - tutto può essere contenuto nella memoria - ma lo stato è abbastanza grande che abbiamo bisogno di un meccanismo che ci permetta di "recuperare" il bambino se un dato genitore preferisce l'ispezione manuale dei file.
Ho bisogno dello strumento migliore per renderlo fattibile. Stanno pensando di esportare tutto in CSV per essere letto in un DB, il che potrebbe funzionare, ma sembra che stia usando un DB solo per fare join su tipi di dati. Inoltre, il loro vecchio approccio utilizzava stringhe per join che non erano garantite come uniche e, con la mia aggiunta di oggetti aggiuntivi, il pensiero avrebbe dovuto essere messo in modo da disporre i campi del database per rappresentare i nuovi oggetti del modello (in particolare oggetti figlio dei genitori).
Ho combinato con altre idee per questo. Un'idea riguardava un file CSV e alcuni programmi leggevano nel file CSV e facevano join "sql like", ma non hanno trovato un programma che lo faccia facilmente. Ho anche giocato con un interprete java interattivo in modo da poter leggere le cose nel nostro modello e fare chiamate contro il modello, anche usando i comandi di base di Linux per scrivere "join" con awk o simili. Non sono sicuro che mi piace qualsiasi opzione però. Qualcuno ha suggerimenti per un buon modo di farlo?
P.S. Siamo in grado di eseguire SSH sui sistemi mantenuti in qualsiasi momento, ma non possiamo copiare i file da o senza autorizzazione durante la manutenzione dei sistemi live. Qualsiasi strumento utilizzato per ispezionare la memoria deve essere impacchettato con il nostro rilascio come un proprio barattolo con la giustificazione del motivo per cui lo stiamo includendo.