Каковы плюсы и минусы объектных баз данных?
-
09-06-2019 - |
Вопрос
Существует много информации об объектно-реляционных картографах и о том, как наилучшим образом избежать несоответствия импеданса, все из которых кажутся спорными, если использовать базу данных объектов.Мой вопрос в том, почему это не используется чаще?Это из-за соображений производительности или из-за того, что объектные базы данных делают ваши данные собственностью вашего приложения, или это из-за чего-то другого?
Решение
- Фамильярность. Администраторы баз данных знают реляционные концепции;объектных - не так уж и много.
- Производительность. Доказано, что реляционные базы данных масштабируются намного лучше.
- Зрелость. SQL - мощный, давно разработанный язык.
- Служба поддержки поставщиков. Вы можете выбирать между гораздо большим количеством инструментов первого производителя (SQL-серверы) и сторонних производителей (административные интерфейсы, сопоставления и другие виды интеграции), чем в случае с ООДБМ.
Естественно, объектно-ориентированная модель более привычна для Разработчик, и, как вы заметили, пощадил бы одного из ORM.Но до сих пор реляционная модель оказывалась более работоспособным вариантом.
Смотрите также недавний вопрос, Объектно-ориентированные и Реляционные базы данных.
Другие советы
Я использовал db4o который является ООДБ и решает большинство перечисленных минусов:
- Знакомство - Программисты знают свой язык лучше, чем SQL (см. Собственные запросы)
- Производительность - этот показатель весьма субъективен, но вы можете взглянуть на Противопоставление
- Поддержка поставщиков и зрелость - могут меняться с течением времени
- Не может использоваться программами, которые также не используют ту же платформу - существуют стандарты OODB, и вы можете использовать различные фреймворки
- Управление версиями, вероятно, немного сука - Управление версиями на самом деле легче!
Плюсы, которые меня интересуют, заключаются в следующем:
- Собственные запросы - Db4o позволяет вам писать запросы на вашем языке статической типизации, поэтому вам не нужно беспокоиться о неправильном вводе строки и обнаружении отсутствия данных во время выполнения,
- Простота использования - Определение логики бизнеса на уровне домена, уровне сохраняемости (mapping) и, наконец, базы данных SQL, безусловно, является нарушением DRY.С помощью OODB вы определяете свой домен, которому он принадлежит.
Я согласен - ООДБ предстоит пройти долгий путь, но они идут.И есть проблемы с доменом, которые лучше решаются с помощью OODB,
Одно из возражений против объектных баз данных заключается в том, что это создает тесную связь между данными и вашим кодом.Для некоторых приложений это может быть нормально, но не для других.Одна приятная вещь, которую дает вам реляционная база данных, - это возможность создавать множество представлений для ваших данных.
Тед Ньюард объясняет это и многое другое о OODBMS намного лучше, чем это.
Это не имеет никакого отношения к производительности.То есть, в принципе, все приложения работали бы лучше с ООДБ.Но это также лишило бы многих администраторов баз данных работы / необходимости осваивать новую технологию.Еще больше людей остались бы без работы, исправляя ошибки в данных.Это вряд ли сделает ООДБ популярными среди устоявшихся компаний.Гэвин, кажется, совершенно невежественен, лучшей ссылкой было бы Kirk
Минусы:
Нельзя использовать программы, не использовать с той же основой для доступа к хранилищам данных, что делает она сложнее в использовании по предприятия.
Меньше ресурсов, доступных онлайн для базы данных, не основанной на SQL
Нет совместимости между типами баз данных (невозможно переключиться на другую базу данных поставщика без изменения всего кода)
Контроль версий-это, наверное, немного сука.Я бы предположил, что добавить новое свойство к объекту не так просто, как добавить новый столбец в таблицу.
Sören
Все указанные вами причины обоснованны, но я вижу, что проблема с ООДБМ заключается в логической модели данных.Объектная модель (или, скорее, сетевая модель 70-х) не так проста, как реляционная, и поэтому уступает ей.
джодоннел, я не понимаю, как использование объектных баз данных связывает код приложения с данными.Вы все еще можете абстрагировать свое приложение от OODB с помощью шаблона репозитория и заменить его базой данных SQL с поддержкой ORM, если вы все спроектируете правильно.
Для OO-приложения база данных OO обеспечит более естественное соответствие для сохраняющихся объектов.
Что, вероятно, верно, так это то, что вы привязываете свои данные к своей модели предметной области, но в этом-то и суть!
Разве не было бы неплохо иметь единый способ просмотра данных, бизнес-правил и процессов с использованием представления, ориентированного на домен?
Итак, большим плюсом является то, что база данных ООДБ соответствует тому, как разрабатываются большинство современных объектно-ориентированных программных приложений корпоративного уровня, не требуется дополнительных усилий для разработки уровня данных с использованием другого (реляционного) дизайна.Дешевле в сборке и обслуживании и во многих случаях в целом более высокая производительность.
Минусы, я думаю, просто общее отсутствие зрелости и принятия...