Ho un paio di domande sulla praticità dello sviluppo di un'applicazione WPF che carica i dati in memoria da un file di testo e quindi manipola gli oggetti risultanti anziché le transazioni con un database come SQLite. Più viste avrebbero binding sull'oggetto / i risultante / i in memoria. Perseguire gli aggiornamenti del file di testo sul disco potrebbe avvenire solo all'arresto dell'app.
Il dato è un registro di radioattività memorizzato come formato .adi. ADI è un formato testuale che memorizza i dati tabulari nelle stringhe, inclusi i nomi delle colonne e i loro valori. Le righe di dati sono terminate con un tag. Esistono numerose applicazioni che analizzano questi file .adi riga per riga in una tabella di database in cui vengono letti e modificati dall'app. L'intero database può quindi essere esportato in un file .adi in cui ogni record di tabella viene serializzato in una riga di testo nel file .adi. Molti di loro utilizzano una qualche forma di database come SQL.
Il più grande registro di cui sono a conoscenza è di circa 120.000 record, ma un utente tipico potrebbe raggiungere da 60.000 a 70.000 nella loro vita. Ogni record di dati può contenere fino a 30-40 colonne tra cui una combinazione di valori stringa, intero e datetime.
Sono interessato allo sviluppo di un'app in grado di gestire circa 100.000 di tali record senza l'utilizzo di una soluzione di database come SQLite o MS SQL. Un file di testo .adi di questa grandezza dovrebbe avere una dimensione inferiore a 50 MB sul disco. Quando l'app viene caricata per la prima volta, legge il file di testo in un oggetto per il binding a una griglia. Le modifiche verranno applicate agli oggetti fino all'arresto dell'app quando vengono persistenti nel file sul disco.
-
Un oggetto basato su un file di testo di dimensioni pari a circa 50mb rischia di essere problematico se l'app è in esecuzione su una macchina Windows semi-moderna con 4 GB di memoria di sistema?
-
Lo standard ADI include molte enumerazioni. Se stavo convertendo questo file standard in un database relazionale avrei numerose tabelle di ricerca che rappresentano le enumerazioni. Ma dato l'obiettivo di sviluppare senza la necessità di una soluzione di database esterna, sto pensando di memorizzare le enumerazioni come oggetti di classe in una libreria. Ho ragione nel ritenere che un dizionario o enumerazione hard-coded non occupi nessuno spazio di memoria finché non viene chiamato?
Grazie per il tuo aiuto.