MongoDB 3.0 s úložištěm WiredTiger vám umožňuje transparentně komprimovat data uložená ve vaší databázi. Jedná se o poměrně vzrušující a užitečnou funkci, kterou lze použít ke snížení využití místa na disku pro vaše rychle rostoucí data. Ve výchozím nastavení používá drátový tygr pro všechny kolekce modul komprese bloků „Snappy“. Kompresi můžete ve výchozím nastavení vypnout pomocí následujících možností v konfiguračním souboru serveru MongoDB.
storage: engine: wiredTiger wiredTiger: collectionConfig: blockCompressor: none
Kompresní algoritmus lze určit na úrovni kolekce během vytváření clusteru. Zde je příklad vytvoření kolekce s kompresí ‚zlib‘:
db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );
Úložný modul MongoDB WiredTiger poskytuje dvě možnosti komprese – snappy a zlib. V podstatě existuje kompromis mezi rozsahem komprese a množstvím zátěže CPU, kterou je třeba dekomprimovat. „Zlib“ dosahuje mnohem větší komprese a je odpovídajícím způsobem méně výkonný. „Snappy“ si klade za cíl „usilovat o velmi vysoké rychlosti a rozumnou kompresi“.
Provedli jsme několik jednoduchých nevědeckých testů, abychom změřili výkon komprese. Použili jsme jednu z datových sad ukládajících řetězce, které by se podle nás mohly dobře komprimovat. Zde je základní struktura každého dokumentu:
{ '_id': <ObjectID>, 'name': <Five character string>, 'value': <Random 1MB string> }
Vložili jsme asi 5 000 těchto dokumentů (asi 5 GB dat). a výsledky byly poměrně působivé. Zlib dosahuje značné míry komprese. Snappy také dosahuje značného množství komprese s malým nebo žádným zatížením systému:
Zlib | Snappy | nekomprimováno | |
Velikost dat (MB) | 5 000,5 | 5 000,5 | 5 000,5 |
Velikost úložiště (MB) | 19,62 | 254,37 | 5019 |
Jako vždy musíte provést několik testů, abyste porozuměli nárůstu výkonu vašeho souboru dat. Zde jsou některé podrobnější srovnávací studie o výkonu komprese a kompromisech:
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/