Imposizione dei vincoli sui documenti di dati di vari formati

1

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:

  1. Sviluppa un linguaggio astratto per descrivere la struttura di formati arbitrari.
  2. Sviluppa un linguaggio astratto per descrivere i vincoli tra i file.
  3. 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.

    
posta Christopher Berman 19.10.2012 - 18:34
fonte

1 risposta

3

Un database è la soluzione corretta a questo problema, qualsiasi altra cosa è solo una reinvenzione hacker di strumenti di database esistenti. Dovresti rivalutare il motivo per cui ritieni che questa non sia una soluzione fattibile, il suo non sarà uno sforzo maggiore di un sistema personalizzato per assicurarti che i vincoli siano soddisfatti. I database sono progettati per creare una versione della verità e servirla in qualsiasi modo ti serva.

    
risposta data 19.10.2012 - 21:24
fonte

Leggi altre domande sui tag