Mysql
 sql >> Database >  >> RDS >> Mysql

Quale db manager per una tabella 100Go?

Uso tutti i database che hai citato. Per questo carico posso consigliare MySQL o PostgreSQL perché ho già lavorato con un carico ancora maggiore su PostgreSQL. Ma anche MySQL farà lo stesso lavoro, forse anche meglio perché è stato progettato fin dall'inizio per un carico di inserti elevato.

La soluzione su PostgreSQL con cui ho lavorato è stata utilizzata per archiviare messaggi di sistema dalla rete di telecomunicazioni ed è stata in grado di raccogliere circa 300 GB di dati al giorno su una macchina senza problemi. Ma hai bisogno di una corretta architettura HW.

Hai bisogno di una macchina con almeno 8 CPU ma di più è meglio e devi avere diverse code di inserimento. Usa il caricatore in Java o C o Golang con più minacce parallele ed esegui inserimenti in blocco da ogni minaccia utilizzando il comando COPY per circa 10000 record in un blocco. È necessario utilizzare il pool di connessioni perché PostgreSQL ha un sovraccarico maggiore per l'apertura di una nuova connessione.

Ti aiuterà anche a distribuire i dati su più tablespace, ogni tablespace su un disco fisico separato o meglio su un array di dischi fisici separato. Se possibile, non utilizzare indici su dati grezzi. Separa i tuoi dati grezzi dai risultati aggregati.

Avevamo un'altra soluzione che utilizzava l'estensione pl/proxy per PostgreSQL e diverse macchine fisiche per i dati grezzi partizionati per tempo. Questo sistema è stato in grado di raccogliere almeno 1 TB al giorno ma con una quantità adeguata di database slave anche di più.

Ma devi capire che per elaborare davvero questa quantità di dati è necessario un hardware adeguato con una configurazione adeguata. Non esiste un database magico che possa fare miracoli su una "configurazione simile a un notebook"...

InfluxDB è davvero un ottimo database di serie temporali e lo usiamo per il monitoraggio. Credo che con abbastanza CPU e molta memoria sarai in grado di usarlo anche tu. Stimo che avrai bisogno di un minimo di 64 GB di RAM perché gli inserti sono più costosi di memoria. Quindi, con più code di inserimento, il database avrà bisogno di molta più memoria perché memorizza tutto in memoria e crea automaticamente indici sui tag.