Объектно-ориентированные базы данных: преимущества и недостатки
Тема: Бизнес | Дата: 04.06.2015 | Автор: Александр Длабик Объектно-ориентированные баз данных Зачем нужны объектно-ориентированные базы данных?В настоящее время клиент-серверные приложения, использующие для обслуживания многопользовательских запросов серверную базу данных, стали совершенно заурядным явлением. Большинство из этих приложений, будучи написанными на объектно-ориентированных языках программирования для выполнения запросов обращаются, тем не менее, к реляционным системам управления базами данных (РСУБД). Такое поведение приводит к снижению эффективности работы приложений из-за необходимости трансформации объектов в кортежи (строки и колонки) РСУБД. Кроме того, на стороне РСУБД должна быть реализована поддержка объектной модели данных приложения. Такое несоответствие модели данных приложения и СУБД (impedance mismatch), а также вызванное им падение производительности, долгое время воспринималось как необходимое зло, как недостаток, с которым нужно просто смириться. Давайте взглянем, существуют ли какие-либо альтернативы для улучшения ситуации и дадим ответы на следующие вопросы:
Обзор объектно-ориентированных баз данныхОбъектно-ориентированные базы данных являются результатом слияния концепций объектно-ориентированных языков программирования с концепциями управления данными. Концепции объектно-ориентированного программирования, такие как инкапсуляция, наследование и полиморфизм вкупе с традиционными требованиями к транзакционной системе (Атомарность – Согласованность – Изолированность – Надежность) позволяют эффективно управлять действительно огромными массивами данных. Отличительной особенностью объектной базы данных является прозрачная организация доступа к объектам как в памяти, так и в самой базе данных. Такой подход коренным образом отличается от РСУБД – отпадает необходимость как в языке запросов SQL, так и в реализации CLI-интерфейсов, подобных ODBC, ADO или JDBC. Сравнение объектно-ориентированных и реляционных баз данныхКонцепции построения объектно-ориентированных и реляционных баз данных во многом схожи. Так, таблица РСУБД аналогична классу СУООБД, а кортеж подобен экземпляру класса, но отличается от последнего тем, что имеет атрибуты, но не имеет методов. Столбец в кортеже похож на атрибут класса, но может содержать только простые типы данных, в то время, как атрибуты класса могут быть представлены данными любых типов. Ниже приведен список преимуществ и недостатков объектно-ориентированных баз данных сравнительно с реляционными. Преимущества
Объекты в СУООБД могут содержать произвольное количество как простых типов данных, так и других объектов. Можно создать один большой класс, который будет служить контейнером для подмножества меньших вложенных классов, содержащих, в свою очередь, подмножества еще меньших, и так до бесконечности. В РСУБД для этой цели придется создавать множество нормализованных таблиц, связанных внешними ключами, всякий раз используя объединения для выборки нужной информации. Кроме того, объектная модель гораздо лучше описывает сущности реального мира, чем реляционная. В реальном мире данные имеют иерархическую структуру. Чтобы смоделировать отношения иерархии в РСУБД, нужно либо воспользоваться идентификаторами, либо создать связь между соответствующими таблицами с помощью внешних ключей. В СУООБД один класс просто является родительским для производного. Хотя использование языка запросов остается все еще возможным, это совсем не обязательно, поскольку доступ к объектам осуществляется явным и очевидным образом. Как уже было сказано выше, при использовании РСУБД значительная часть времени приложения тратится на преобразование объектов в строки и столбцы (кортежи) и наоборот. Дополнительные трудности создает неточное соответствие простых типов базы данных и языка программирования, на котором написано приложение. В случае использования СУООБД такого рода несоответствия полностью устранены. Идентификация объектов осуществляется самой системой и не является заботой пользователя, поскольку не существует никаких ограничений на характер хранимых в объекте значений. Поскольку все сущности представляют собой объекты, не существует разницы между моделью базы данных и моделью приложения. Так как в этом случае система является единым объектным комплексом, она может быть исчерпывающе смоделирована одной-единственной UML диаграммой. Недостатки
Выгоды от использования объектно-ориентированных баз данных достаточно очевидны. Понятно, что наибольшую пользу их внедрение принесет в случае, когда использование РСУБД нецелесообразно. Тем не менее, СУООБД не следует рассматривать в качестве очередной «серебряной пули» – это просто еще один инструмент для эффективной работы с данными. |