Простой ответ - «нет».Фактическое пространство, занимаемое документом в файлах Mongo, является переменным, но это не максимальный размер документа.Механизм БД следит за тем, насколько ваши документы имеют тенденцию изменяться после вставки, и рассчитывает коэффициент заполнения на основании этого.Так что он все время меняется.
Если вам интересно, вы можете увидеть фактический коэффициент заполнения и пространство хранения ваших данных, используя функцию .stats()
для коллекции в mongo ракушка.Вот реальный пример (с некоторыми именами, измененными для защиты невинных клиентов):
{14:42} ~/my_directory ➭ mongo
MongoDB shell version: 1.8.0
connecting to: test
> show collections
schedule_drilldown
schedule_report
system.indexes
> db.schedule_report.stats()
{
"ns" : "test.schedule_report",
"count" : 16749,
"size" : 60743292,
"avgObjSize" : 3626.681712341035,
"storageSize" : 86614016,
"numExtents" : 10,
"nindexes" : 3,
"lastExtentSize" : 23101696,
"paddingFactor" : 1.4599999999953628,
"flags" : 1,
"totalIndexSize" : 2899968,
"indexSizes" : {
"_id_" : 835584,
"WeekEnd_-1_Salon_1" : 925696,
"WeekEnd_-1_AreaCode_1" : 1138688
},
"ok" : 1
}
Итак, моя тестовая коллекция содержит около 16 749 записей со средним размером около 3,6 КБ ().«avgObjSize» ) и общий размер данных около 60 МБ ( «размер» ).Однако оказывается, что они на самом деле занимают около 86 МБ на диске (" storageSize ") из-за коэффициента заполнения.Этот коэффициент заполнения менялся с течением времени, так как документы коллекции были обновлены, но если бы я вставил новый документ прямо сейчас , он выделил бы в 1,46 раза больше места, чем требуется документу ( "paddingFactor") чтобы избежать необходимости перемещать вещи, если я изменю это позже.Для меня это справедливый компромисс между размером и скоростью.