Sto scrivendo un dispositivo Software in cui il dispositivo deve gestire molti dati. Pertanto ha un database, su NV-Ram (memoria non volatile) o su una scheda SD.
Dato che esiste un DB che posso usare, lo uso anche per archiviare configurazioni che dovrebbero sopravvivere a riavvii o perdite di alimentazione.
Fino ad ora tutto funziona bene, ma come posso evitare le configurazioni danneggiate? Usando SQLite3, posso essere relativamente sicuro, che le modifiche non siano state salvate o siano corrette. Ma cosa succede se vengono archiviati dati errati? Questo è uno scenario fattibile.
Quali tecniche sono buone per controllare un insieme di dati per coerenza?
Finora: Con (ri) avvio del dispositivo, controllo se DB detiene una configurazione e, in caso contrario, scrivo la configurazione di default del codificatore nel DB. Ci sono molti problemi con questo, controlla solo se esiste una tabella di configurazione esistente nel DB, ma non se la tabella è valida.
Un'idea che ho avuto fino ad ora, è quella di eseguire iterazioni su default-config e controllare ogni voce in config se ha l'entrie specifica, se sì controllare per datatype, se non lanciare un errore. Tuttavia, ciò non impedirebbe i dati non validi.
Esempio:
Entry "reader-port" (porta hardware su cui è collegato un dispositivo specifico)
Tipo di dati previsti - > String (esempio: "\ ttys \ com2") Dati forniti - > String ("paoghsfodgvfnamox33")
Come puoi immaginare, questo è sbagliato.
Nota: questa domanda non è specifica per la lingua. Ma oltre a questo, sto lavorando con Lua.