Какую БД выбрать для бекенда на node js (express)?
Во всех курсах используют монгу, на Ютубе все используют монгу. Что за дискриминация, чем обусловлен такой выбор?
Читал что если нужны связи - то монга не подходит. Допустим у меня есть база пользователей, у каждого пользователя есть несколько профилей 1-10 профилей, в каждом профиле есть клиенты 1-овер999 у каждого клиента есть свои продукты. Связь на связи.
Даже если взять простой блог, есть пользователь, его статьи, и комментарии. Тоже связи. Так почему в курсах монга?
Или она может подойти для такого продукта? Нагрузки большой не планируется, максимум 10-50 одновременных пользователей. Express js с rest api, и фронт на vue js. А с базой проблема встала... Просто хочу полностью все на JS сделать, так и проще выучить будет новую технологию, и писать продукт будет проще на одном ЯП. До этого был php и python и только бэк. Сейчас нужно на паре проектов побыть фуллстек.
Предположу, что так проще - не нужно разбирать в курах реляционную модель и прочее - тупо кидаем жсоны в базу.
Или она может подойти для такого продукта?
Мне кажется, что врядли. Монга хороша, когда есть сущности со сложной структурой, но без связей (чтобы нормально ложилось на документ-ориентированные рельсы). У монги есть прикольное преимущество перед РСУБД - не нужно заранее определять схему данных.
В вашем случае мне кажется, что postgresql вполне подойдёт.
У монги есть прикольное преимущество перед РСУБД - не нужно заранее определять схему данных.
Василий Банников, как по мне, весьма спорное "приемущество"... на этапе прототипирования может быть, но на этапе продукта это превратится в головную боль и для админов и для разрабов, а для бизнеса так вообще в лишние расходы.
Дело в том что я использую orm. Привык к orm django. В express есть mongoose. Есть конечно sequelize, но хотелось бы посмотреть практики по нему. В курсах конечно нравится смотреть как в mongoose взаимодействуют с бд, но по sequelize нет практики... Да и вообще интересно почему все используют монгу, даже просто любопытно.
Монга хороша, когда вообще неизвестна структура данных и ею можно вертеть как вздумается без особой попаболи с перестроением индексов. Она особо не требовательна для старта. Тем более и облако фри есть.
С реляционными надо чуть больше вникать, больше времени отдавать на ее установку и настройку, подготовку таблиц и индексов. Нужна структура заранее известная, что для курсов не совсем подходит.
В подобных курсах для бэкэнд\фронтенд ее используют, чтобы не тратить время на освоение, установку и настройку, работа с БД не является основой для подобных курсов, это уже отдельная история и следует изучать не в курсах по построению бекенда\фронта, а в курсах про работу с БД. Можно встретить курсы с использованием mysql, но это что-то специфичное и, как правило, там БД уже настроена и заранее известны все вводные.
У разных БД зачастую разные сценарии использования, однозначно нельзя сказать, что лучше взять для конкретного проекта. Ну и предпочтения не меньшую роль играют, конечно.
на реальных проектах монгу не юзают, даже если и есть, то минимально. Лучше смотреть в сторону постгриса. А бэк смотрели на Nest или feathersjs? А то писать все чисто на node + express, не очень круто, в плане, что есть фраймеворки которые дают хорошие решения
У меня нет сильно большой логики. Нужен простой api. Nest рассматривал, но мне показалось что он перегружен сильно для этого проекта. Но в следующем думаю использовать как раз его, там сильно много всего будет, думаю nest отлично подойдёт.
"на реальных проектах монгу не юзают" Ваши сведения уже давно неактуальны. Лет так 5.
Используют, и еще как.
Достаточно много, в т.ч. крупных проектов, используют монго. И даже как единственную боевую БД. Хотя и чаще как дополнительную для определенных задач, где реляционные не очень подходят.
Из открытых источников можно узнать, что монго используют, например
GitHub, SourceForge, Foursquare, Bitly, About.me, MTV, CNN, New York Times, Forbes, Disney, EA, amazon.com, netflix.com, ebay.com
Чаще всего игроделы ее используют как основную.
Но ничего не мешает ее использовать и для пет проектов или небольшого релизного проекта.
Единственное что - на фри облаке монги далеко не уедешь. Поэтому тут или на VPS заводить ее, либо платное облако возыметь, ну или в край на локалочке.
Для тестового пет проекта бесплатного в принципе должно хватить, если не планируются множественные lookup и агрегации.
upd важное уточнение, если планируется работа со статистикой (повсеместные группировки, лукапы, то есть статистика - основа основ), то монга = не лучший вариант. При тех же вводных (считая и доступные CPU\RAM на VPS) эффективнее использовать SQL базы, и лучше даже что-то наиболее приспособленное для этого, по типу постгресс или даже лучше вертики.