Raccolta dell'architettura dell'applicazione

1

Supponiamo che ci sia un sistema per raccogliere informazioni sulle attività di sistema. C'è una parte client con un'interfaccia e ci sono parti agente che sono installate su ciascuna macchina. Stimo che ora potrebbero esserci max 20 computer. Più tardi potrebbe essere più simile a 50.

Le mie soluzioni:

  1. L'agente memorizza i dati nel database locale, ad es. SQLite. Esiste anche un servizio che può essere utilizzato da un cliente per interrogare i dati. Quindi, se un cliente desidera visualizzare i dati per 50 computer, invia una query a 50 computer. Sono su questa soluzione ora, ma forse è completamente sbagliato.

  2. L'agente memorizza i dati nel database locale (non ne conosco uno buono). C'è anche un server (database principale) e i database locali sono sincronizzati con il server. In questo caso, un client si connette al database principale per visualizzare i dati.

  3. L'agente invia i dati in tempo reale al database principale. Così come il punto 2, ma non c'è sincronizzazione.

  4. Come nel punto 3, ma l'agente memorizza i dati nel database locale e li invia in piccoli blocchi al database principale.

Qual è l'approccio migliore?

    
posta userbb 14.06.2011 - 21:14
fonte

2 risposte

1

O passare in tempo reale (opzione 3) se si prevede una connessione costante al DB. O vai con la sincronizzazione (opzione 2) se i tuoi utenti devono lavorare offline.

Opzioni 1 & 4 sono ibridi, con il lato negativo di entrambi i 2 e amp; 3 ma nessuno dei lati alti.

    
risposta data 14.07.2011 - 22:28
fonte
0

La decisione di archiviare un database localmente o sul server dipende da molti fattori, qui alcuni in cima alla mia testa:

  • la dimensione dei dati.
  • la frequenza con cui si ottengono i dati sul client. Ottieni più dati di quelli che potresti essere in grado di trasmettere al server?
  • Sicurezza. Ti fidi dei clienti per memorizzare i dati?
  • criterio di errore del tuo sistema. Ex. si inviano tutti i dati al DB centrale ma nel bel mezzo della notte il server db non riesce. È accettabile perdere i dati generati sul client dal momento in cui il DB ha fallito nel momento in cui viene ripristinato il DB? Oppure, c'è un errore di rete e il client non può inviare dati al server, è accettabile perdere i dati del client fino a quando la rete non viene ripristinata?

Una possibile soluzione è un approccio ibrido. Salva i dati su ciascun client e inseriscilo in una coda di trasferimento. Estrarre periodicamente i dati dalla coda e inviarli al server ed eliminarli dal client una volta completato il trasferimento (attendere una notifica del server). Se il DB del server fallisce, stai ancora salvando i dati sul client in modo da non perderli. Lo stesso se la rete fallisce.

Questo è tutto ciò che posso dirti con le informazioni che ci hai fornito.

    
risposta data 14.06.2011 - 22:00
fonte

Leggi altre domande sui tag