sql >> Base de Datos >  >> NoSQL >> MongoDB

Habilitación de la compresión de datos en MongoDB 3.0

MongoDB 3.0 con el motor de almacenamiento WiredTiger le permite comprimir de forma transparente los datos almacenados en su base de datos. Esta es una característica bastante emocionante y útil que puede usarse para reducir el uso de espacio en disco de sus datos de rápido crecimiento. Por defecto, Wired Tiger utiliza el motor de compresión de bloques 'Snappy' para todas las colecciones. Puede desactivar la compresión de forma predeterminada utilizando las siguientes opciones en el archivo de configuración del servidor MongoDB.

storage:
  engine: wiredTiger
  wiredTiger:
    collectionConfig:
      blockCompressor: none

El algoritmo de compresión se puede especificar en el nivel de colección durante la creación del clúster. Aquí hay un ejemplo de cómo crear una colección con compresión 'zlib':

db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );

El motor de almacenamiento MongoDB WiredTiger ofrece dos opciones de compresión:snappy y zlib. Esencialmente, existe una compensación entre el grado de compresión y la cantidad de carga de CPU para descomprimir. 'Zlib' logra mucha más compresión y, en consecuencia, tiene menos rendimiento. 'Snappy' tiene como objetivo 'apuntar a velocidades muy altas y una compresión razonable'.

Realizamos algunas pruebas sencillas no científicas para medir el rendimiento de la compresión. Usamos uno de los conjuntos de datos que almacenan cadenas que pensamos que se comprimirían bien. Aquí está la estructura básica de cada documento:


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

Insertamos alrededor de 5000 de estos documentos (alrededor de 5 GB de datos) y los resultados fueron bastante impresionantes. Zlib logra una cantidad considerable de compresión. Snappy también logra una buena cantidad de compresión con poca o ninguna carga en el sistema:

Zlib Enérgico sin comprimir
Tamaño de datos (MB) 5000.5 5000.5 5000.5
Tamaño de almacenamiento (MB) 19,62 254,37 5019

Como siempre, debe realizar algunas pruebas para comprender las ganancias de rendimiento de su conjunto de datos. Estos son algunos estudios comparativos más detallados sobre el rendimiento de la compresión y las ventajas y desventajas:

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/