Как лучше хранить подобные структуры в MongoDB? Выбрать одну коллекцию для всех или одну для каждой структуры? Есть ли у кого-то преимущества от одного / нескольких?
Например, мне нужно хранить несколько журналов для дальнейшей аналитики. Существует общая часть для каждой структуры и некоторые данные, специфичные для определенного типа статистики, например:
{
timestamp: ...,
client: { ... },
type: 'stats_for_item1',
data: {
id: ObjectId('xxx'),
field1: 1,
field2: 2
}
},
{
timestamp: ...,
client: { ... },
type: 'stats_for_item2',
data: {
id: ObjectId('zzz'),
field3: 3,
field4: {
field5: [5, 1]
}
}
}
Как видите, у нас есть общая часть и поле data
с несколькими различными полями для item1
и item2
.
Похоже, что будут индексированы только поля timestamp
и type
(и, конечно, _id). И количество таких предметов ограничено, скажем, 3 типа. Будет много записей и небольшое количество операций чтения
Итак, мой вопрос, как организовать такие структуры? Использовать одну большую коллекцию stats
и хранить там все? не создавать несколько коллекций stats_item1
, stats_item2
и stats_item3
. Что оптимально? Какие-нибудь преимущества? С точки зрения монго, для шардинга / индексации / запроса / блокировки / и т. Д.?