2014-09-21 2 views
0

... и я делаю это неправильно, если мне нужно спросить?Насколько велики ссылки на документы?

У меня есть набор данных, состоящий из нескольких тысяч элементов (отслеживаемых объектов в видео), каждый из которых состоит из от 1 до около 100 000 других подпозиций (данные из каждого кадра). Я пытаюсь выяснить, если это имеет смысл сослаться на каждом кадре в документе объекта, примерно так:

{ 
    "_id" : ObjectId("541e59c033e2931c587ad85a"), 
    "frames" : [ 
     ObjectId("541e599b33e2931c587ad7f6"), 
     ObjectId("541e599b33e2931c587ad7f7"), 
     ObjectId("541e599b33e2931c587ad7f8") 
    ], 
    "track_id" : 124 
} 

Мои кадры были бы в другой коллекции и выглядеть примерно так:

{ 
    "_id" : ObjectId("541e599b33e2931c587ad7f6"), 
    "track_id" : 124, 
    "frame" : 1 
    "centroid" : [1234, 2345], 
} 

Поскольку длина frames в «отслеживаемой» коллекции может распространяться примерно на диапазон 100 тыс., Я немного волнуюсь, что смогу сгладить размер документа размером 16 МБ.

Мои XY problem, что если все мои данные кадр явно заказано с целым числом, и уникальным между track_id и frame_no комбо, я должен даже беспокоиться о ссылках документа?

ответ

0

Я думаю, что поле кадров является избыточным, поскольку все документы из коллекции кадров могут быть собраны с помощью определенного track_id. Безопасно удалить это поле, тогда вы больше не беспокоитесь о размере BSON.
Кстати, это так похоже на GridFS, который поддерживается MongoDB.

0

Чтобы ответить на ваш вопрос с заголовком: ObjectId - 12 байт.

Но это звучит так, как будто вам не нужны ссылки frames. Добавьте уникальный индекс в коллекцию фреймов на {track_id: 1, frame: 1}, который позволит вам быстро и легко найти любой кадр любого трека.

+0

Я видел 12-байтовую вещь с еще большим количеством поисков, но есть ли накладные расходы для ее нахождения в массиве? –

+0

@NickT Не должно быть, нет. – JohnnyHK

Смежные вопросы