Come creare un'applicazione di database di base, precedentemente sviluppata per 500 record, pronta per 1 milione di record?

2

Ho scritto un'app web di base in PHP, usando MongoDB come motore di database. L'app inserisce fondamentalmente i record nel database non appena diventano disponibili e interroga il database e visualizza i dati come in una pagina Web quando l'utente visita la pagina.

Quando il database viene interrogato e il cursore viene restituito, viene eseguita un'elaborazione su ciascun record, come verificare l'età di un individuo e decidere in quale fascia d'età (come minorenni, età avanzata, semplicemente-destra) età;)) cade dentro, e quindi i dati vengono visualizzati sulla pagina web.

La mia domanda: in precedenza ho sviluppato questo sistema per 500 record di database. Ha funzionato bene. MA ora devo sviluppare questo sistema per 1 milione o più record di database.

Quindi quali modifiche dovrei apportare al sistema esistente, per renderlo pronto per i big data?

    
posta JBel 14.01.2018 - 06:20
fonte

1 risposta

5

OK, quindi rispondendo alla tua domanda letteralmente, non è necessario apportare modifiche.

Il volume dei dati sul database non è di solito un problema di ridimensionamento delle pagine web. Ogni pagina Web sarà dedicata a una piccola parte dei dati e i database sono progettati per recuperare rapidamente sottoinsiemi di dati da insiemi di grandi dimensioni.

Ciò di cui devi tenere conto è la velocità con cui puoi generare una pagina. Di solito questo è limitato al numero di richieste al secondo per le pagine Web che il tuo server sta ricevendo. Ognuno prende una parte del tempo della CPU e il tuo server ha un importo limitato. Una volta raggiunto il 100%, ogni richiesta di pagina diventerà più lenta e più lenta.

Quindi non è il milione di righe che devi preoccuparti, è il milione di utenti.

I server dei siti web sono economici, scalabili, attivano il webserver2, copiano il tuo sito web e raddoppiano la tua capacità senza grandi ostacoli tecnici.

Tuttavia, entrambi i siti Web utilizzeranno lo stesso server di database. e una volta che colpisce la capacità si hanno alcuni problemi tecnici significativi da risolvere.

Il problema di fondo è che vuoi che tutte le richieste del database guardino gli stessi dati. Se copi semplicemente su un secondo db, i database andranno rapidamente fuori sincrono.

Se aggiorni continuamente ciascuno con i dati dell'altro, ogni server sta facendo il doppio del lavoro e non hai risolto il tuo problema di scalabilità.

MongoDB e altri database nosql sono progettati per combattere questo ignorandolo. invece di avere un numero di tabelle che devono essere tutte coerenti, puoi inserire tutti i tuoi dati in un unico blob. quindi è sempre coerente con se stesso.

Ciò ti consente di creare più istanze e copiare semplicemente i dati senza troppi problemi. Risolve quindi il problema di aggiornare i BLOB con alcuni trucchi intelligenti di cui non devi preoccuparti troppo.

Quindi, in sintesi: il sito web php + mongodb corrente, supponendo che tu non abbia commesso errori di "gothcha", dovrebbe ridursi a qualsiasi numero di utenti semplicemente lanciando più server al problema. Se si tratta di cloud hosting significa semplicemente fare clic su un pulsante o due e inserire la carta di credito.

    
risposta data 14.01.2018 - 11:48
fonte

Leggi altre domande sui tag