DynamoDB vs MongoDB NoSQL

eu estou tentando descobrir o que posso usar para um projeto de futuro, nós plano para armazenar cerca de 500 mil registros por mês no primeiro ano e talvez mais para os próximos anos, esta é uma aplicação vertical, de modo que não há necessidade de usar um banco de dados para esta, que é a razão pela qual eu decidi escolher um noSQL armazenamento de dados.

A primeira opção que me veio à cabeça foi a mongo db, uma vez que é um produto muito maduro, com muito apoio da comunidade, mas por outro lado temos uma nova marca. produto que oferece um serviço gerenciado no melhor desempenho, eu vou desenvolver esta applciation, mas não há nenhum plano de manutenção (pelo menos por agora), então eu acho que será uma grande vantagem, uma vez que a amazon fornece uma maneira elástica para a escala.

a minha maior preocupação é com a estrutura da consulta, ainda não analisei as capacidades da consulta dynamoDB, mas como é um armazenamento de dados k/v, sinto que isto pode ser mais limitado do que mongo db.

Se alguém tivesse a experiência de mover um projecto de mongoDB para DynamoDB, qualquer conselho será totalmente apreciado.

Author: Pat Myron, 2013-07-29

8 answers

Recentemente migrei meu MongoDB para o DynamoDB, e escrevi 3 blogs para compartilhar alguma experiência e dados sobre performance, custo.

Migrar do MongoDB para o AWS DynamoDB + SimpleDB

7 Razões pelas quais deve usar o MongoDB sobre o DynamoDB

3 razões pelas quais deve usar o DynamoDB sobre o MongoDB

 48
Author: Mason Zhang, 2013-08-08 01:49:16
Sei que isto é antigo, mas ainda surge quando se procura a comparação. Estávamos a usar Mongo, mudámo-nos quase inteiramente para o Dínamo, que é a nossa primeira escolha agora. Não porque ele tem mais recursos, não tem. Mongo tem uma linguagem de consulta melhor, você pode indexar dentro de uma estrutura, há muitas pequenas coisas. A superioridade do Dynamo está no que a OP afirmou em seu comentário: é fácil. Não tens de cuidar de servidores. Quando começar a configurar uma solução Barbuda De Mongo, fica complicado. Podes ir a uma das empresas de acolhimento, mas isso também não é barato. Com o Dynamo, se precisar de mais rendimento, basta clicar num botão. Você pode escrever scripts para escalar automaticamente. Quando é hora de atualizar o Dínamo, está feito para você. Isso é muito stress precioso e tempo não gasto. Se não tem pessoal dedicado às operações, o Dínamo é excelente. Então agora vamos para o Dínamo por defeito. Mongo talvez, se a estrutura de dados é complicada o suficiente para justificar mas provavelmente voltaríamos a uma base de dados SQL. Dínamo é obtuso, você realmente precisa pensar sobre como você vai construí-lo, e provavelmente você vai usar Redis em Elasticcache para fazê-lo funcionar para coisas complexas. Mas é bom não ter de tratar disso. Tu codificas. É isso.
 155
Author: CargoMeister, 2018-05-10 08:29:52
Com os documentos 500k, não há razão para escalar. Um laptop típico com um SSD e 8GB de ram pode facilmente fazer 10s de milhões de registros, então se você está tentando escolher por causa da escala de sua escolha realmente não importa. Eu sugiro que você escolha o que você mais gosta, e talvez onde você pode encontrar o apoio mais online com.
 55
Author: Derick, 2018-02-02 12:45:48

Para comparações rápidas de visão geral, eu realmente gosto deste site, que tem muitas páginas de comparação, por exemplo AWS DynamoDB vs MongoDB; http://db-engines.com/en/system/Amazon + DynamoDB%3BMongoDB

 21
Author: AnneTheAgile, 2015-01-13 13:39:42

Resposta Curta: comece com SQL e adicione NoSQL apenas quando/se necessário. (a menos que você não precisa de nada além de consultas muito simples)

A minha experiência pessoal: não usei o MongoDB para consultas, mas a partir de abril de 2015 o DynamoDB ainda está muito debilitado quando se trata de qualquer coisa para além das mais básicas consultas de valor/chave. Eu amo isso para o material básico, mas se você quiser linguagem de consulta, em seguida, olhar para uma solução de banco de dados SQL real.

No DynamoDB pode consultar um hash ou um hash e range key, e você pode ter vários índices globais secundários. Estou fazendo consultas em uma única tabela com 4 possíveis parâmetros de filtro e ordenando os resultados, isso é suportado (apenas) através do uso dos índices secundários globais com expressões de filtro. O problema surge quando você tenta obter os resultados totais correspondentes ao filtro, você não pode apenas procurar os primeiros 10 itens correspondentes ao filtro, mas sim verificar 10 itens e você pode obter 0 resultados válidos forçando-o a manter re-scanear a partir da continuar chave-dor no pescoço e consome muito de sua quota de leitura de mesa para um cenário simples.

Para ser específico sobre o problema de limite com filtros na consulta, isto é a partir dos documentos (http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#ScanQueryLimit):

In a response, DynamoDB returns all the matching results within
the scope of the Limit value. For example, if you issue a Query 
or a Scan request with a Limit value of 6 and without a filter
expression, the operation returns the first six items in the 
table that match the request parameters. If you also supply a
FilterExpression, the operation returns the items within the 
first six items in the table that match the filter requirements.

A minha conclusão é que as consultas que envolvem expressões de Ficheiros só são utilizáveis em ocasiões muito raras e não são escaláveis porque cada consulta pode leia facilmente a maior parte ou toda a sua mesa que consome demasiadas unidades de leitura DynamoDB. Uma vez que você usa muitas unidades de leitura você vai ser estrangulado e ver o desempenho ruim.

Na Cimeira da AWS, em 9 de Abril de 2015, Brett Hollman, Gestor, Arquitectura de soluções, a AWS na sua conversa sobre ligar para os seus primeiros 10 milhões de utilizadores, defende a criação de uma base de dados SQL e a utilização de NoSQL apenas quando e se isso fizer sentido. Porque mais cedo ou mais tarde você provavelmente vai precisar de um servidor SQL algures na tua pilha. Os slides dele estão aqui: http://www.slideshare.net/AmazonWebServices/deep-dive-scaling-up-to-your-first-10-million-users Ver slide 28.
 16
Author: Deemoe, 2015-04-20 06:18:30
Escolhemos uma combinação de Mongo / Dínamo para um produto de saúde. Basicamente mongo permite uma melhor busca, mas o Dínamo hospedado é ótimo porque o seu HIPAA compatível sem qualquer trabalho extra. Então, nós hospedamos a parte mongo sem dados pessoais em uma configuração padrão e permitir que a amazon para lidar com a parte HIPAA em termos de infra-estrutura. Podemos consultar certos itens de mongo que trazem documentos com ponteiros (IDs) do documento Dínamo relacionável. A principal razão pela qual escolheu fazer isso usando mongo em vez de hospedar toda a aplicação no dynamo foi por 2 razões. Em primeiro lugar, precisávamos pré-formalizar as buscas baseadas na localização em que mongo é grande e na época, Dynamo não era, mas eles têm uma opção agora.

Em segundo lugar, alguns documentos não estavam estruturados e não sabíamos antecipadamente quais seriam os dados, por isso, por exemplo, digamos que o utilizador introduz um documento na colecção do" formulário " como este: {"utilizador": "Utilizador 1", "e-mail": "[email protected] e outro usuário coloca isso na mesma coleção {"phone": "813-555-3333"," location": [28.1234, -83.2342]}. Com mongo podemos pesquisar qualquer um desses campos dinâmicos e desconhecidos a qualquer momento, com Dynamo, você poderia fazer isso, mas teria que fazer um índice cada vez que um novo campo foi adicionado que você queria pesquisável. Então, se você nunca teve um campo de telefone em seu documento Dínamo antes e então de repente, alguns adicionam-no, é completamente indescritível.

Agora isto traz outro ponto à tona. o que mencionou. Às vezes escolher a solução certa para o trabalho nem sempre significa escolher o melhor produto para o trabalho. Por exemplo, você pode ter um cliente que precisa e vai usar o sistema que você criou por mais de 10 anos. Ir com uma solução SaaS / IaaS que é boa o suficiente para fazer o trabalho pode ser uma melhor opção, já que você pode contar com a amazon para ter atualizado e mantido seus sistemas ao longo do longo curso.
 12
Author: Steffan Perry, 2015-08-28 20:09:23
Trabalhei em ambos e em ambos. Mas tens de perceber quando usar o quê e com que propósito.

Eu não acho que seja uma grande ideia mover toda a sua base de dados para o DynamoDB, a razão de ser questionando é difícil, exceto em chaves primárias e secundárias, indexação é limitada e digitalização no DynamoDB é doloroso.

Eu optaria por um tipo híbrido de DB, onde extensos dados capazes de consulta deveriam estar lá há MongoDB, com tudo o que é característica que você nunca sentiria obrigado a fornecer melhorias ou modificações.

O DynamoDB é rápido como um raio (mais rápido que o MongoDB) por isso o DynamoDB é muitas vezes usado como uma alternativa às sessões em aplicações escaláveis. As melhores práticas do DynamoDB também sugerem que se houver uma abundância de dados que estão sendo menos utilizados, movê-lo para outra tabela.

Então suponha que você tem um artigo ou feeds. É mais provável que as pessoas procurem coisas da semana passada ou deste mês. as hipóteses de as pessoas visitarem dois anos são muito raras. dado. Para estes fins, o DynamoDB prefere ter os dados armazenados por mês ou anos em tabelas diferentes.

O DynamoDB é aparentemente escalável, algo que terá de fazer manualmente em MongoDB. no entanto, você perderia no desempenho do DynamoDB, se você não entender sobre a partição de transferência e como a escala funciona por trás da cena.

DynamoDB deve ser usado onde a velocidade é crítica, MongoDB por outro lado tem muitas mãos e características, algo DynamoDB falta.

Por exemplo, você pode ter um conjunto de réplicas de MongoDB de tal forma que uma das réplicas tenha uma instância de dados de 8(ou o que quer que seja) horas de idade. Realmente útil, se você estragou algo grande tempo em seu DB e quer obter os dados como ele é antes.

Essa é a minha opinião.
 8
Author: Rahul Kumar, 2016-11-16 21:09:22
Lembra-te que só experimentei MongoDB... Pelo que li, o DynamoDB percorreu um longo caminho em termos de características. Ele costumava ser uma loja super-básica de valor-chave com capacidade de armazenamento e questionamento extremamente limitada. Desde então tem crescido, agora suportando maiores tamanhos de Documentos + Suporte JSON e índices secundários globais . A diferença entre o que o DynamoDB e o MongoDB oferece em termos de recursos diminui a cada mês. As novas características do O DynamoDB é expandido em aqui .

Grande parte das comparações MongoDB vs. DynamoDB estão desactualizadas devido à recente adição de características do DynamoDB. No entanto, Este post oferece alguns outros pontos convincentes para escolher o DynamoDB, nomeadamente que é simples, de baixa manutenção e, muitas vezes, de baixo custo. outra discussão aqui de escolhas de banco de dados foi interessante de ler, embora um pouco velho.

A minha conclusão é que, se está a fazer perguntas sérias à base de dados ou a trabalhar em languages not supported by DynamoDB, use MongoDB. Caso contrário, fica com o DynamoDB.
 7
Author: AndrewSouthpaw, 2015-04-01 13:30:51