MongoDB 3.0 med WiredTiger-lagringsmotoren giver dig mulighed for transparent at komprimere dataene, der er gemt i din database. Dette er en ret spændende og nyttig funktion, der kan bruges til at reducere diskpladsforbruget af dine hurtigt voksende data. Som standard bruger kablet tiger blokkompressionsmotoren 'Snappy' til alle samlingerne. Du kan slå komprimering fra som standard ved at bruge følgende muligheder i MongoDB-serverens konfigurationsfil.
storage: engine: wiredTiger wiredTiger: collectionConfig: blockCompressor: none
Kompressionsalgoritmen kan specificeres på samlingsniveau under oprettelse af klynge. Her er et eksempel på oprettelse af en samling med 'zlib'-komprimering:
db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );
MongoDB WiredTiger-lagringsmotor giver to muligheder for komprimering - snappy og zlib. Der er i det væsentlige en afvejning mellem omfanget af komprimering og mængden af CPU-belastning, der skal dekomprimeres. 'Zlib' opnår meget mere komprimering og er tilsvarende mindre performant. 'Snappy' sigter efter 'sigter efter meget høje hastigheder og rimelig kompression'.
Vi kørte nogle simple uvidenskabelige tests for at måle kompressionsydelsen. Vi brugte et af datasættene til at lagre strenge, som vi mente ville komprimere godt. Her er den grundlæggende struktur for hvert dokument:
{ '_id': <ObjectID>, 'name': <Five character string>, 'value': <Random 1MB string> }
Vi indsatte omkring 5000 af disse dokumenter (ca. 5 GB data), og resultaterne var ret imponerende. Zlib opnår en betydelig mængde komprimering. Snappy opnår også en rimelig mængde komprimering med lille eller ingen belastning på systemet:
Zlib | Snappy | ukomprimeret | |
Datastørrelse (MB) | 5000,5 | 5000,5 | 5000,5 |
Lagerstørrelse (MB) | 19.62 | 254,37 | 5019 |
Som altid skal du køre nogle test for at forstå effektivitetsgevinsterne for dit datasæt. Her er nogle mere detaljerede benchmarkundersøgelser om kompressionsydelse og afvejninger:
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/