我要尝试使用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,所以在这种用途下可能是个不错的选择。

广告
将在 10 秒后关闭
bannerAds