我要尝试使用MongoDB 3.0的WiredTiger存储引擎
在mongodb3中,可以对文件进行压缩。
Mongo是我最喜欢的产品之一。唯一令我困扰的是,如果不断地添加各种数据,磁盘空间很容易变大。
MongoDB现在可以与自版本3以来的存储引擎mmapv1共存,并选择使用名为WiredTiger的存储引擎。
根据这篇文章
文档锁定,写入性能提高了7到10倍。
可以选择文档压缩,最高可压缩80%。
听说这个消息很不错。对于我来说,由于经常使用Mongo作为保存抓取数据的存储位置,所以能够压缩文档非常有吸引力。由于可以压缩文档,因此不仅可以保存在传统的HDD上(容量小但速度快),还可以保存在SSD上。
在Ubuntu上安装MongoDB 3.
我在Ubuntu 14.04上安装了MongoDB,安装方法可参考这篇文章。
在Ubuntu上安装MongoDB
毫不犹豫地安装MongoDB,变更点是将/etc/mongodb.conf更名为/etc/mongod.conf。这有两个变化点,一是允许使用YAML语法。
在MongoDB3中启用了压缩的配置文件 MongoDB3 le de
我选择了Snappy作为压缩方式。因为我在这篇文章中觉得它在速度和压缩率方面取得了平衡。
我按如下所示进行了conf文件的设置。我参考了这篇文章。
storage:
dbPath: "/var/lib/mongodb/wt"
engine: "wiredTiger"
wiredTiger:
collectionConfig:
blockCompressor: "snappy"
engineConfig:
cacheSizeGB: 1
statisticsLogDelaySecs: 5
journalCompressor: "snappy"
directoryForIndexes: true
systemLog:
destination: file
path: "/var/log/mongodb/mongodb_wt.log"
logAppend: true
storage:
journal:
enabled: true
net:
bindIp: 127.0.0.1
port: 27017
MongoDB应该如何创建wt目录并存储数据。将wt的所有者设置为MongoDB是个不错的选择。
效果测试 guǒ cè duì)
我尝试加载了大约250GB大小的MongoDB2集合,并验证了它的压缩效果如何。
mmapv1 块设备映射版本 1
以前的mmapv1大小为251GB。
ubuntu@xxx/var/lib/mongodb$ du -h
3.1G ./journal
251G .
华东虎
在WiredTiger的情况下,大约为53GB。大致减少为原来的五分之一,能够实现预计的80%的减少。
ubuntu@xxxxxxxxx:/var/lib/mongodb/wt$ du -h
201M ./journal
48G ./collection
4.0K ./_tmp
4.7G ./index
53G .
阅读速度
我原本以为压缩后会造成速度下降,但我仔细试验后发现速度没有下降。
网站爬虫适用
个人经常进行网站爬取,但在这种用途下很快就会占用大量的磁盘空间。由于网站有各种各样的格式,因此很难进行列压缩。而wiredtiger可以轻松实现将容量压缩为原来的1/5,所以在这种用途下可能是个不错的选择。