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

Habilitando a compactação de dados no MongoDB 3.0


O MongoDB 3.0 com o mecanismo de armazenamento WiredTiger permite compactar de forma transparente os dados armazenados em seu banco de dados. Este é um recurso bastante interessante e útil que pode ser usado para reduzir o uso de espaço em disco de seus dados de crescimento rápido. Por padrão, o tigre com fio usa o mecanismo de compactação de bloco 'Snappy' para todas as coleções. Você pode desativar a compactação por padrão usando as seguintes opções no arquivo de configuração do servidor MongoDB.
storage:
  engine: wiredTiger
  wiredTiger:
    collectionConfig:
      blockCompressor: none

O algoritmo de compactação pode ser especificado no nível de coleta durante a criação do cluster. Aqui está um exemplo de criação de uma coleção com compressão 'zlib':
db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );

O mecanismo de armazenamento MongoDB WiredTiger oferece duas opções de compactação – snappy e zlib. Há essencialmente uma compensação entre a extensão da compactação e a quantidade de carga da CPU para descompactar. 'Zlib' atinge muito mais compactação e é correspondentemente menos performático. 'Snappy' visa 'aponta para velocidades muito altas e compressão razoável'.

Executamos alguns testes não científicos simples para medir o desempenho da compactação. Usamos um dos conjuntos de dados que armazenam strings que achamos que comprimiriam bem. Aqui está a estrutura básica de cada documento:

{
'_id': <ObjectID>,
'name': <Five character string>,
'value': <Random 1MB string>
}


Inserimos cerca de 5.000 desses documentos (cerca de 5 GB de dados), e os resultados foram bastante impressionantes. Zlib atinge uma quantidade considerável de compressão. O Snappy também atinge uma boa quantidade de compactação com pouca ou nenhuma carga no sistema:
Zlib Inteligente descompactado
Tamanho dos dados (MB) 5000,5 5000,5 5000,5
Tamanho do armazenamento (MB) 19,62 254,37 5019





Como sempre, você precisa fazer alguns testes para entender os ganhos de desempenho do seu conjunto de dados. Aqui estão alguns estudos de benchmark mais detalhados sobre desempenho de compressão e compensações:

http://www.mongodb.com/blog/post/new-compression-options-mongodb-30
http://www.acmebenchmarking.com/2015/02/mongodb-v30-compression-benchmarks.html
https://comerford.cc/2015/02/04/mongodb-3-0-testing-compression/