Почему объектно-ориентированные базы данных не были успешными (пока)? [закрыто]

StackOverflow https://stackoverflow.com/questions/170649

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

Кроме некоторых дополнительных приложений (огромных графов объектов, которые не могут быть сохранены в памяти, но для которых отношения плохо упрощаются при использовании СУБД), в этих инструментах действительно нет необходимости.

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

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

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

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

Ну, это странно, не правда ли? Существует такой толчок к доменно-ориентированному проектированию, как зенит объектно-ориентированного анализа и проектирования, и существуют корпоративные шаблоны, позволяющие использовать системы ORM для сохранения наших объектов. Для меня просто имеет смысл, что если ваш ДИЗАЙН вашего приложения ориентирован на объект и сфокусирован на предметной области, то OODB принесет большую пользу вашему приложению.

Помимо вопросов, связанных со зрелостью и восприятием, с философской точки зрения OODB может показаться полезным или OO-приложением. не нужно поддерживать этот слой отображения для начинающих;)

Но обратите внимание, если вы не занимаетесь проектированием дисков домена и не используете объекты в качестве объектов данных и не любите хранимые процедуры, значит, вы их не получите;)

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

Если я могу усилить точку зрения Фила: стандартизация SQL. OODB пробовали языки запросов, такие как OQL, но они никогда не следовали истинному стандарту. Кроме того, качество языков запросов было подозрительным, возможно, из-за отсутствия стандартизации. Стандарты способствуют конкуренции, которая порождает качество.

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

Базы данных в некоторой степени аналогичны гексагексафлексагонам.

Это и о / р-мапперы. Благодаря им разница с настоящими OO-DB становится намного меньше, в то время как вышеупомянутые преимущества остаются в силе.

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

Я думаю, что есть две философские причины.

Во-первых, люди традиционно стремятся отделить постоянство от реальной функциональности. Как только вы убираете «жизнь» объекта подальше от него и храните его в первую очередь для настойчивости, он становится рекордом, а затем появляется тенденция рассматривать его как «безжизненный». объект данных.

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

Я думаю, что с O / R различие начинает исчезать. Например, я использую hibernate для сброса действительно сложных иерархий классов в базу данных MySQL. Тем не менее, я не пишу критичные для производительности вещи для своего проекта, поэтому я уверен, что это не сделано эффективно.

Причина медленного принятия OODB в значительной степени основана на нескольких ключевых факторах, делающих реляционные базы данных SQL более популярными и / или более подходящими. Хотя чисто объектно-ориентированные базы данных находятся в состоянии, когда они преодолевают многие недостатки реляционной модели, некоторые ключевые моменты отсутствуют.

С одной стороны, им, как правило, не хватает поддержки централизованного управления базами данных, хотя это быстро исправляется в различных продуктах.

Вторая причина заключается в том, что очень немногие системы реализуют стандартный язык запросов и вместо этого полагаются на язык программирования или специализированные языки запросов для извлечения и манипулирования данными в хранилище. Это остановка для многих, если им придется изучать новый язык запросов на основе совершенно другого мышления программиста, используемого для решений на основе NoSQL. Кроме того, большинство базирующихся на SQL / реляционных баз данных теперь имеют некоторую поддержку объектно-ориентированного проектирования, плюс у нас есть оболочки, такие как ORM, которые многие используют для «обхода»; проблемы, связанные с отсутствием доступности реляционных баз данных на выбранном языке программирования.

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

Кто знает, что ждет в будущем?

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

В настоящее время я думаю о том, чтобы сделать это в качестве своего магистерского проекта, чтобы предоставить общую платформу для СУБД, которая поддерживает почти все компоненты, которые обычно используются в современной СУБД, что обеспечивает нелинейную структурированную СУБД. Во время обучения я наткнулся на проект db4o, который является подходом (реализованным) использования OODBMS только для Java и .net, поэтому это может быть еще одной причиной отсутствия универсальности для всех типов платформ и языков.

Я думаю, это потому, что такие крупные парни, как Oracle, инвестировали в реляционные базы данных, в то время как объектно-ориентированное движение набирало обороты ... может быть, они станут мейнстримом, если Oracle / Microsoft вложат в него большие средства ... что кажется маловероятным потому что у них нет веских причин для этого ... это упростит жизнь многим программистам ... но "упростит жизнь программистов" для них это не очень хорошая бизнес-цель!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top