Pergunta

Eu tenho uma grande coleção de blocos de dados de tamanho 1 kB (na ordem de várias centenas de milhões), e precisa encontrar uma maneira de armazenar e consultar esses blocos de dados. Os blocos de dados são adicionados, mas nunca eliminados ou actualizados. Nosso serviço é implantado na plataforma S3, EC2.

Eu sei Amazon SimpleDB existe, mas eu quero uma solução que é plataforma agnóstica (no caso de precisarmos de sair da AWS por exemplo).

Então, minha pergunta é, quais são os prós e contras dessas duas opções para armazenar e recuperar dados pedaços. Como o desempenho compararia?

  • Guarde os blocos de dados como arquivos no S3 e levá-los quando necessário
  • loja os pedaços de dados em um MySQL Cluster Server

Haveria muito de uma diferença de desempenho?

Foi útil?

Solução

Você precisa fornecer acesso a esses blocos de dados diretamente para os usuários do seu aplicativo? Se não, então S3 e HTTP GET solicitações são um exagero. Tendo também em mente que S3 é um serviço garantido, a sobrecarga para cada pedido GET (por apenas 1 KB de dados) será consideravelmente grande.

cluster de servidores MySQL seria uma idéia melhor, mas para ser executado em EC2 você precisará empregar Elastic Block Storage. Finalmente, não descarta SimpleDB. É talvez a melhor solução para o seu problema. Projetar seu sistema cuidadosamente e você seria capaz de migrar facilmente em outros sistemas de banco de dados (distribuído ou relacional) no futuro.

Outras dicas

Eu tentei usar S3 como uma espécie de "banco de dados" usando pequenos arquivos XML para manter meus objetos de dados estruturados, e contando com as "chaves" S3 para olhar para cima esses objetos.

O desempenho era inaceitável, mesmo a partir de EC2 -. A latência para S3 é muito alto

Executando o MySQL em um dispositivo EBS será uma ordem de magnitude mais rápido, mesmo com tantos registros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top