1 - выполнение нескольких разделенных запросов оставляет вас в беспорядке, когда вы получаете что-то из таблицы 1, оно может быть удалено и все еще находится в таблице 2 - теперь предположим, что есть 5 взаимосвязанных таблиц.
2 - выполнение запросов с, по крайней мере, умеренно сложной логикой над полями, которые не являются мифическим идентификатором
3 - контроль количества извлекаемых данных (вам вряд ли когда-либо понадобится более 50% данных, необходимых для десериализации / созданиядопустимые объекты и, что еще хуже, целые деревья связанных объектов)
4 - коррелированные запросы (вложенные выборки), которые SQL-сервер будет оптимизировать, например, для объединения сложностей или лучше (| T1 | + | T2 | + | T3 | +| T4 |) в то время как любой ORM или nonSQL должен будет повторять внутренние запросы и создавать мультипликативную сложность (| T1 | | T2 | | T3 | * | T4 |)
5- размеры наборов данных, масштабируемость не только в размерах наборов данных, но и в обработке параллелизма при обновлениях.Даже ORM-ы, которые поддерживают транзакции, делают их такими длинными, что шансы на взаимоблокировки увеличиваются экспоненциально.
6 - слепые обновления (гораздо больше данных затрагиваются без причины), а также их зависимость и сбой на основе слепого инструмента (мифическийверсия, которая реально необходима, скажем, в 1% реляционной модели данных, но ORM и другие должны иметь ее везде)
7 - отсутствие каких-либо стандартов и совместимости - это означает, что ваша система и данные всегда будут в значительной степениболее высокий риск и зависит от изменений программного обеспечения, вызванных академическим авантюризмом, а не какой-либо реальной деловой ответственностью и с ожиданием инвестировать много ресурсов только в тестирование изменений.Закажите записи из T1, так как не было никакого внешнего ключа для T2, чтобы остановить его.Обычно это обычная вещь для отдельных запросов.
9 - отрицательный тренд зрелости - вместо стандартизации продолжается расщепление - дайте ему 20 лет и, возможно, он станет стабильным
Последнее, но не менее важное - это не такНе уменьшайте всю сложность (такая же корреляция между данными все еще существует), но это очень усложняет отслеживание и управление сложностью, а также дает какие-либо реалистичные меры или прозрачность, когда что-то идет не так.И это добавляет сложности 1-2 слоя.Если что-то идет не так в ваших таблицах SQL, у вас есть инструменты и запросы для обнаружения и даже исправления ваших данных.Что вы будете делать, когда какой-то ORM просто скажет вам, что у него есть «неверный указатель» и выдает исключение, так как вы наверняка не хотите «неверный объект»?
Я думаю, этого достаточно: -)