Isso depende muito do sistema, mas as chances são quase certas de que passaremos de um precipício arbitrário e entraremos em problemas reais. Estou curioso para saber que tipo de regra geral existe para uma boa proporção de RAM / espaço em disco. Estamos planejando nossa próxima rodada de sistemas e precisamos fazer algumas escolhas em relação à RAM, SSDs e quanto de cada um dos novos nós obterá.
Mas agora, para alguns detalhes de desempenho!
Durante o fluxo de trabalho normal de uma única execução de projeto, o MongoDB é atingido com uma porcentagem muito alta de gravações (70-80%). Quando o segundo estágio do pipeline de processamento é atingido, a leitura é extremamente alta, pois é necessário deduplicar os registros identificados na primeira metade do processamento. Este é o fluxo de trabalho para o qual "mantenha seu conjunto de trabalho na RAM", e estamos projetando em torno dessa suposição.
O conjunto de dados inteiro é atingido continuamente com consultas aleatórias de fontes derivadas do usuário final; embora a frequência seja irregular, o tamanho geralmente é muito pequeno (grupos de 10 documentos). Como isso é voltado para o usuário, as respostas precisam estar abaixo do limite "entediado agora" de 3 segundos. Esse padrão de acesso tem muito menos probabilidade de estar no cache, portanto, provavelmente ocorrerá ocorrências no disco.
Um fluxo de trabalho de processamento secundário é uma leitura alta das execuções de processamento anteriores que podem ter dias, semanas ou até meses e são executadas com pouca frequência, mas ainda precisam ser compactadas. Até 100% dos documentos na execução de processamento anterior serão acessados. Nenhuma quantidade de aquecimento de cache pode ajudar nisso, suspeito.
Os tamanhos dos documentos finalizados variam muito, mas o tamanho médio é de cerca de 8K.
A parte de alta leitura do processamento normal do projeto sugere fortemente o uso de réplicas para ajudar a distribuir o tráfego de leitura. Li em outro lugar que um 1:10 RAM-GB para HD-GB é uma boa regra geral para discos lentos. Como estamos pensando seriamente em usar SSDs muito mais rápidos, gostaria de saber se existe uma regra semelhante. polegar para discos rápidos.
Eu sei que estamos usando o Mongo de uma maneira em que tudo em cache realmente não vai funcionar, e é por isso que estou procurando maneiras de projetar um sistema que possa sobreviver a esse uso. A todo conjunto de dados será provavelmente mais de um TB dentro de meio ano e continuar crescendo.