我正在使用MongoDB,我的字段名称是10-20个字符的字符串.一个典型的文档由30.000列填充,主要填充浮点数,如1.2,10.5,2.55.它的大小是1MB.
解决方法:
这在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方法将以字节为单位显示任何文档的大致大小,但不包括在数据库中存储文档时实际使用的填充,索引等.因此,这些都是非常近似的数字 – 我建议使用实际数据进行测试,以获得更明确的例子.