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