长字符串字段名称如何影响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方法将以字节为单位显示任何文档的大致大小,但不包括数据库中存储文档时实际使用的填充,索引等.因此,这些都是非常近似的数字 – 我建议使用实际数据进行测试,以获得更明确的例子.

相关文章

MongoTemplate 是Spring Data MongoDB 中的一个核心类,为 S...
笔者今天要分享的是一个项目重构过程中如何将数据库选型由原...
mongodb/mongoTemplate.upsert批量插入更新数据的实现
进入官网下载官网安装点击next勾选同意,点击next点击custom...
头歌 MongoDB实验——数据库基本操作
期末考试复习总结