MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Abilitazione della compressione dei dati in MongoDB 3.0

MongoDB 3.0 con il motore di archiviazione WiredTiger consente di comprimere in modo trasparente i dati archiviati nel database. Questa è una funzionalità abbastanza interessante e utile che può essere utilizzata per ridurre l'utilizzo dello spazio su disco dei dati in rapida crescita. Per impostazione predefinita, wired Tiger utilizza il motore di compressione a blocchi "Snappy" per tutte le raccolte. Puoi disattivare la compressione per impostazione predefinita utilizzando le seguenti opzioni nel file di configurazione del server MongoDB.

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

L'algoritmo di compressione può essere specificato a livello di raccolta durante la creazione del cluster. Ecco un esempio di creazione di una raccolta con compressione 'zlib':

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

Il motore di archiviazione WiredTiger di MongoDB offre due opzioni per la compressione:snappy e zlib. Esiste essenzialmente un compromesso tra l'entità della compressione e la quantità di carico della CPU da decomprimere. "Zlib" ottiene molta più compressione ed è di conseguenza meno performante. "Snappy" mira a "mira a velocità molto elevate e compressione ragionevole".

Abbiamo eseguito alcuni semplici test non scientifici per misurare le prestazioni di compressione. Abbiamo utilizzato uno dei set di dati per la memorizzazione di stringhe che ritenevamo potessero comprimere bene. Ecco la struttura di base di ogni documento:


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

Abbiamo inserito circa 5000 di questi documenti (circa 5 GB di dati) e i risultati sono stati abbastanza impressionanti. Zlib ottiene una notevole quantità di compressione. Snappy ottiene anche una discreta quantità di compressione con poco o nessun carico sul sistema:

Zlib Accattivante non compresso
Dimensione dei dati (MB) 5000,5 5000,5 5000,5
Dimensioni di archiviazione (MB) 19.62 254,37 5019

Come sempre, devi eseguire alcuni test per comprendere i miglioramenti in termini di prestazioni per il tuo set di dati. Ecco alcuni studi di benchmark più dettagliati sulle prestazioni di compressione e sui compromessi:

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/