MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Activation de la compression des données dans MongoDB 3.0

MongoDB 3.0 avec le moteur de stockage WiredTiger vous permet de compresser de manière transparente les données stockées dans votre base de données. Il s'agit d'une fonctionnalité assez intéressante et utile qui peut être utilisée pour réduire l'utilisation de l'espace disque de vos données à croissance rapide. Par défaut, Wired Tiger utilise le moteur de compression de blocs « Snappy » pour toutes les collections. Vous pouvez désactiver la compression par défaut en utilisant les options suivantes dans le fichier de configuration du serveur MongoDB.

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

L'algorithme de compression peut être spécifié au niveau de la collection lors de la création du cluster. Voici un exemple de création d'une collection avec la compression "zlib" :

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

Le moteur de stockage MongoDB WiredTiger propose deux options de compression :snappy et zlib. Il existe essentiellement un compromis entre l'étendue de la compression et la quantité de charge CPU à décompresser. ‘Zlib’ réalise beaucoup plus de compression et est donc moins performant. "Snappy" vise à "viser des vitesses très élevées et une compression raisonnable".

Nous avons effectué des tests simples non scientifiques pour mesurer les performances de compression. Nous avons utilisé l'un des ensembles de données stockant des chaînes qui, selon nous, se comprimeraient bien. Voici la structure de base de chaque document :


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

Nous avons inséré environ 5000 de ces documents (environ 5 Go de données), et les résultats ont été assez impressionnants. Zlib réalise une quantité considérable de compression. Snappy atteint également une bonne quantité de compression avec peu ou pas de charge sur le système :

Zlib Vif non compressé
Taille des données (Mo) 5000.5 5000.5 5000.5
Taille de stockage (Mo) 19.62 254.37 5019

Comme toujours, vous devez exécuter des tests pour comprendre les gains de performances de votre ensemble de données. Voici quelques études comparatives plus détaillées sur les performances de compression et les compromis :

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/