Каковы плюсы и минусы объектных баз данных?

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

7 ответов

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

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

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

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

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

Плюсы, которые меня интересуют:

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

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

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

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

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

Минусы:

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

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

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

  • Управление версиями, вероятно, немного стервозно. Я полагаю, что добавить новое свойство к объекту не так просто, как добавить новый столбец в таблицу.

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

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

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

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

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

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

Сёрен

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

Другие вопросы по тегам