Sei que algumas pessoas dirão que esta pergunta não pertence aqui, mas não encontrei um lugar melhor na internet para fazer isso. Migre para um local apropriado, se achar que deve ser. Estou usando o MongoDB para armazenar dados do produto. Os dados de texto (nomes de produtos, categorias, atributos) representam cerca de 30 GB. As imagens representam cerca de 200 GB. Estou pagando 184 USD por um processador quad core e servidor dedicado de 8 GB de RAM e HDD de 500 GB (da SingleHop). Esta configuração está adequada para um site de tráfego médio (5 a 7 mil visitantes por dia). Ouvi dizer que o MongoDB funciona melhor quando é fragmentado (por causa do bloqueio global de leitura e gravação), mas nunca trabalhei com clusters. Sempre trabalhei com VPS. Esta é a minha primeira vez com um servidor dedicado. Por favor, informe-me sobre a configuração e os custos também. Eu moro na Índia e espero a maioria dos meus visitantes da Índia.
Obrigado.
Realmente não há ambiente e custo "ideais" para executar o MongoDB (ou qualquer outro banco de dados). Haverá soluções muito baratas que lhe darão espaço suficiente, mas não RAM suficiente, haverá opções intermediárias em que você tem RAM suficiente na maioria das vezes, mas em períodos mais movimentados você excede as limitações de memória e o disco é muito lento para lidar com o aumento da atividade de falha de página.
Como sempre, será uma troca entre o que você pode pagar e o que é melhor. Em termos de recomendações gerais:
Os núcleos e o espaço serão menos importantes do que sua RAM disponível e se você pode ou não manter seu conjunto de dados de trabalho (dados ativos mais índices) na RAM - essa é a chave para o desempenho. Você realmente não será capaz de dizer até começar com o tráfego real, mas se tiver um teste decente, poderá estimar.
Eu recomendaria usar o MMS para rastrear as estatísticas, é gratuito e inclui um gráfico de memória que rastreará o uso da memória residente e muitas outras coisas.
FYI - não há bloqueio de leitura global e a partir de 2.2 (o candidato a lançamento está pronto para teste no momento da redação deste), o bloqueio de gravação global foi substituído por um bloqueio no nível do banco de dados. Dê uma olhada nas apresentações de simultaneidade relevantes para uma discussão aprofundada no site da 10gen .
Outra coisa a se certificar é que você tem mais de uma instância do MongoDB, é altamente recomendável que você execute um conjunto de réplicas (primário, secundário, mínimo de árbitro) e não uma única instância.
O sharding pode ser usado para ajudar a escalar horizontalmente - isso é correto, ele permite que você adicione mais recursos ao seu cluster sem ter que aumentar os recursos disponíveis em um determinado host. No entanto, não é realmente correto dizer que o MongoDB é executado "melhor" quando fragmentado - o sharding tem sobrecarga (você precisa de mais servidores para executar o banco de dados de configuração, processos mongos etc.).
O MongoDB funciona melhor quando seu conjunto de trabalho pode caber na RAM e seus subsistemas de disco são rápidos o suficiente para acompanhar a quantidade de dados que você deseja gravar no disco. Se requer um único conjunto de réplicas ou um ambiente fragmentado dependerá muito de como você o usa.