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

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


person Kevin Pang    schedule 14.09.2008    source источник


Ответы (7)


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

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

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

person Sören Kuklau    schedule 14.09.2008
comment
Контраргумент привычности: если вы сохраняете объекты, которые используют разработчики, вам все равно нужны администраторы БД? Или вы могли бы нанять больше разработчиков, которые затем могли бы разделить свое время между администратором и разработкой? - person Phillip B Oldham; 16.11.2008
comment
Контраргумент производительности: berkeleydb; он не относительный и может масштабироваться по вертикали до 256 терабайт. Memcached; это не относительное, и может масштабироваться по горизонтали AFAIK бесконечно. - person Phillip B Oldham; 16.11.2008
comment
Контраргумент зрелости: SQL разрабатывается недолго. Он недоработан долгое время. Некоторые скажут, что C зрелый, потому что он существует уже давно. Я считаю C # зрелым, потому что отчасти это результат нашего коллективного опыта работы с C. - person Guge; 03.12.2008
comment
Одна из причин использовать объектно-реляционный преобразователь и реляционную базу данных заключается в том, что если вы столкнетесь с проблемами производительности, вы можете вернуться к вручную написанному SQL. Люди, работающие с базами данных, думают об обработке данных намного дольше, чем люди, ориентированные на объектно-ориентированные технологии. Развитие SQL не остановилось: последняя версия стандарта была выпущена в 2008 году. Хотя между добавлением функции в стандарт и ее реализацией в реальных базах данных проходит много времени. Например. рекурсивные запросы были добавлены в стандарт 1999 года, но postgresql может быть единственным, у которого есть работающая реализация. - person joseph brenner; 22.01.2010
comment
Что касается производительности, самая большая база данных в мире (1000 ТБ для ускорителя элементарных частиц) - OO ... - person Bakaburg; 18.05.2011

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

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

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

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

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

person Goran    schedule 05.10.2008

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

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

person jodonnell    schedule 14.09.2008
comment
Это глупо. Если у вас нет этой тесной связи, вы получите стандартную частоту ошибок РСУБД в 30% ошибочных записей. - person Stephan Eggermont; 26.09.2009

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

person Stephan Eggermont    schedule 25.09.2009
comment
Ссылка на отличный пост в блоге Кирка Пеппердайна стоит +1. - person Pascal Thivent; 26.09.2009

Минусы:

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

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

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

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

person Quibblesome    schedule 14.09.2008

Sören

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

person Andrew not the Saint    schedule 04.10.2008
comment
Если оба они одинаково мощны, а в данном случае они таковы, поскольку реляционная модель может представлять что угодно, тогда простота лучше. - person Andrew not the Saint; 29.12.2008

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

Для объектно-ориентированного приложения объектно-ориентированная база данных будет более естественным образом подходить для сохраняемых объектов.

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

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

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

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

person Keith Patton    schedule 06.10.2008