per un sistema di contabilità del traffico Ho bisogno di memorizzare grandi quantità di set di dati sui pacchetti internet inviati attraverso il nostro router gateway (contenente timestamp, ID utente, destinazione o IP sorgente, numero di byte, ecc.).Come devo memorizzare quantità estremamente elevate di dati sul traffico per un facile recupero?
Questi dati devono essere memorizzati per qualche tempo, almeno alcuni giorni. Anche il recupero facile dovrebbe essere possibile.
Qual è un buon modo per farlo? Ho già alcune idee:
Creare un file per ogni utente e giorno e aggiungere ogni set di dati ad esso.
- Vantaggio: Probabilmente è molto veloce e i dati sono facili da trovare dato un layout di file coerente.
- Svantaggio: non è facilmente possibile vedere ad es. tutto il traffico UDP di tutti gli utenti.
utilizzare un database
- Vantaggio: E 'molto facile trovare i dati specifici con la query SQL destra.
- Svantaggio: non sono sicuro che esista un motore di database in grado di gestire in modo efficiente una tabella con possibilmente centinaia di milioni di dataset.
Forse è possibile combinare i due approcci: Utilizzo di un file di database SQLite per ciascun utente.
- Vantaggio: sarebbe facile ottenere informazioni per un utente utilizzando query SQL sul suo file.
- Svantaggio: ottenere informazioni generali sarebbe ancora difficile.
Ma forse qualcuno ha una buona idea?
Grazie mille in anticipo.
Hai ragione, gli utenti devono essere in grado di controllare il traffico che hanno causato. Purtroppo, non posso usare SQL Server, poiché tutti i nostri server eseguono Debian Linux. Qualche tempo fa, ho scritto una query sul nostro database PostgreSQL per trovare utenti senza contratto. Sembrava una semplice questione di trovare tutte le voci in una tabella che non hanno voci corrispondenti in un'altra tabella, entrambe le tabelle hanno meno di 5000 righe. Tuttavia, la query risultante ha richiesto cinque secondi per l'esecuzione. Ecco perché mi preoccupo delle query su centinaia di milioni di set di dati. –
Mi sembra che qualcuno abbia dimenticato di indicizzare il tuo database Postgre! Una semplice query come quella su un set di dati così piccolo dovrebbe richiedere millesimi di secondo in un database progettato correttamente. – HLGEM