Вопрос

Существует много информации об объектно-реляционных картографах и о том, как наилучшим образом избежать несоответствия импеданса, все из которых кажутся спорными, если использовать базу данных объектов.Мой вопрос в том, почему это не используется чаще?Это из-за соображений производительности или из-за того, что объектные базы данных делают ваши данные собственностью вашего приложения, или это из-за чего-то другого?

Это было полезно?

Решение

  • Фамильярность. Администраторы баз данных знают реляционные концепции;объектных - не так уж и много.
  • Производительность. Доказано, что реляционные базы данных масштабируются намного лучше.
  • Зрелость. SQL - мощный, давно разработанный язык.
  • Служба поддержки поставщиков. Вы можете выбирать между гораздо большим количеством инструментов первого производителя (SQL-серверы) и сторонних производителей (административные интерфейсы, сопоставления и другие виды интеграции), чем в случае с ООДБМ.

Естественно, объектно-ориентированная модель более привычна для Разработчик, и, как вы заметили, пощадил бы одного из ORM.Но до сих пор реляционная модель оказывалась более работоспособным вариантом.

Смотрите также недавний вопрос, Объектно-ориентированные и Реляционные базы данных.

Другие советы

Я использовал db4o который является ООДБ и решает большинство перечисленных минусов:

  • Знакомство - Программисты знают свой язык лучше, чем SQL (см. Собственные запросы)
  • Производительность - этот показатель весьма субъективен, но вы можете взглянуть на Противопоставление
  • Поддержка поставщиков и зрелость - могут меняться с течением времени
  • Не может использоваться программами, которые также не используют ту же платформу - существуют стандарты OODB, и вы можете использовать различные фреймворки
  • Управление версиями, вероятно, немного сука - Управление версиями на самом деле легче!

Плюсы, которые меня интересуют, заключаются в следующем:

  • Собственные запросы - Db4o позволяет вам писать запросы на вашем языке статической типизации, поэтому вам не нужно беспокоиться о неправильном вводе строки и обнаружении отсутствия данных во время выполнения,
  • Простота использования - Определение логики бизнеса на уровне домена, уровне сохраняемости (mapping) и, наконец, базы данных SQL, безусловно, является нарушением DRY.С помощью OODB вы определяете свой домен, которому он принадлежит.

Я согласен - ООДБ предстоит пройти долгий путь, но они идут.И есть проблемы с доменом, которые лучше решаются с помощью OODB,

Одно из возражений против объектных баз данных заключается в том, что это создает тесную связь между данными и вашим кодом.Для некоторых приложений это может быть нормально, но не для других.Одна приятная вещь, которую дает вам реляционная база данных, - это возможность создавать множество представлений для ваших данных.

Тед Ньюард объясняет это и многое другое о OODBMS намного лучше, чем это.

Это не имеет никакого отношения к производительности.То есть, в принципе, все приложения работали бы лучше с ООДБ.Но это также лишило бы многих администраторов баз данных работы / необходимости осваивать новую технологию.Еще больше людей остались бы без работы, исправляя ошибки в данных.Это вряд ли сделает ООДБ популярными среди устоявшихся компаний.Гэвин, кажется, совершенно невежественен, лучшей ссылкой было бы Kirk

Минусы:

  • Нельзя использовать программы, не использовать с той же основой для доступа к хранилищам данных, что делает она сложнее в использовании по предприятия.

  • Меньше ресурсов, доступных онлайн для базы данных, не основанной на SQL

  • Нет совместимости между типами баз данных (невозможно переключиться на другую базу данных поставщика без изменения всего кода)

  • Контроль версий-это, наверное, немного сука.Я бы предположил, что добавить новое свойство к объекту не так просто, как добавить новый столбец в таблицу.

Sören

Все указанные вами причины обоснованны, но я вижу, что проблема с ООДБМ заключается в логической модели данных.Объектная модель (или, скорее, сетевая модель 70-х) не так проста, как реляционная, и поэтому уступает ей.

джодоннел, я не понимаю, как использование объектных баз данных связывает код приложения с данными.Вы все еще можете абстрагировать свое приложение от OODB с помощью шаблона репозитория и заменить его базой данных SQL с поддержкой ORM, если вы все спроектируете правильно.

Для OO-приложения база данных OO обеспечит более естественное соответствие для сохраняющихся объектов.

Что, вероятно, верно, так это то, что вы привязываете свои данные к своей модели предметной области, но в этом-то и суть!

Разве не было бы неплохо иметь единый способ просмотра данных, бизнес-правил и процессов с использованием представления, ориентированного на домен?

Итак, большим плюсом является то, что база данных ООДБ соответствует тому, как разрабатываются большинство современных объектно-ориентированных программных приложений корпоративного уровня, не требуется дополнительных усилий для разработки уровня данных с использованием другого (реляционного) дизайна.Дешевле в сборке и обслуживании и во многих случаях в целом более высокая производительность.

Минусы, я думаю, просто общее отсутствие зрелости и принятия...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top