Melhor abordagem para projetar este grande banco de dados MySQL

3

Estou planejando criar um banco de dados que contenha apenas 2 tabelas (stats1 e stats2), mas, essas tabelas conterão linhas indo para 40.000.000 registros!

Todos os registros serão "inteiros positivos / não assinados".

Versão do cliente MySQL: 5.0.91

Veja algumas informações sobre as duas tabelas:

stats1

registros atuais totais = 10 000 000

contém 3 colunas que armazenam numerais fixos da seguinte forma:

  • colA = 12345678901
  • colB = 1234
  • colC = 12345678

stats2

registros atuais totais = 5 000 000

contém 3 colunas que armazenam numerais fixos da seguinte forma:

  • colA = 1234567890
  • colB = 12345678901234
  • colC = 12345678

Eu sei um pouco sobre o MySQL, PHPmyadmin, mas preciso de seu conselho para tornar isso eficiente.

    
por numediaweb 07.07.2010 / 17:05

2 respostas

3

O MySQL pode lidar com esse tamanho sem problemas sérios (nós armazenamos mais de 100 milhões).

Qual é a taxa de crescimento dos dados? 1000 insere um minuto / hora / dia? O crescimento será constante ou os registros serão adicionados em massa (ou seja, 100.000 registros em um lote)?

Seu uso é a chave. Se você estiver fazendo consultas arbitrárias com funções agregadas (soma, etc.), o desempenho será prejudicado.

Se os dados forem relativamente estáticos e suas funções de tipo analítico estiverem ativas, procurarei um mecanismo de banco de dados orientado por coluna. Algo como InfoBright ou InfiniDB. Ambos trabalham com clientes MySQL. Se você agora sabe como usar o MySQL, você pode usá-los. Mas eles podem não funcionar para você, dependendo de como você deseja acessar e consultar seus dados.

    
por 07.07.2010 / 18:34
2

Primeiro, colunas de 4 × 10⁷ com três inteiros em cada não são muito grandes. Suponho que até mesmo bancos de dados Sqlite ou menos robustos possam manipular esse número de registros.

Agora, se você perguntar sobre eficiência, tudo depende do uso do banco de dados. Tudo o que você disse é como são armazenados os dados , mas o mais importante é como é usado . Considere as seguintes situações:

  • Os números são enviados de um satélite e armazenados no banco de dados para análise posterior,
  • Os números são coletados de uma experiência e você deve verificar se eles são exclusivos antes de armazená-los,
  • Os números são usados para estatísticas e recuperados um por um, a partir de uma única máquina,
  • Os números são acessados aleatoriamente por centenas de máquinas em paralelo.

Cada caso requer uma abordagem diferente.

    
por 07.07.2010 / 17:18