*если в демагогию*
NoSQL подходит для хранения, где логику взаимосвязей между объектами задаёт программист выше уровнем, SQL же напротив, обязывает описать логику хранения на уровне БД.
Тот и другой подход имеют право на жизнь и могут быть производительней один другого в зависимости от ситуации.
Модная тенденция перехода во многих аспектах разработки на NoSQL исходит из того, что большинство фреймворков (да и отрасль разработки в целом) созрела для перехода на эту парадигму.
*если в практику*
NoSQL - это чаще всего хранение типа ключ:значение, т.е. вы можете очень быстро записывать и читать парные значения, можете их быстро реплицировать, распределять, можете масштабировать эту конструкцию, всё что вам нужно в таком подходе, дак это поверх, выше уровнем абстракций описать логику связей между этими записями \ таблицами.
В таком хранении у вас, на уровне БД, не будет возможности сказать, что поле A в таблице Аа должно быть заполнено значением из таблицы Бб и поля Б, вам придётся писать код, который сам определит эту логику.
Само собой, вам придётся и писать логику всех запросов к данным, все джойны и так далее (хотя некоторые фреймворки облегчают или нивелирую это).