Sto progettando un'applicazione web con Django come back-end. Panoramica del sistema è la seguente
-
I dati vengono raccolti dall'utente collegato a entità diverse. Esempio: impianto, progetto, macchina, test, ecc.
-
I blocchi di configurazione (file JSON con versione consolidata, completamente autonoma, datata e con versione) sono creati dall'utente selezionando diverse istanze delle entità precedenti in un pacchetto.
-
Il blocco di configurazione viene inviato a un server API automatizzato, che genera al volo un API per detto blocco.
Sto provando a modellare la struttura del database nel passaggio 1.
Dettagli noti
- Diverse classi di entità. Ex. Impianto, Progetto, Macchina, ecc. Sono conosciuti in anticipo e sono corretti.
Tutto il resto è sconosciuto. Non conosco i dati nelle entità, i collegamenti tra loro, ecc.
Ho in programma Postgres dell'utente per i dati relazionali ricercabili e un database di documenti, CouchDB per gestire la parte dello schema di dati sconosciuti.
Architettura consigliata
Ho in programma di avere tabelle template per entità diverse, in un database Postgres, dove l'amministratore definisce un set di modelli per i dati che devono essere compilati dall'utente. Il modello è un documento JSON, con un protocollo per la definizione di diversi campi che l'utente compilerà.
La mia interfaccia utente leggerà il documento JSON e genererà al volo i componenti dell'interfaccia utente richiesti. Attualmente il piano è di creare un componente di reazione.
Ho diviso i dati dell'utente nelle seguenti categorie.
Validated Manual Input
Check Box
Selection from a list
Selection from a set of linked lists (Ex. State selection, then City selection, etc.)
Link to other documents (Ex. Location of a machine in a particular plant)
Ho in programma di avere un protocollo nel documento modello JSON che il processore UI comprenderà e arricchirà in modo appropriato l'interfaccia utente, eseguendo le chiamate API REST necessarie al back-end in base ai puntatori nel documento JSON.
Quindi, gli amministratori preimpostano un elenco di modelli. L'interfaccia utente converte i modelli in moduli di input dell'utente. Il sistema acquisisce i dati dai moduli e genera i dati rilevanti nel database Postgres e Document (CouchDB).
L'idea è di avere un set di documenti collegati nel database del documento, con lo schema definito dall'amministratore e un elenco di tabelle collegate staticamente nei postgres che incapsulano le relazioni note tra le entità.
L'architettura di cui sopra è un progetto abbastanza buono, come in, è un buon metodo per risolvere il problema della gestione dei dati senza conoscere lo schema prima della mano ??