Вы полностью денормализуетесь, то есть в документе "products" у вас действительно будет значение, содержащее фактическую строку категории, что приведет к большому количеству повторений данных [...]
Верно, денормализация означает хранение дополнительных данных.Это также означает меньшее количество коллекций (таблиц в SQL), что приводит к меньшему количеству связей между частями данных.Каждый отдельный документ может содержать информацию, которая в противном случае поступила бы из нескольких таблиц SQL.
Теперь, если ваша база данных распределена по нескольким серверам, более эффективно запрашивать один сервер, а не несколько серверов.С денормализованной структурой баз данных документов гораздо более вероятно, что вам нужно всего лишь запросить один сервер, чтобы получить все необходимые вам данные .С базой данных SQL есть вероятность, что ваши связанные данные распределены по нескольким серверам, что делает запросы очень неэффективными.
[...] и ошибки гораздо сложнее исправить.
Тоже верно.Большинство решений NoSQL не гарантируют такие вещи, как ссылочная целостность, которые являются общими для баз данных SQL.В результате ваше приложение отвечает за поддержание отношений между данными.Однако, поскольку количество связей в базе данных документов очень мало, это не так сложно, как может показаться.
Одним из преимуществ базы данных документов является то, что она без схемы .Вы можете свободно определять содержимое документа всегда;вы не привязаны к заранее определенному набору таблиц и столбцов, как с базой данных SQL.
Реальный пример
Если вы строите CMS поверх базы данных SQLу вас будет либо отдельная таблица для каждого типа контента CMS, либо отдельная таблица с общими столбцами, в которой вы будете хранить все типы контента.С отдельными таблицами у вас будет много таблиц. Просто подумайте обо всех таблицах объединения, которые вам понадобятся для таких вещей, как теги и комментарии для каждого типа контента .С одной общей таблицей ваше приложение отвечает за правильное управление всеми данными.Кроме того, необработанные данные в вашей базе данных трудно обновлять и совершенно бессмысленно вне приложения CMS.
С базой данных документов вы можете хранить каждый тип содержимого CMS в одной коллекции.при сохранении строго определенной структуры в каждом документе.Вы также можете хранить все теги и комментарии в документе, что делает извлечение данных очень эффективным .Эта эффективность и гибкость достигаются ценой: ваше приложение несет большую ответственность за управление целостностью данных.С другой стороны, по сравнению с базой данных SQL цена на масштабирование с базой документов намного меньше.
Совет
Как видите, решения как на SQL, так и на NoSQL имеют свои преимущества инедостатки.Как Дэвид уже указывал , каждый тип имеет свое применение.Я рекомендую вам проанализировать ваши требования и создать две модели данных: одну для решения SQL и одну для базы данных документов.Затем выберите наиболее подходящее решение с учетом масштабируемости.