如何在MongoDB中启用数据压缩

问题描述 投票:0回答:1

在MongoDB中,WiredTiger提供了Zlib压缩选项。

为了启用Zlib压缩选项,我使用以下代码创建了一个集合。

db.createCollection( "questions", { storageEngine: {
                   wiredTiger: { configString: "blockCompressor=zlib" }}})

我运行了一些简单的测试来测量压缩性能,并使用了以下存储字符串的数据集

{
'_id': <ObjectID>,
'question_id': <Five character string>,
'question': <My question>
}

我使用以下代码创建了一个具有任何压缩选项的另一个集合。

db.createCollection( "questions")

使用以下注释测量数据大小

db.stats(1024*1024).dataSize + db.stats(1024*1024).indexSize

但是我看不到这两个集合之间的压缩差异。我引用了以下链接以实现我的过程。

https://www.mongodb.com/blog/post/new-compression-options-mongodb-30

https://scalegrid.io/blog/enabling-data-compression-in-mongodb-3-0/

mongodb compression zlib
1个回答
0
投票

请勿使用dataSize进行比较,因为它是未压缩的大小。请改用storageSize

例如,使用MongoDB 4.2.2:

// create collections
> db.createCollection('snappy')
> db.createCollection('zlib', {storageEngine: {wiredTiger: {configString: 'block_compressor=zlib'}}})

// insert a compressible document into both collections
> doc = {_id:0, text:<a paragraph of text>}
> db.snappy.insert(doc)
> db.zlib.insert(doc)

// storage size comparison
> db.snappy.stats().storageSize
20480
> db.zlib.stats().storageSize
4096

// data size comparison
> db.snappy.dataSize()
697
> db.zlib.dataSize()
697

因此zlib的存储大小比默认值(快照)小得多,但是它们之间的数据大小相同。

:如果您仍在使用它,则MongoDB 3.0已非常过时,并且从February 2018开始不再受支持。请使用更新的版本(截至2020年1月的最新版本是4.2.2)。

© www.soinside.com 2019 - 2024. All rights reserved.