SQL vs NoSQL (кратко)

NoSQL базы, такие как Mongo, идеальны для того чтобы бысто развернуть проект и начать его делать, так как они намного проще в создании.

Агрегация в Mongo (или попьюлетй называют, если применять библиотеку mongoose) – обращение по id к другой таблице. Например, есть таблица юзеров и у каждого id_category, и вот обращение к категории юзера, чтобы ее вывести, это и есть агрегация / попьюлейт. По сути это аналог JOIN в SQL, когда таблицы “виртуально” совмещаются, чтобы получить нужные данные по PRIMARY KEY (id, ведущего на другую таблицу).

И вот один из главных недостатков Mongo и других NoSQL баз, что мы можем получить категорию юзера по id_category, но очень сложно сделать наоборот – получить список юзеров по категории. Для этого нужно в каждом объекте категории держать целый массив юзеров, которые к ней относятся, что так себе практика… Другое дело SQL, где при помощи оператора JOIN мы бы легко это сделали.

На самом деле в Mongo, начиная с версии 3.2 (2018 г.), был добавлен оператор $lookup, который потом в версии 3.6 был еще расширен в плане возможностей. Он является по сути аналогом  left outer join и позволяющий делать подобные операции, но все равно приенение его в примерах выглядит намного сложнее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *