Que hardware faz um bom servidor MongoDB? Onde conseguir?

13

Suponha que você esteja no dell.com agora e compre um servidor para executar seu banco de dados MongoDB para sua pequena inicialização. Você terá que lidar com literalmente dezenas de milhares de gravações e leituras por minuto (mas pequenos objetos). Você usaria 2 processadores? Investir mais em RAM?

Ouvi (me corrija se estiver errado) o MongoDB lida com o máximo possível na RAM e depois libera tudo para o disco; nesse caso, devo investir em uma CPU com um cache L2 grande, provavelmente> 40 GB de RAM e uma unidade de estado sólido .. certo?

Eu estaria melhor com um servidor de ponta (~ US $ 11.309, 2 processadores caros, 96 GB de RAM) ou servidores 2x (~ US $ 6.419, 2 processadores caros, 12 GB de RAM)?

A Dell está bem ou você tem sugestões melhores? (Estou fora dos EUA, em Portugal)

João Pinto Jerónimo
fonte
3
por que você está comprando hardware em vez de usar algo como EC2 para sua inicialização? Pelo menos inicialmente, até que você saiba quais serão seus requisitos.
Concordo com Tom. Por que não tomar algumas instâncias na nuvem?
1
@mixdev, você está errado: "Linux, NUMA e MongoDB tendem a não funcionar bem juntos." fonte: mongodb.org/display/DOCS/NUMA
Shadok:

Respostas:

19

Inicialmente, você precisará aumentar a RAM. A RAM necessária depende da quantidade de dados que você está armazenando, número de coleções, índices dessas coleções, padrões de acesso a dados, etc. Muitos fatores.

O mais importante é ter RAM suficiente para manter seus índices na RAM. Caso contrário, seu desempenho sofrerá drasticamente, pois seus servidores paginarão constantemente enquanto o Mongo move os arquivos mapeados na memória para dentro e para fora da RAM. Apesar de tudo isso, não vimos a velocidade de gravação afetada, mas todo o resto é. O processamento de baixas da fila, descargas, despejos, etc., sofre um impacto dramático quando seus índices não se ajustam mais à RAM.

Portanto, não há uma resposta curta real. Basicamente, seja esperto sobre seus índices. Use apenas o que você precisa. Mantenha as coleções pequenas, se puder (por exemplo, divida em várias, onde você puder). As coleções limitadas também são interessantes.


fonte
1
Em nossa experiência, quando o Mongo está sem memória RAM para consultas, a consulta não apenas vai para os documentos (executada para sempre, 5 minutos, 15 minutos, hora ...), mas as inserções começam a falhar.
Jonesome Restabelece Monica 28/11
6

Com o MongoDB, o que você quer é RAM. E depois um pouco mais de RAM. Comprar RAM não pode doer.

chx
fonte
3

Se você está comprando um hardware de produção, o aplicativo que você está executando já deve estar escrito, certo? Portanto, execute o aplicativo no hardware que você possui e faça métricas. Altere gradualmente alguns componentes e faça mais métricas. Quando terminar, você saberá quais pontos de foco são mais importantes para seu aplicativo e cenário.

Sam
fonte
3

Primeiro - compre o máximo de RAM possível. O segundo fator limitante é a velocidade do disco. RAID ajuda. SSD ajuda. Mais fragmentos ajudam. Avalie a produtividade comparando-se à eficiência do disco e aos tempos de resposta necessários e decida o que fazer dentro do orçamento que você possui.


fonte
1

Gostaria de saber se uma solução em cluster Linux seria uma alternativa melhor e mais barata.

O MongoDB permite distribuir dados por vários servidores. Isso será impossível com um servidor buzinando.

Eu pensei que o MongoDB fosse uma das próximas etapas depois de descobrir que a implantação de um banco de dados relacional em um servidor de buzinas não era escalável o suficiente.

duffymo
fonte
1

Dezenas de milhares de gravações por minuto não são nada. Você pode obter 50.000 ou mais gravações por segundo em hardware decente. As especificações de hardware realmente dependem do que você está tentando fazer. Em geral, RAM suficiente para grandes bancos de dados e sistemas IO rápidos são importantes, além de uma CPU decente ...


fonte
0

É importante estabelecer uma linha de base sólida antes de projetar seu hardware. Geralmente, espere que esse tipo de perguntas seja feito pelo pessoal experiente do mongoDB antes que alguém possa considerar responder sua pergunta.

Estatísticas atuais do aplicativo (se houver)

  • Total de registros até o momento?
  • Iniciando estimativa de armazenamento?
  • % De crescimento esperado / mês?
  • Tamanho médio do documento?

Carga de trabalho de ingestão de dados

  • Novas inserções / dia, pico e média por segundo?
  • Atualizações / dia, pico e média por segundo?
  • Lê / dia, pico e média / segundo?
  • Número médio de documentos retornados por consulta: 70
  • Exclusões / dia, pico e média / segundo: nenhum
  • Haverá cargas em massa / atualizações em massa? Se sim, qual o tamanho e com que frequência?
  • Quantos tipos diferentes de documentos haverá?
  • Quantos de cada?
  • Como você espera que seus documentos sejam (exemplo de documento)?

Padrões de consulta e expectativas de desempenho

  • Leia o SLA de resposta?
  • Escrever resposta SLA?
  • As leituras são baseadas em intervalo ou aleatórias?

Padrões de acesso antecipado

  • Número de índices secundários necessários?
  • Número de atributos?
  • Classificar condições?
  • Único ou composto?
Ostati
fonte