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)
Respostas:
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
É muito importante usar uma máquina de 64 bits e não de 32 bits. http://blog.mongodb.org/post/137788967/32-bit-limitations
fonte
Com o MongoDB, o que você quer é RAM. E depois um pouco mais de RAM. Comprar RAM não pode doer.
fonte
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.
fonte
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
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.
fonte
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
É 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)
Carga de trabalho de ingestão de dados
Padrões de consulta e expectativas de desempenho
Padrões de acesso antecipado
fonte