Монго занимает огромное количество места, чтобы сохранить эти данные? - PullRequest
1 голос
/ 26 августа 2011

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 МБ!5 МБ для хранения 16 384 дюймов кажется довольно экстремальным!

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

См. http://bsonspec.org/#/specification о том, как вещи сериализуются в mongodb. Массивы на самом деле очень неэффективны, особенно потому, что мы храним номер индекса в виде строкового ключа для каждого элемента. Это меньше проблем для маленьких массивов больших элементов, таких как строки или объекты, но для больших массивов 32-битных целых это очень дорого.

1 голос
/ 26 августа 2011

MongoDB предварительно выделяет пространство для своих баз данных: http://www.mongodb.org/display/DOCS/Developer+FAQ#DeveloperFAQ-Whyaremydatafilessolarge%3F

Вероятно, вы видите, что предварительное выделение - если вы добавите дополнительные элементы, вы, вероятно, не увидите дальнейшего увеличения использования пространствадолго.

Также: http://www.mongodb.org/display/DOCS/Excessive+Disk+Space

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...