MongoDB Создание структуры моей схемы менее реляционной - PullRequest
0 голосов
/ 29 ноября 2018

Я поторопился с созданием своего mongodb, но я только что понял, что на самом деле я не нашел времени, чтобы подумать о лучшей стратегии для этого, и я мог неправильно использовать структуру nosql и строить более традиционную реляционную структуру.Я создаю форум сообщества, и до сих пор у меня есть следующие коллекции:

User - stores all user settings/data such as email, name, password, date joined, email/notification preferences, etc..

Profile - stores handle, gender, user location, forum rank, interests and then several arrays containing id's of things like an array of follower id's, array of post ids, array of upload id's, array of club id's, array of posts the user has liked, etc.

Posts - stores comment data, creator user id, category and then has an array of id's to uploaded files and an array of user id's for likes.

Uploads - GridFS schema to use when uploading files

Что я сейчас понимаю, что все эти массивы идентификаторов вещей в других коллекциях ведут себя намного большереляционная БД, особенно схема Profile, которая в основном является просто набором идентификаторов для других коллекций.Можете ли вы дать какой-либо совет о типе БД, который я создаю, и как его улучшить?Например, должен ли я иметь одну пользовательскую схему, которая содержит все сообщения и данные профиля непосредственно внутри нее, а не хранить идентификаторы в отдельной схеме в другой коллекции?Поскольку я использую этот проект для обучения, я действительно хотел бы продолжать использовать mongodb, а не переходить на что-то вроде MySQL.

1 Ответ

0 голосов
/ 04 декабря 2018

Поскольку Акрион тоже ускользнул от комментариев, первым шагом было объединение схем пользователя и профиля.Другой вещью, о которой я раньше не думал, было то, что информация вызывается вместе.Новая схема UserProfile не должна содержать такие вещи, как комментарии / публикации / загрузки / лайки, так как эти вещи будут лучше существовать как часть документа Post.Моя проблема заключалась в том, что наличие записи об этих вещах в моем UserProfile оптимизировало бы поиск этих элементов, когда они мне были нужны, но я только что закончил вздутием своей схемы UserProfile.Нет ничего необычного в поиске коллекции сообщений по создателю, а не по идентификатору, взятому из документа UserProfile.Загружаемые документы теперь больше не являются схемами GridFS, а представляют собой записи файлов в файловой системе, но это не так важно для моего исходного вопроса.

...