MongoDB Desempenho do tamanho da coleção / Mais coleções versus mais documentos

2

Alguém tem uma ideia do desempenho do mongodb? Eu venho usando o mysql há anos e estou tentando determinar se é melhor ter mais coleções ou mais documentos (referindo-se a grandes quantidades de dados) - no MySQL é melhor ter mais linhas do que acomodar mais tabelas .

Por exemplo, podemos ter duas tabelas (coleções) de hotéis com clientes ou uma tabela / coleção com uma coluna adicional contendo o hotel.

Talvez pudesse ser mais ideal porque reduz o tamanho de uma coleção em disco (por ter duas coleções em vez de uma), então é mais rápido consultar?

    
por Akshat 10.03.2012 / 12:00

1 resposta

2

Nota: não se esqueça que o mongodb tem um limite para o tamanho do documento, eu acho que é 16mb, mas você precisa verificar a documentação

O ponto inteiro do mongodb é armazenar seus dados desnormalizados e evitar 'joins', mas se seus dados forem completamente separados, eles ainda devem ser armazenados em coleções separadas.

No nosso site, temos algumas coleções diferentes e uma delas está vinculada por referência. Depende de qual driver você está usando se o driver resolverá as referências para você ou não.

A outra coisa a considerar é como você atualizará os dados.

MongoDB mmap armazena toda a coleção na memória e permite que o sistema operacional determine quais partes devem ser paginadas para o disco e quais partes dos dados devem ser armazenadas na memória. Não deve haver muita diferença no desempenho entre 1 tabela grande e 2 tabelas de tamanho médio se o tamanho de todo o conjunto de dados for o mesmo. Uma consideração aqui é os índices, se você combinar os dados em uma coleção, e um índice puder cobrir tudo, você poderá pesquisar os dados mais rapidamente.

Assim, você pode ter uma coleção com cada um de seus hotéis, contendo uma propriedade chamada 'clientes', que é uma matriz ou hashes com os detalhes de cada cliente, e pode empurrar e extrair itens dessa matriz pode torná-lo um hash em um identificador de cliente exclusivo para facilitar o acesso). Não se esqueça do limite de 16mb.

Pode ser mais fácil responder à sua pergunta se eu tiver mais contexto e detalhes sobre o que você está tentando armazenar e que tipo de consultas você precisa executar em relação aos dados

    
por 10.03.2012 / 17:43

Tags