微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

长字符串字段名称如何影响MongoDB数据库大小?

我正在使用MongoDB,我的字段名称是10-20个字符的字符串.一个典型的文档由30.000列填充,主要填充浮点数,如1.2,10.5,2.55.它的大小是1MB.

长字符串字段名称是否会影响MongoDB数据库的大小?

解决方法:

这在developer FAQ中有所介绍,一些相关的摘录:

MongoDB stores all field names in every document. For most documents,
this represents a small fraction of the space used by a document;
however, for small documents the field names may represent a
proportionally large amount of space

而且,只是关于索引的说明:

Shorter field names do not reduce the size of indexes, because indexes
have a predefined structure

所以,是的,减少字段名称大小将使存储更有效,尽管它对索引大小没有影响.你是否值得拥有的节约(与描述性的损失相比)将取决于你.作为近似值,如果从20(例如)中删除2个字符的字段名称,则可能会保存每个字段16个字节的内容,这应该意味着文档大小将减少40%以上(~400k).

这是使用MongoDB shell估算这个的简单方法

$./mongo --nodb
MongoDB shell version: 3.0.2
> testObject = {"12345678901234567890" : 1.23324}
{ "12345678901234567890" : 1.23324 }
> Object.bsonsize(testObject)
35
> testObject = {"1" : 1.23324}
{ "1" : 1.23324 }
> Object.bsonsize(testObject)
16
> testObject = {"12" : 1.23324}
{ "12" : 1.23324 }
> Object.bsonsize(testObject)
17

Object.bsonsize方法将以字节为单位显示任何文档的大致大小,但不包括数据库中存储文档时实际使用的填充,索引等.因此,这些都是非常近似的数字 – 我建议使用实际数据进行测试,以获得更明确的例子.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐