Pergunta

Alguém já pensou em usar algo parecido com o armazenamento de dados Amazon SimpleDB como banco de dados de back-end?

A hospedagem do SQL Server (pelo menos no Reino Unido) é cara, então algo assim, junto com o armazenamento de arquivos em nuvem (S3), pode ser usado para criar aplicativos que possam crescer com seu aplicativo.

Ótimo em teoria, mas alguém consideraria usá-lo.Na verdade, alguém está realmente usando-o agora para software de produção real, pois eu adoraria ler seus comentários.

Foi útil?

Solução

Esta é uma boa análise dos serviços da Amazon de Ouse.

O S3 lidou com o que normalmente ouvi ser descrito como "armazenamento de blob".Um aplicativo Web típico normalmente possui arquivos de mídia e outros recursos (imagens, folhas de estilo CSS, scripts, arquivos de vídeo, etc.) que são simplesmente acessados ​​por nome/caminho.No entanto, muitos desses recursos também possuem metadados (por exemplo,um arquivo de vídeo no YouTube possui metadados sobre sua classificação, quem o enviou, número de visualizações, etc.) que também precisam ser armazenados.É nessa necessidade de armazenamento esquematizado e consultável que entra o SimpleDB.O EC2 fornece um servidor virtual que pode ser usado para computação completa com uma instância do sistema de arquivos local que não é persistente se o servidor virtual ficar inativo por qualquer motivo.Com SimpleDB e S3 você tem os blocos de construção para construir uma grande classe de aplicativos no estilo "Web 2.0" ao incluir os recursos computacionais fornecidos pelo EC2.No entanto, nem o S3 nem o SimpleDB fornecem uma solução para um desenvolvedor que simplesmente deseja a experiência típica de desenvolvedor LAMP ou WISC de construir um aplicativo Web orientado a banco de dados ou para aplicativos que podem ter necessidades de armazenamento personalizadas que não se encaixam perfeitamente nos compartimentos de armazenamento de blob ou armazenamento esquematizado.Sem acesso a um sistema de arquivos persistente, os desenvolvedores da plataforma de computação em nuvem da Amazon tiveram que criar soluções sofisticadas que envolvem o backup manual de dados do EC2 ao S3 para obter a experiência desejada.

Outras dicas

Acabei de terminar de escrever uma biblioteca para facilitar a portabilidade de um aplicativo para simpledb em Perl, Net::Amazon::SimpleDB::Simple porque achei as bibliotecas de cliente da Amazon dolorosas.A biblioteca ainda não está no CPAN, mas está em http://rjurneyopen.s3.amazonaws.com/SimpleDB/Simple.pm A ideia era tornar trivial colocar hashes dentro e fora do SimpleDB.

Acabei de portar um aplicativo para usá-lo.No geral, estou impressionado com o SimpleDB...mesmo consultas ineficientes levam apenas 2 a 3 segundos para retornar.SimpleDB não parece se importar com o tamanho da sua tabela, devido à sua natureza Erlang/paralela.Tablescans são fáceis para isso.

A dor vem do fato de você não poder contar, somar ou agrupar.Se você planeja fazer alguma dessas coisas...então o SimpleDB provavelmente não é para você.No momento, em termos de funcionalidade, existe algo entre o memcached e o MySQL.Você pode SELECT ORDER BY LIMIT, o que é legal.Também é bom que você não precise escalá-lo sozinho, e é bom que não se importe com o quanto você coloca nele.Mas operações mais avançadas, como análises, são, na melhor das hipóteses, dolorosas.Você terá que fazer seus próprios cálculos no lado do servidor.Também é uma grande vantagem que em qualquer computador eu possa usar a CLI simpledb http://code.google.com/p/amazon-simpledb-cli/ para consultar meus dados.

Existem alguns 'Gotchas' confusos. Por exemplo, os atributos podem ter mais de um valor e você deve definir explicitamente 'substituir' ao armazenar itens.Além disso, armazenar uma string undef ou nula resulta em um erro de biblioteca, em vez de excluir esse par nome/valor do atributo ou defini-lo como uma string nula/vazia.

Aprender a pensar de uma forma amplamente não normalizada também é um pouco estranho, e é por isso que eu apoiaria a sugestão acima, que diz que é melhor para novas aplicações.A portabilidade de um aplicativo SQL para o SimpleDB seria dolorosa porque a lógica do seu aplicativo teria que mudar.A maneira como você faz as coisas é um pouco diferente.Os documentos da Amazon são muito bons em explicar isso.

Tudo isso pode ser extraído em uma biblioteca que fica sobre o SimpleDB, então para usar o SimpleDB você vai querer escolher uma boa biblioteca...você provavelmente não quer lidar com isso diretamente.Há algum trabalho no lado do PHP para facilitar as coisas, e aí está minha biblioteca.Existe uma fonte ativa RAILS, mas não parece fazer muito por você.

Resumindo, ainda está no início do jogo, mas em comparação com outras APIs (o Twitter vem à mente), devo dizer que a API REST do SimpleDB é bastante simples (especialmente considerando que é XML) e educada de se trabalhar.Eu recomendaria...dependendo dos requisitos de sua aplicação e da economia de seu uso.Se você deseja escalar rapidamente um serviço que não sobrecarrega o banco de dados e não quer se preocupar com uma combinação MySQL/memcache escalável...então o SimpleDB pode oferecer uma solução ‘simples’ para você.

Espero que seus recursos continuem a crescer e que seja uma boa escolha para cada vez mais aplicações que fazem coisas mais complexas e interessantes.Mas no momento ele é direcionado e apropriado para o seu serviço típico da Web 2.0.

Estamos usando o SimpleDB quase exclusivamente para nossos novos projetos.Os aspectos de manutenção zero, alta disponibilidade e ausência de instalação são bons demais.E para seus desenvolvedores Ruby, confira Registro Simples, uma interface semelhante ao ActiveRecord para SimpleDB que o torna muito fácil de usar.

Mas você realmente precisa do SQL Server?Você não consegue conviver com PostgreSQL ou MySQL?Ambos provaram ser adequados para a maioria das tarefas.

Agora, se você precisa dos recursos do SQL Server, está sem sorte.

Outra opção é alugar um servidor.Quão caro é caro?

(Usei o Amazon S3 para armazenar imagens para uma aplicação, está tudo bem e funciona bem, pelo menos para isso)

Não usei SimpleDB, mas tenho usado uma combinação de S3, EC2 e MySQL para nosso aplicativo.

Contanto que você esteja disposto a usar o SimpleDB, você também pode considerar o uso do MySQL (que é muito escalável e não tão caro).

Do lado S3 e EC2, também é ótimo na prática.

SimpleDB funciona muito bem para muitos aplicativos....se o seu projeto exigir muitos relatórios analíticos, junção, etc., você pode considerar o MySQL ou um modelo híbrido.

Se você optar pelo SimpleDB, desenvolvemos o Radquery.com para uso interno e o abrimos ao público.

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