https://gist.github.com/1173528#comments
显示数据文件的结构......
短版本是
{ "img_ref" : {
"$ref" : "mapimage",
"$id" : ObjectId("4e454599f404e8d51c000002")
},
"scale" : 128, "image" : "4e454599f404e8d51c000002", "tile_i" : 0, "tile_j" : 9, "w" : 9, "e" : 10, "n" : 0, "s" : 0,
"heights" : [
[
0,
2,
0,
1,
515,
0,
256,
...], [...]
, _id: ObjectId("...") }
此集合上的统计信息()是:
{
"ns" : "ac2.mapimage_tile",
"count" : 18443,
"size" : 99513670744,
"avgObjSize" : 5395742.056281516,
"storageSize" : 100336473712,
"numExtents" : 74,
"nindexes" : 4,
"lastExtentSize" : 2146426864,
"paddingFactor" : 1,
"flags" : 0,
"totalIndexSize" : 5832704,
"indexSizes" : {
"_id_" : 786432,
"img_ref_1_tile_i_1_tile_j_1" : 2236416,
"image_1" : 1212416,
"image_1_tile_i_1_tile_j_1_scale_1" : 1597440
},
"ok" : 1
}
请注意平均对象大小,5,395,742字节 - 或5 MB!存储16,384个整数的5 MB似乎非常极端!
答案 0 :(得分:2)
请参阅http://bsonspec.org/#/specification了解mongodb中序列化的方式。数组实际上空间效率很低,特别是因为我们将索引号存储为每个元素的字符串键。对于像字符串或对象这样的大型元素的小数组来说,这不是一个问题,但对于32位整数的大型数组,这是非常昂贵的。
答案 1 :(得分:1)
MongoDB为其数据库预先分配空间:http://www.mongodb.org/display/DOCS/Developer+FAQ#DeveloperFAQ-Whyaremydatafilessolarge%3F
您可能会看到的是预分配 - 如果您添加更多项目,您可能不会再看到空间使用量的进一步增加。