Armazenando centenas de milhões de registros

1

Minha empresa entrará em posse de um conjunto de dados com aproximadamente 200 a 300 milhões de registros. O material de origem é csv e tem cerca de 150GB descomprimido. Precisamos executar uma carga inicial dos dados e, em seguida, atualizamos aproximadamente 1% dos registros diariamente. Nós gostaríamos de poder manter a história de cada registro também.

Atualmente, usamos o MySQL e parece que algumas pessoas estão usando o MySQL e o PostgreSQL para bancos de dados desse tamanho, mas não vejo muita informação sobre suas experiências.

Nós poderíamos definitivamente sair sem normalizar os dados e eu posso imaginar a distribuição das informações em muitos servidores. Que tal o MongoDB ou algum outro armazenamento de dados não tradicional?

Alguém tem alguma opinião sobre a viabilidade desse tipo de empreendimento? Agradeço qualquer ajuda que você possa dar.

    
por Edwin Knuth 09.09.2010 / 00:30

2 respostas

1

Minha experiência em conjuntos de dados com esse tamanho é limitada ao MSSQL, mas pode manipular definitivamente dados desse tamanho.

Minha primeira preocupação é o tamanho dos dados. 300 milhões de registros em 150Gb são cerca de 500Kb por linha - e isso é uma grande linha. Uma fila muito grande. Se você puder normalizar para a 3ª forma normal, isso pode ajudar muito (supondo que haja dados que possam ser normalizados). Se você não vai normalizar (e apenas tem uma única tabela massiva), então um mecanismo que suporta ISAM será mais rápido do que um RDBMS, então o MySQL no modo ISAM é a escolha óbvia sobre MSSQL (desculpe, eu não tem alguma experiência com o Postgre ou Mongo)

Dito isto, o MSSQL pode lidar com uma tabela desse tamanho sem preocupações. Ele pode particionar os dados para que partes diferentes vivam em discos diferentes, para que você possa manter 1% de dados atualizados em um disco rápido e manter o restante em um disco mais lento se o orçamento for uma preocupação. Se o seu SGBD de escolha suporta isso, então pode ser um caminho sensato.

Apenas para referência, uma vez eu gerenciei um banco de dados que tinha cerca de 200 milhões de linhas em uma única tabela (mas a tabela tinha apenas 20Gb de tamanho) e com alguns tempos de consulta de indexação inteligentes ainda estavam sendo medidos em milissegundos. Isso foi normalizado para a 3ª forma normal, então havia muito LOJ para recuperar dados associados também.

    
por 09.09.2010 / 00:40
0

A maioria dos bancos de dados pode gerenciar facilmente o armazenamento de quantidades tão grandes, isso realmente depende do que você deseja fazer com os dados depois de carregá-los. É transacional, por isso será consultado e atualizado com frequência? Ou é mais para relatórios com apenas novas informações que chegam todos os dias do sistema transacional?

    
por 09.09.2010 / 00:48