Abbiamo un'applicazione per rich client .NET abbastanza grande che attualmente usa nHibernate e Firebird embedded per la persistenza. A causa della natura dell'app, abbiamo bisogno di caricare l'intero database in memoria quando il file viene caricato, così otteniamo tutti i costi di un ORM senza molti dei benefici. Il vantaggio principale che otteniamo è la possibilità di scrivere codice di aggiornamento per la transizione della struttura dei dati tra le versioni.
Stiamo scoprendo che questa configurazione è sia lenta che intensiva in termini di memoria (non sorprendentemente, dato che non lo stiamo usando come previsto). Potremmo passare a un documento / KVP DB, ma ancora una volta, dato che non stiamo effettuando alcun caricamento o ricerca su richiesta, non sembra la soluzione giusta.
Mi sono divertito con l'idea della serializzazione binaria e archiviando in qualche modo lo spazio dei nomi di "persistenza" in modo che potessimo caricare un vecchio formato, ma sembra un approccio un po 'contorto a quello che penserei sarebbe un problema comune .
Quali sono le nostre opzioni?