Я читал много документации и примеров здесь, в Stackoverflow, но я не совсем уверен в своих выводах, поэтому поэтому я прошу помочь.MongoDb много для многих с большими отношениями
Представьте, что у нас есть коллекция Пленки и коллекция Пользователи, и мы хотим знать, какие пользователи видели фильм и какие фильмы видели у пользователя.
Один из способов создать устройство в MongoDb является:
Пользователь:
{
"name":"User1",
"films":[filmId1, filmId2, filmId3, filmId4] //ObjectIds from Films
}
Фильм:
{
"name": "The incredible MongoDb Developer",
"watched_by": [userId1, userId2, userId3] //ObjectsIds from User
}
Хорошо, это может работать, если количество пользователей/фильмов является низким, но, например, если мы ожидаем, что в одном фильме будут пользователи в 800 тыс., размер массива будет близок к: 800k * 12 байт ~ 9,5 МБ, что почти соответствует максимальному размеру 16 МБ для файла BSON.
В этом случае существует другой подход, чем типичный реляционный мир, который создает промежуточную коллекцию для отношений?
Кроме того, я не знаю, будет ли читать и анализировать JSON около 10 МБ, будет иметь лучшую производительность по сравнению с классическим реляционным способом.
Спасибо
Не могли бы вы объяснить, почему вы хотите сохранить ссылки на пользователя в документах для фильма? То, что я хотел написать, становится небольшим эссе по 4 возможностям, которые могут быть для меня или нет. – malarzm