Почему объектно-ориентированные базы данных не используются так часто, как реляционные базы данных? [закрыто]

18

Я сталкивался со многими системами управления реляционными базами данных (RDBMS). Но недавно я использовал hibernate, что заставило меня задуматься, почему объектно-ориентированные базы данных не более популярны.

Если объектно-ориентированные языки, такие как Java или C #, так популярны, то почему же объектно-ориентированные системы управления базами данных (OODBMS) также не пользуются большей популярностью?

Рейчел
источник
1
Подход NoSQL сейчас чрезвычайно популярен. СУРБД ограничены и ограничены, и, к счастью, они быстро теряют свои позиции.
SK-логика
Что вы называете oodb? hibernate - это просто фреймворк для взаимодействия с rdbms с помощью oo-интерфейса.
Саймон Бергот
2
Аналогичный вопрос был задан в 2009 году для SO, см. Stackoverflow.com/questions/1350044/… ИМХО почти каждый ответ, данный там, все еще действителен сегодня.
Док Браун
@ Симон от oodb, я имею в виду объектно-ориентированные базы данных
1
@Simon: Versant - oodb (я видел в производстве в двух разных компаниях).
Джорджио

Ответы:

11

Есть несколько причин.

  1. Многие разработчики имеют опыт только в моделировании реляционных данных. Чтобы использовать ОО-базы данных, им необходимо изучить совершенно другой способ моделирования и анализа данных. Это либо очень сложно, либо довольно много времени.
  2. У реляционных БД было много времени для созревания. Даже бесплатные реляционные БД имеют передовые методы оптимизации и индексации. Кроме того, реляционные данные легко хранить и индексировать. То же самое нельзя сказать о базах данных ОО.
  3. Когда реляционные и ОО модели начали появляться. У реляционного есть огромное преимущество: он математически «правильный» и имеет стандарт для сохранения и запроса данных. ОО не было ничего подобного.
  4. [спекуляция] Многие крупные игроки вкладывают много ресурсов в создание своих реляционных БД. Вместо этого было бы контрпродуктивно поддерживать ОО-БД. Поэтому многие из них вложили средства в интеграцию ОО-принципов в реляционную модель, делая большинство современных БД так называемыми объектно-реляционными. ИМО эти модели хуже, чем чисто реляционные или чистые ОО. [/ Speculation]
  5. [напыщенная речь] Последнее, на что следует обратить внимание, это то, что многие разработчики не совсем понимают ОО-способ моделирования данных. Это обычно приводит к неоптимальным, анемичным моделям. Так много компаний-разработчиков, которые полагаются на дешевых и неопытных разработчиков, предпочли бы выбрать простую, реляционную модель, которой учат во всех колледжах CS, чем выбирать жесткий и недоказанный подход OO. [/ Rant]
Euphoric
источник
5
Я согласен со всеми вашими пунктами, кроме последнего. Я думаю, что разработчикам проще испортить реляционные базы данных, чем объектные базы данных. Составные ключи и разорванные отношения встречаются очень часто, но мне кажется, что по крайней мере немного сложнее испортить иерархию классов.
Тьяарт
@Tjaart испортит иерархию классов, кажется нормой для большинства разработчиков в ОО.
согнуло
10

Когда впервые появились базы данных, ООП все еще не было способом программирования. С другой стороны, реляционные базы данных получили большую популярность. И SQL, введенный IBM в 80-х годах, быстро стал языком общения во всех базах данных.

Когда ООП стало популярным, было несколько попыток, но есть некоторые проблемы. Во-первых, настоящую OODBMS действительно сложно реализовать. В случае реляционной базы данных таблица и связанные с ней индексы представляют собой довольно простые структуры (например, B-деревья). Другая причина заключается в том, что за реляционной моделью лежит много теории, она напрямую вытекает из математической теории множеств. Существуют известные способы правильного проектирования реляционной базы данных (например, нормализация и т. Д.). И последнее, но не менее важное: люди уже привыкли к SQL.

Современные NoSQL-решения в большинстве случаев не являются шагом к OODBMS. Многие из них все еще являются реляционными, только лишены JOINs. Лишь немногие из них на самом деле являются объектными хранилищами, но на самом деле не являются OODBMS, поскольку они не осведомлены об отношениях между объектами.

Еще одна причина, по которой OODBMS не является таким сильным толчком, заключается в том, что существует решение "OODBMS" для бедных - ORM. Это приобрело огромную популярность, поскольку они поддерживаются хорошо известными, стабильными и протестированными механизмами БД, но они обеспечивают отображение объектов. Конечно, это не настоящие OODB.

Vartec
источник
«Еще одна причина, по которой OODBMS не является таким сильным толчком, заключается в том, что существует решение« OODBMS для бедных »- ORM.»: Очень хороший момент! +1.
Джорджио
Это не правда. MUMPS был разработан в 1966 году, и только к 1974 году IBM начала первый исследовательский проект по разработке System R, первой в мире RDBMS. Oracle выпустила свои первые в мире RDBM коммерческого уровня в том же году, когда появился InterSystems M. Вопрос в том, что случилось после этого. Ответ, вероятно, заключается в том, что ODBMS не были оптимизированы для создания отчетов, в то время как в большинстве случаев использования LOB-приложений наблюдается значительный дисбаланс между операциями чтения и записи.
Алексей Зимарев
-2

OODBMS хороши для хранения сложных данных. Однако в большинстве случаев, даже при использовании ОО-языков, необходимые данные относительно просты. Поэтому традиционные СУБД более подходят.

Питер Б
источник
2
Данные почти никогда не бывают простыми, и я думаю, что вы не можете объяснить, почему OODB не так популярен, потому что в конце концов ORM работает очень хорошо.
Тьяарт