Объектно-ориентированные базы данных: преимущества и недостатки

Тема: Бизнес  |   Дата: 04.06.2015   |  Автор: Александр Длабик

базы даных

Объектно-ориентированные баз данных

Зачем нужны объектно-ориентированные базы данных?

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

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

Такое несоответствие модели данных приложения и СУБД (impedance mismatch), а также вызванное им падение производительности, долгое время воспринималось как необходимое зло, как недостаток, с которым нужно просто смириться.

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

  • Что такое объектно-ориентированные базы данных (СУООБД)?
  • Можно ли считать OODBMS полноценной альтернативой (РСУБД)?
  • Каковы преимущества и недостатки использования СУООБД сравнительно с РСУБД?

Обзор объектно-ориентированных баз данных

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

Концепции объектно-ориентированного программирования, такие как инкапсуляция, наследование и полиморфизм вкупе с традиционными требованиями к транзакционной системе (Атомарность – Согласованность – Изолированность – Надежность) позволяют эффективно управлять действительно огромными массивами данных.

Отличительной особенностью объектной базы данных является прозрачная организация доступа к объектам как в памяти, так и в самой базе данных. Такой подход коренным образом отличается от РСУБД – отпадает необходимость как в языке запросов SQL, так и в реализации CLI-интерфейсов, подобных ODBC, ADO или JDBC.

Сравнение объектно-ориентированных и реляционных баз данных

Концепции построения объектно-ориентированных и реляционных баз данных во многом схожи. Так, таблица РСУБД аналогична классу СУООБД, а кортеж подобен экземпляру класса, но отличается от последнего тем, что имеет атрибуты, но не имеет методов. Столбец в кортеже похож на атрибут класса, но может содержать только простые типы данных, в то время, как атрибуты класса могут быть представлены данными любых типов.

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

Преимущества

  1. Сложные комплексные объекты и взаимосвязанные данные
  2. Объекты в СУООБД могут содержать произвольное количество как простых типов данных, так и других объектов.

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

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

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

  3. Иерархия классов
  4. В реальном мире данные имеют иерархическую структуру. Чтобы смоделировать отношения иерархии в РСУБД, нужно либо воспользоваться идентификаторами, либо создать связь между соответствующими таблицами с помощью внешних ключей. В СУООБД один класс просто является родительским для производного.

  5. Нет необходимости в специальном языке запросов
  6. Хотя использование языка запросов остается все еще возможным, это совсем не обязательно, поскольку доступ к объектам осуществляется явным и очевидным образом.

  7. Устраняется несоответствие модели данных приложения и СУБД
  8. Как уже было сказано выше, при использовании РСУБД значительная часть времени приложения тратится на преобразование объектов в строки и столбцы (кортежи) и наоборот. Дополнительные трудности создает неточное соответствие простых типов базы данных и языка программирования, на котором написано приложение. В случае использования СУООБД такого рода несоответствия полностью устранены.

  9. Отсутствуют первичные ключи
  10. Идентификация объектов осуществляется самой системой и не является заботой пользователя, поскольку не существует никаких ограничений на характер хранимых в объекте значений.

  11. Единая модель данных
  12. Поскольку все сущности представляют собой объекты, не существует разницы между моделью базы данных и моделью приложения. Так как в этом случае система является единым объектным комплексом, она может быть исчерпывающе смоделирована одной-единственной UML диаграммой.

Недостатки

  • Изменение схемы РСУБД не зависит от приложения, в то же самое время изменение схемы СУООБД влечет за собой полную перекомпиляцию системы.
  • Жесткая зависимость от языка программирования. Это означает, что доступ к данным возможен лишь через API данного языка. РСУБД, в этом плане, имеет преимущество.
  • Невозможность создавать ad-hoc запросы. В РСУБД можно создавать новые таблицы, объединяя существующие и затем делая из них выборки. В СУООБД невозможно продублировать данную семантику просто «объединив» классы. В этом плане РСУБД демонстрирует гораздо большую гибкость, в то время как характер запросов СУООБД в очень высокой степени зависит от общей структуры системы.

Выгоды от использования объектно-ориентированных баз данных достаточно очевидны. Понятно, что наибольшую пользу их внедрение принесет в случае, когда использование РСУБД нецелесообразно. Тем не менее, СУООБД не следует рассматривать в качестве очередной «серебряной пули» – это просто еще один инструмент для эффективной работы с данными.