Domanda

devo sviluppare un database per un ambiente unico. Non ho esperienza con la progettazione di database e potrebbe utilizzare la saggezza di tutti.

Il mio gruppo sta progettando un database per pezzo di hardware fisica e di un sistema di acquisizione dati. Abbiamo bisogno di un sistema che memorizza tutti i parametri di configurazione hardware, e tenere traccia delle modifiche a tali parametri come sono modificati dall'utente.

Il setup:

  • Abbiamo circa 200 rivelatori e circa 40 parametri associati a ciascun rivelatore. Di questi 40 parametri, ci aspettiamo solo pochi di cambiare durante il corso dell'esperimento. La maggior parte dei parametri associati ad un singolo rivelatore sono statici.
  • Noi raccogliamo dati per questo esperimento in corse a tempo. Durante queste corse, i parametri caricati nell'hardware non deve cambiare, anche se dovremmo essere in grado di modificare il database in qualsiasi momento di prepararsi per la prossima corsa. L'attuale piano:

    • La banca dati fornirà la differenza tra i parametri attuali ed i parametri utilizzati durante lo scorso periodo.
    • All'inizio di un nuovo percorso, le modifiche più recenti del database essere caricati in hardware.
    • Le impostazioni utilizzate per la corsa imminente deve essere etichettato con un numero di esecuzione e la data e l'ora correnti. Questo è essenziale. Ho bisogno di una storia di run-by-run del setup sperimentale.
  • Ci saranno diversi clienti che leggere e scrivere nel database. Anche se le modifiche al database saranno poco frequenti, non posso garantire che i cambiamenti non accadrà in concomitanza.

  • Deve essere robusto e non corruttibili. La configurazione del sistema sperimentale dipende dall'hardware. Qualsiasi rottura del database potrebbe impedire l'acquisizione dei dati, e il nostro tempo è costoso. I backup del database?

Il mio piano attuale è quello di implementare i requisiti di cui sopra utilizzando un database SQLite, anche se non sono sicuro se è in grado di supportare tutte le mie esigenze. C'è qualche altra tecnologia dovrei esaminare? Qualcuno ha fatto qualcosa di simile? Io sono disposto ad imparare qualsiasi tecnologia, a patto che sia maturo.

Suggerimenti e consigli sono i benvenuti.

Grazie,

Sean


Aggiorna 1 :

accesso database :

Ci sono tre applicazioni lite che possono scrivere e leggere al database e un'applicazione in grado di leggere solo.

Le applicazioni con accesso in scrittura devono definire un sottoinsieme non sovrapposizione dei parametri hardware. Per essere precisi, abbiamo un'applicazione (di cui ci possono essere più copie) che definisce l'alta tensione, un'applicazione che imposta il resto dei parametri hardware che possono cambiare durante l'esperimento, e uno interfaccia grafica che definisce il resto dei parametri che sono quasi statico e sono essenziali per la corretta ricostruzione dei dati soltanto.

Il programma con accesso in lettura è solo il nostro software di analisi dei dati. Essa ha bisogno di accedere a quasi tutti i parametri nel database per formattare correttamente i dati in ingresso in qualcosa possiamo analizzare in modo corretto. Il numero di connessioni al database deve essere> 10.

Backup :

Un altro l'installazione presso il nostro laboratorio di discariche di un file XML ogni corsa. Anche se io non credo che XML è opportuno, avevo intenzione di eseguire il backup del sistema di ogni corsa, per ogni evenienza.

È stato utile?

Soluzione

Alcune cose di base sul disegno; è necessario assicurarsi che non si eliminano i dati da qualsiasi tabella; tenere traccia dei dati più recenti (probabilmente meglio con più recente datetime aggiornato); quando il valore dei dati cambia, però, non eliminare i vecchi dati. Quando si inizia una corsa, contrassegnare ogni tabella utilizzata con l'ID Run (in un'altra colonna); in questo modo, è mantenere il pieno record storico su ogni ambiente, e può appuntare esattamente ciò che lo stato utilizzato in un determinato corsa era.

Altri suggerimenti

Chiedete in giro dei tuoi colleghi.

Non si dice che tipo di fisica che si sta facendo, o quanto grande sia il gruppo di lavoro è, ma nella mia disciplina (fisica delle particelle) c'è una profonda repository di esperienze mettendo in servizio proprio questo tipo di sistemi ( noi lo chiamiamo "controlli lenti" e simili). C'è una buona possibilità che qualcuno si lavora con ha sia fatto questo o conosce qualcuno che ha. Ci può essere una descrizione dettagliata del l'ultima volta nella tesi di qualcuno.

Non fare personalmente hanno molto a che fare con questo, ma so questo: una caratteristica comune è quella di avere non-delete-no-sovrascrittura design. Si può solo aggiungere i dati, non rimuoverlo. Ciò preserva le vostre probabilità di capire che cosa veramente accaduto , nel caso di problemi


Forse dovrei spiegare un po 'di più. Anche se questo è un compito importante e deve essere fatto bene, non è davvero legata alla fisica, quindi non è possibile cercare su Spires o sul arXive.org . Nessuno scrive documenti sulla progettazione e realizzazione di basi di dati comandi lenti di medie dimensioni. Ma a volte si mettono nelle loro tesi di laurea. Il modo più semplice per trovare un puntatore veramente è quello di chiedere a un gruppo di persone in tutto il laboratorio.

Non si tratta di un numero particolarmente elevato di database dai suoni di cose. Così si potrebbe essere in grado di farla franca con l'utilizzo di database gratuito di Oracle che vi darà tutti i tipi di grande flessibilità con journaling (non so se questo è una parola vera) e l'amministrazione.

Il tuo menzione di 'non corruttibile' subito dopo si dice "Ci saranno diversi clienti che leggere e scrivere nel database" solleva una bandiera rossa per me. Avete in programma di creare una sorta di applicazione che dispone di un'interfaccia per questo? O pensavi di un accesso diretto al db tramite uno strumento come ROSPO?

Al fine di preservare l'integrità dei dati è necessario per ottenere davvero rigoroso su autorizzazioni. Mi permetterei solo uno (e un backup) persona di avere diritti di amministratore con la capacità di fare la manipolazione dei dati al di fuori della GUI (che renderà la vita più facile).

I backup? Si assolutamente! Non solo si dovrebbe fare giornalieri, settimanali e backup mensili si dovrebbe fare completa e incrementale. Inoltre, prova le tue immagini di backup spesso per confermare che sono in realtà di lavoro.

Per quanto riguarda la struttura dei dati avrei bisogno di dettaglio molto maggiore in quello che si sta cercando di memorizzare e come si dovrebbe accedervi. Ma da quello che hai messo qui direi che sono necessari i seguenti tabelle (per cominciare):

Detectors
Parameters
Detector_Parameters

Alcune note aggiuntive:

Dal momento che si farà tanti cambiamenti Mi consiglia di utilizzare un controllo di versione come SVN per tenere traccia di tutti i tuoi DDL ecc io consiglio anche usando qualcosa come bugzilla per il bug tracking (se necessario) e l'utilizzo di < a href = "http://docs.google.com" rel = "nofollow noreferrer"> google docs per la gestione dei documenti di squadra.

La speranza che aiuta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top