Пытается перейти с РСУБД на NOSQL (в частности, MongoDB). Так несколько вещей, которые я получил до сих пор:Обновление денормализованных дублированных данных
1) Денормализация нормально для NoSQL
2) дублирование данных в порядке.
Так я озадачился дублированным обновлением данных ...
Давайте представим, что мы имеем автомобили и лодку. Они имеют общее свойство цвета. Затем мы решили переименовать цвет. Мы не хотим использовать «Красный», вместо этого мы хотим использовать «Ярко-красный».
RDBMS случай: Так, например, в RDBMS у меня будет три таблицы: автомобиль, лодка, цвет. Автомобиль и лодка имеют внешние ключи, связанные с Таблицей цветов. Я обновляю только одну таблицу с одним запросом и получаю согласованные данные.
NOSQL case: У меня есть две коллекции ... Лодки и автомобили. У нас есть цветовое поле для каждого документа. Например. Лодка { цвета: "красный", типа: "быстрые" }
автомобили { цвета: "красный", типа: "медленная" }
Поэтому, когда я хочу, чтобы изменить имя цвета, я должен запустить два запроса (для каждой коллекции) и обновить каждый документ, где color == "red"? Но что, если у меня есть десятки коллекций с дубликатами и может ЗАБЫТЬ один из них? Существует ли какой-либо общий подход/дизайн БД, чтобы избежать/облегчить выполнение таких случаев? Или это один из компромиссов nosql?
Мне нужно создать действительно большие объекты. Чтобы получить данные, которые я использую от 4 до 7 подключений в своих sql-запросах, их действительно трудно читать и поддерживать. Поэтому я решил объединить данные. Я считаю, что nosql может быть применим для моего приложения. –
Тогда вам нужно жить с вашим решением и обновлять этот объект вручную (он всегда компромисс). Или используйте некоторый инструмент ORM, который построит для вас сложный запрос. – talex