При создании базы данных с помощью mongodb мне нужно ежедневно хранить активность пользователей. активность пользователей имеет 5 полей. У меня есть сомнения в выборе схемы для него.
Схема-1:
иметь по одному документу для каждого пользователя с полями:
{
user_id:<>,
user_activity :[array]
}
с массивом, имеющим такую структуру:
{
date:<>
field1:<>
field2:<>
field3:<>
field4:<>
field5:<>
}
Таким образом, в этой схеме вы ежедневно добавляете активность пользователя в массив user_activity. Поэтому каждый день вы добавляете объект в 'user_activity'. Таким образом, в коллекции у меня будет 1000 документов (у меня 1000 пользователей), с ежедневной активностью, помещенной в массив user_activity отдельного пользователя.
схема-2:
иметь разные документы для каждого действия с полями:
user_id:<>,
date:<>
user_activity :<object(with five fields as mentioned above)>
Это похоже на ежедневную вставку новой строки в таблицу sql для каждого действия.
Со схемой-1 я не чувствую, что это хорошая схема, так как я буду увеличивать размер массива. Я буду индексировать поле даты (для облегчения поиска позже), поэтому увеличение размера массива будет дорогостоящим.
Со схемой-2 я чувствую, что нужно продолжить. Это больше похоже на таблицу SQL, добавляющую строки ежедневно. Поле даты индексации не будет проблемой. Но я сомневаюсь, что у меня есть 5k пользователей. так что через год у меня будет 1,8 миллиона (5000 * 365) документов в одной коллекции. это нормально ? Как количество документов в коллекции влияет на производительность? Это так же, как в SQL, где это не имеет значения для количества записей в таблице?
Пожалуйста, укажите мне, если я ошибаюсь в каком-либо аспекте и предложениях, по которым следует продолжить (по крайней мере, подробно плюсы и минусы каждой схемы, чтобы я мог позвонить по ней)