Разработка схемы базы данных по количеству документов в коллекции - PullRequest
0 голосов
/ 25 июня 2019

При создании базы данных с помощью 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, где это не имеет значения для количества записей в таблице?

Пожалуйста, укажите мне, если я ошибаюсь в каком-либо аспекте и предложениях, по которым следует продолжить (по крайней мере, подробно плюсы и минусы каждой схемы, чтобы я мог позвонить по ней)

...