2012-06-01 4 views
0

Итак, у меня есть очень большой набор метрик (15 ГБ и рост), который имеет некоторые данные во вложенных хэшах. Вроде так:Каковы последствия производительности вложенных хэшей в mongodb?

{ 
    _id: 'abc0000', 
    type: 'foo', 
    data: { a: 20, b: 30, c: 3 } 
}, 
... more data following this schema... 
{ 
    _id: 'abc5000', 
    type: 'bar' 
    data: { a: 1, b: 2, c: 4, d: 10 } 
} 

Каковы последствия для производительности при запуске запроса на вложенные хэши? Данные внутри хеша не могут быть проиндексированы ... или, скорее, было бы бессмысленно индексировать его.

Я всегда могу преобразовать данные в плоском стиле data_a, data_b и т.д ...

+1

Включает ли этот запрос первичный ключ или, скорее, вы будете запрашивать все документы? –

+0

Я буду запрашивать ряд данных и иногда агрегировать данные. Когда происходит запись, монго блокируется до завершения? – WarmWaffles

ответ

1

Вы можете создавать индексы атрибутов вложенных хэшей. Взгляните на Indexing with dot notation для более подробной информации. Вы также можете создавать сложные индексы, если вам нужно, но будьте осторожны с caveats with parallel arrays. В принципе, если вы создаете составной индекс, то только одно из индексированных значений может быть массивом, однако это не должно влиять на вас (судя по размещенной схеме).

Таким образом, вы можете создавать индексы на data.a, data.b или data.a, data.c в соответствии с вашими потребностями.

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