MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Por que os nomes das chaves são armazenados no documento no MongodDB


O que você está se referindo é frequentemente chamado de "compressão de chave"*. Existem várias razões pelas quais ele não foi implementado:
  1. Se você quiser que isso seja feito, pode fazê-lo no nível do Aplicativo/ORM/ODM com bastante facilidade.
  2. Não é necessariamente uma vantagem de desempenho** em todos os casos. Pense em coleções com muitos nomes de chave e/ou nomes de chave que variam muito entre os documentos.
  3. Pode não fornecer uma vantagem mensurável** de desempenho até que você tenha milhões de documentos.
  4. Se o servidor fizer isso, os nomes completos das chaves ainda precisam ser transmitidos pela rede.
  5. Se nomes de chave compactados forem transmitidos pela rede, a legibilidade realmente sofre usando o console javascript.
  6. A compactação de todo o documento JSON pode oferecer oferece uma vantagem de desempenho ainda melhor.

Como todos os recursos, há uma análise de custo-benefício para implementá-lo e (pelo menos até agora) outros recursos ofereceram mais "retorno pelo investimento".

A compactação completa do documento está [sendo considerada][1] para uma versão futura do MongoDB. disponível a partir da versão 3.0 (veja abaixo)

* Uma tabela de pesquisa na memória para nomes de chaves é basicamente um caso especial de compactação de estilo LZW — é mais ou menos o que a maioria dos algoritmos de compactação fazem.

** A compactação oferece uma vantagem de espaço e de desempenho. Documentos menores significam que mais documentos podem ser lidos por E/S, o que significa que em um sistema com E/S fixa, mais documentos por segundo podem ser lidos.

Atualizar


As versões 3.0 e posteriores do MongoDB agora têm capacidade total de compactação de documentos com o WiredTiger motor de armazenamento.

Dois algoritmos de compactação estão disponíveis:snappy e zlib . A intenção é que o snappy seja a melhor escolha para desempenho geral e que o zlib seja a melhor escolha para capacidade máxima de armazenamento.

Em minha experiência pessoal (não científica, mas relacionada a um projeto comercial), a compactação rápida (não avaliamos o zlib) ofereceu densidade de armazenamento significativamente melhorada sem custo de desempenho líquido perceptível. Na verdade, houve um desempenho ligeiramente melhor em alguns casos, aproximadamente em linha com meus comentários/previsões anteriores.