Существует много информации о объектно-реляционных картографах и о том, как наилучшим образом избежать несоответствия импеданса, все из которых кажутся спорными, если нужно использовать базу данных объектов. Мой вопрос: почему это не используется чаще? Это из-за причин производительности или из-за того, что базы данных объектов приводят к тому, что ваши данные становятся собственностью вашего приложения или это связано с чем-то еще?Каковы преимущества и недостатки баз данных объектов?
ответ
- Знакомство. Администраторы баз данных знают реляционные концепции; объектных, не так много.
- Производительность. Реляционные базы данных доказали свою значимость намного лучше.
- Срок погашения. SQL - мощный, долго развитый язык.
- Поддержка поставщиков. Вы можете выбрать между многими другими сторонними (SQL-серверами) и сторонними (административными интерфейсами, сопоставлениями и другими типами интеграции) инструментами, чем в случае с OODBMS.
Естественно, объектно-ориентированная модель является более знакомы разработчика, и, как вы отмечаете, пощадит один из ОРМ. Но до сих пор реляционная модель оказалась более работоспособной.
См. Также последний вопрос, Object Orientated vs Relational Databases.
Контраргумент для знакомства: если вы сохраняете объекты, которые используют разработчики, вам все еще нужны администраторы db?Или вы могли бы нанять больше разработчиков, которые затем могут разделить свое время между администратором и развитием? –
Контраргурация к производительности: berkeleydb; его не реляционная, и может масштабироваться вертикально до 256 терабайт. Memcached; его не реляционная, и может масштабироваться горизонтально AFAIK бесконечно. –
Контраргумент к погашению: SQL не развит долго. Он недостаточно развит в течение длительного времени. Некоторые сказали бы, что C зрелый, потому что он существует уже давно. Я говорю, что C# является зрелым, потому что это частично результат нашего коллективного опыта с C. – Guge
Минусы:
не могут быть использованы программами, которые также не используют ту же структуру для доступа к хранилищу данных, что делает его более трудно использовать по предприятия.
Менее доступные ресурсы онлайн для не SQL-базы данных на основе
Нет совместимость по базе данных типов (не может переключиться на другой поставщик БД без изменения всех кода)
Вершина, вероятно, немного сука . Я предполагаю, что добавление нового свойства к объекту не совсем так легко, как добавление нового столбца в таблицу .
Одно возражение против баз данных объектов заключается в том, что оно создает плотную связь между данными и вашим кодом. Для некоторых приложений это может быть хорошо, но не для других. Одна хорошая вещь, которую дает реляционная база данных, - это возможность разместить много просмотров на ваших данных.
Ted Neward объясняет это и многое другое о OODBMSs намного лучше, чем это.
Это глупо. Если у вас нет этой жесткой связи, вы получаете стандартную частоту ошибок RDBMS в 30% ошибочных записей. –
Сёрен
Все причины вы заявили, действительны, но я вижу, что проблема с OODBMS логическая модель данных.Объектная модель (или, скорее, сетевая модель 70-х годов) не так проста, как реляционная, и поэтому уступает.
Простота не создает превосходства по умолчанию ... –
Если оба одинаково мощные, и в этом случае они с тех пор, как реляционная модель может представлять что-либо, тогда простота лучше. –
Я использую db4o, который является ООБДОМ и решает большинство зэков в списке:
- Дружественного - Программисты знают свой язык лучше, чем SQL (см Native запросов)
- Performance - это один является весьма субъективным, но вы можете посмотреть на PolePosition
- поддержки поставщика и зрелости - может меняться с течением времени
- не может использоваться программами, которые также не используют ту же структуру - есть OODB стандарты, и вы можете использование different frameworks
- Вершина, вероятно, немного сука - Вершина фактически easier!
Доводов Я заинтересован в являются:
- Родных запросов - db4o позволяет писать запросы в статическом языке типизированного, так что вам не придется беспокоиться о опечатках строки и поиске данных отсутствуют во время выполнения,
- Простота использования. Определение логики логики в доменном слое, уровень сохранения (отображение) и, наконец, база данных SQL, безусловно, является нарушением DRY. С OODB вы определяете свой домен, где он принадлежит.
Я согласен - OODB долгий путь, но они идут. И есть проблемы с доменами, которые лучше решаются OODB,
jodonnel, я не вижу, как использование объектных баз данных связывает код приложения с данными. Вы все же можете абстрагировать свое приложение от OODB с помощью шаблона репозитория и заменить его на базу данных SQL, поддерживаемую ORM, если вы правильно ее разрабатываете.
Для приложения OO база данных OO обеспечит более естественную пригодность для сохраняющихся объектов.
Возможно, верно то, что вы привязываете свои данные к своей модели домена, но тогда это суть!
Нехорошо ли иметь один способ взглянуть на данные, бизнес-правила и процессы с использованием централизованного представления домена?
Итак, большой профессионал в том, что OODB соответствует тому, как разрабатываются самые современные программные приложения с ориентацией на объекты на уровне предприятия, нет никаких дополнительных усилий для проектирования слоя данных с использованием другого (реляционного) дизайна. Дешевле строить и поддерживать, а во многих случаях общую производительность.
Cons, только общее отсутствие зрелости и принятия я считаю ...
Это не имеет ничего общего с представлением. То есть, в основном все приложения будут работать лучше с OODB. Но это также привело бы к тому, что многие DBA не работали/должны были освоить новую технологию. Еще больше людей будут неработоспособны, исправляя ошибки в данных. Это вряд ли сделает OODB популярным среди компаний. Гэвин, кажется, совершенно не согласен, лучшая ссылка была бы Kirk
Ссылка на замечательный пост в блоге Кирка Пеппердина стоит +1 –
Я думаю, что это должен быть CW – Konstantinos