Я смотрел на рост движения NoSql и сопровождающий рост популярности баз данных документов, таких как mongodb, ravendb и другие. Хотя об этом очень много, я чувствую, что не понимаю что-то важное.
Скажем, что вы реализуете приложение хранилища и хотите хранить в продуктах базы данных, все из которых имеют одну уникальную категорию. В реляционных базах данных это будет достигнуто за счет наличия двух таблиц, продукта и таблицы категорий, а таблица продуктов будет иметь поле (называемое, возможно, "category_id" ), которое будет ссылаться на строку в таблице категорий, содержащую правильную запись категории. Это имеет ряд преимуществ, в том числе неповторяемость данных.
Это также означает, что, если вы ошибочно указали название категории, вы можете обновить таблицу категорий, а затем зафиксировать ее, поскольку это единственное место, которое имеет значение.
Однако в документах баз данных это не так. Вы полностью денормализуете, что означает в документе "товары", вы действительно имели бы значение, содержащее фактическую строку категории, что приводило бы к большому количеству повторений данных, а ошибки намного сложнее исправить. Размышляя об этом больше, разве это не означает, что выполнение запросов типа "дать мне все продукты с этой категорией" может привести к результату, который не имеет целостности.
Конечно, путь вокруг этого заключается в том, чтобы повторно реализовать целую "category_id" вещь в базе данных документа, но когда я доберусь до этого момента, я понимаю, что я должен просто оставаться с реляционными базами данных вместо повторной реализации их.
Это заставляет меня поверить, что мне не хватает ключевого момента в отношении баз данных документов, который приводит меня к этому неправильному пути. Поэтому я хотел поместить его в стек-переполнение, чего мне не хватает?