Questo sembra il tipo di problema che deve essere stato risolto elegantemente molto tempo fa, ma non ho la più pallida idea di come farlo su Google e trovarlo.
Supponiamo che tu stia mantenendo un ampio sistema legacy, che ha una grande raccolta di dati (decine di GB) di vari formati, inclusi XML e due diversi formati di configurazione interni. Supponiamo inoltre che ci siano regole astratte che governano i valori che questi file possono o non possono contenere.
ESEMPIO: il file A definisce i dati matematici grezzi relativi all'aerodinamica di un'auto per il consumo del componente fisico del sistema. Il file B contiene alcuni valori del File A in una gerarchia XML facilmente accessibile per il consumo di un diverso componente del sistema. Esiste quindi una regola astratta (o un vincolo) tale che i valori del file B devono corrispondere ai valori del file A.
Questo è probabilmente il vincolo più semplice che può essere specificato, ma in pratica i vincoli tra i file possono diventare davvero molto complicati.
Qual è il metodo migliore per gestire questi vincoli tra file di formati arbitrari, a meno di migrarli a un RDBMS (che semplicemente non è fattibile per il prossimo futuro)? Questo problema è già stato risolto?
Per essere più specifici, mi aspetterei che la soluzione produca almeno notifiche di vincoli violati; la soluzione non ha bisogno di risolvere i vincoli.
==============================
Strutture di file di esempio
File A (JeepWrangler2011.emv):
MODEL JeepWrangler2011
{
EsotericMathValueX 11.1
EsotericMathValueY 22.2
EsotericMathValueZ 33.3
}
File B (JeepWrangler2011.xml):
<model name="JeepWrangler2011">
<!--These values must correspond File A's EsotericMathValues-->
<modelExtent x="11.1" y="22.2" z="33.3"/>
[...]
</model>
EDIT: Riflettendo su questo problema, mi sembra che una soluzione software richiederebbe qualcosa di simile al seguente:
- Sviluppa un linguaggio astratto per descrivere la struttura di formati arbitrari.
- Sviluppa un linguaggio astratto per descrivere i vincoli tra i file.
- Sviluppa uno strumento che utilizza le descrizioni struttura-formato (elemento 1), le dichiarazioni-vincolo (elemento 2) e un file che esegue il mapping di vari file (indicati da percorsi di file) in una dichiarazione struttura-formato e produce un elenco dei vincoli violati.
È un problema affascinante e non banale.