MongoDB 3.0 med WiredTiger-lagringsmotorn gör det möjligt för dig att transparent komprimera data som lagras i din databas. Detta är en ganska spännande och användbar funktion som kan användas för att minska diskutrymmesanvändningen för dina snabbväxande data. Som standard använder trådbunden tiger blockkompressionsmotorn "Snappy" för alla samlingar. Du kan stänga av komprimering som standard med hjälp av följande alternativ i MongoDB-serverns konfigurationsfil.
storage: engine: wiredTiger wiredTiger: collectionConfig: blockCompressor: none
Komprimeringsalgoritmen kan specificeras på samlingsnivå under klusterskapandet. Här är ett exempel på att skapa en samling med 'zlib'-komprimering:
db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );
MongoDB WiredTiger-lagringsmotor ger två alternativ för komprimering - snappy och zlib. Det finns i huvudsak en avvägning mellan graden av komprimering och mängden CPU-belastning som ska dekomprimeras. "Zlib" uppnår mycket mer komprimering och är motsvarande mindre prestanda. "Snappy" syftar till "siktar på mycket höga hastigheter och rimlig kompression".
Vi körde några enkla ovetenskapliga tester för att mäta kompressionsprestanda. Vi använde en av datamängder som lagrade strängar som vi ansåg skulle komprimera bra. Här är den grundläggande strukturen för varje dokument:
{ '_id': <ObjectID>, 'name': <Five character string>, 'value': <Random 1MB string> }
Vi infogade cirka 5000 av dessa dokument (cirka 5 GB data), och resultaten var ganska imponerande. Zlib uppnår en betydande mängd komprimering. Snappy uppnår också en hel del komprimering med liten eller ingen belastning på systemet:
Zlib | Snappy | okomprimerad | |
Datastorlek (MB) | 5000,5 | 5000,5 | 5000,5 |
Lagringsstorlek (MB) | 19.62 | 254.37 | 5019 |
Som alltid måste du köra några tester för att förstå prestandavinsterna för din datamängd. Här är några mer detaljerade benchmarkstudier om kompressionsprestanda och avvägningar:
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/