MongoDB 3.0 với công cụ lưu trữ WiredTiger cho phép bạn nén dữ liệu được lưu trữ trong cơ sở dữ liệu của mình một cách minh bạch. Đây là một tính năng khá thú vị và hữu ích có thể được sử dụng để giảm việc sử dụng dung lượng ổ đĩa cho dữ liệu đang phát triển nhanh của bạn. Theo mặc định, hổ có dây sử dụng công cụ nén khối ‘Snappy’ cho tất cả các bộ sưu tập. Bạn có thể tắt tính năng nén theo mặc định bằng cách sử dụng các tùy chọn sau trong tệp cấu hình máy chủ MongoDB.
storage: engine: wiredTiger wiredTiger: collectionConfig: blockCompressor: none
Thuật toán nén có thể được chỉ định ở mức thu thập trong quá trình tạo cụm. Dưới đây là một ví dụ về cách tạo một bộ sưu tập với tính năng nén ‘zlib’:
db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );
Công cụ lưu trữ MongoDB WiredTiger cung cấp hai tùy chọn để nén - snappy và zlib. Về cơ bản, có sự cân bằng giữa mức độ nén và khối lượng CPU tải để giải nén. ‘Zlib’ đạt được độ nén nhiều hơn và tương ứng là hiệu suất kém hơn. "Snappy" nhằm mục đích "đạt được tốc độ rất cao và độ nén hợp lý".
Chúng tôi đã chạy một số bài kiểm tra không khoa học đơn giản để đo hiệu suất nén. Chúng tôi đã sử dụng một trong những tập dữ liệu lưu trữ các chuỗi mà chúng tôi cảm thấy sẽ nén tốt. Đây là cấu trúc cơ bản của mỗi tài liệu:
{ '_id': <ObjectID>, 'name': <Five character string>, 'value': <Random 1MB string> }
Chúng tôi đã chèn khoảng 5000 tài liệu trong số này (khoảng 5GB dữ liệu), và kết quả khá ấn tượng. Zlib đạt được một lượng nén đáng kể. Snappy cũng đạt được lượng nén hợp lý mà hệ thống không tải hoặc ít:
Zlib | Nhanh nhẹn | không nén | |
Kích thước dữ liệu (MB) | 5000,5 | 5000,5 | 5000,5 |
Dung lượng lưu trữ (MB) | 19,62 | 254,37 | 5019 |
Như mọi khi, bạn cần chạy một số thử nghiệm để hiểu hiệu suất tăng cho tập dữ liệu của mình. Dưới đây là một số nghiên cứu điểm chuẩn chi tiết hơn về hiệu suất nén và sự cân bằng:
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/