MongoDB 3.0 dengan mesin penyimpanan WiredTiger memungkinkan Anda mengompresi data yang disimpan dalam database Anda secara transparan. Ini adalah fitur yang cukup menarik dan berguna yang dapat digunakan untuk mengurangi penggunaan ruang disk dari data Anda yang berkembang pesat. Secara default, wired tiger menggunakan mesin kompresi blok 'Snappy' untuk semua koleksi. Anda dapat mematikan kompresi secara default menggunakan opsi berikut di file konfigurasi server MongoDB.
storage: engine: wiredTiger wiredTiger: collectionConfig: blockCompressor: none
Algoritma kompresi dapat ditentukan pada tingkat pengumpulan selama pembuatan cluster. Berikut adalah contoh membuat koleksi dengan kompresi 'zlib':
db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );
Mesin penyimpanan MongoDB WiredTiger menyediakan dua opsi untuk kompresi – tajam dan zlib. Pada dasarnya ada tradeoff antara tingkat kompresi dan jumlah beban CPU untuk dekompresi. 'Zlib' mencapai lebih banyak kompresi dan dengan demikian kinerjanya lebih sedikit. 'Snappy' bertujuan untuk 'bertujuan untuk kecepatan yang sangat tinggi dan kompresi yang wajar'.
Kami menjalankan beberapa tes sederhana yang tidak ilmiah untuk mengukur kinerja kompresi. Kami menggunakan salah satu kumpulan data yang menyimpan string yang kami rasa akan terkompresi dengan baik. Berikut adalah struktur dasar dari setiap dokumen:
{ '_id': <ObjectID>, 'name': <Five character string>, 'value': <Random 1MB string> }
Kami memasukkan sekitar 5000 dokumen ini (sekitar 5GB data), dan hasilnya cukup mengesankan. Zlib mencapai jumlah kompresi yang cukup besar. Snappy juga mencapai cukup banyak kompresi dengan sedikit atau tanpa beban pada sistem:
Zlib | Cepat | tidak terkompresi | |
Ukuran data (MB) | 5000.5 | 5000.5 | 5000.5 |
Ukuran penyimpanan (MB) | 19,62 | 254,37 | 5019 |
Seperti biasa, Anda perlu menjalankan beberapa pengujian untuk memahami peningkatan performa untuk kumpulan data Anda. Berikut adalah beberapa studi benchmark yang lebih mendetail tentang kinerja kompresi dan pengorbanan:
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/