Come memorizzare una grande quantità di dati di sessione

0

Il progetto corrente su cui sto lavorando ha l'obbligo di acquisire dati rilevanti per una sessione e un negozio. Scopo di questo è usare questi dati per l'analisi. I clienti userebbero questi dati per generare grafici, grafici ed ecc.

Per ogni cliente, vengono catturati 10 punti dati in un minuto (10 righe in un minuto). Secondo i requisiti del progetto, la tabella supererebbe milioni di righe entro una settimana.

La soluzione attuale è quella di archiviare i dati in un database Mysql? Sarebbe questa la soluzione giusta?

    
posta Harshakj89 24.04.2017 - 08:18
fonte

2 risposte

2

I database possono contenere molti (centinaia di) milioni di righe e persino decine di miliardi di essi. Devi solo creare lo schema del database appropriato e dovresti occuparti di una buona indicizzazione.

Ovviamente hai bisogno di abbastanza spazio sul disco. Questo è il problema più importante (ed è necessaria un'attenta stima della capacità del disco richiesta).

BTW (senza conoscere le tue reali esigenze), indovinando un kilobyte per riga, il tuo database si inserirà sicuramente in un singolo disco di terabyte (e più probabilmente solo poche centinaia di gigabyte di disco). Probabilmente vuoi che l'indice si adatti alla RAM (quindi potresti volere un server con forse qualche dozzina di gigabyte)

Potresti usare MySQL o PostGreSQL, ma potresti anche usare SQLite (vedi questa risposta ). Tuttavia, se si hanno più client che accedono (contemporaneamente) allo stesso database, è meglio utilizzare un server RDBMS reale (ad esempio PostGreSQL o MySQL), ma non SQLite. Se vuoi un sacco (ad esempio centinaia) di connessioni simultanee, potresti voler dimensionare in modo appropriato il tuo server (ad esempio, diversi dischi o SSD per migliorare la larghezza di banda I / O, o più RAM).

(Non credo che il tuo caso riguardi un database di grandi dimensioni - lo chiamerò di medie dimensioni, ma non sono un esperto di DB, tuttavia, tieni presente che PostGreSQL, MySQL e anche SQLite tutti reclamano: vedi questo per MySQL, questo per PostGreSQL, questo per SQLite- per essere in grado di gestire multi -terabyte databases)

    
risposta data 06.05.2017 - 17:25
fonte
3

Redis è noto come server cache; e mentre è grande per quello, la vera forza di Redis è come un negozio di sessione. Redis è la scelta chiara per i negozi di sessione ampi e intensivi.

Tuttavia, non mi è chiaro che stiate memorizzando i dati di sessione; ma, piuttosto, sembra che stiate memorizzando i dati su una sessione . C'è una sottile, ma importante differenza lì. Quindi, dalla tua descrizione, penso che potresti usare un normale database SQL senza problemi.

10 file al minuto per utente sono ben comprese nella maggior parte dei database relazionali tradizionali. Se sei davvero preoccupato per le prestazioni, puoi dare a ciascun utente la propria tabella di database, questo eliminerà i problemi di blocco.

    
risposta data 09.10.2017 - 15:50
fonte

Leggi altre domande sui tag