Объектно ориентированная модель реферат

Обновлено: 05.07.2024

Управление информацией всегда было основной сферой применения компьютеров и, надо думать, будет играть еще большую роль в будущем. Системы управления базами данных [1 Термины, выделенные курсивом, как правило, приведены в словарике на стр. 21] (СУБД, DBMS – Database Management System)на протяжении всего пути развития компьютерной техники совершенствовались, поддерживая все более сложные уровни абстрактных данных, заданных пользователем, и обеспечивая взаимодействие компонентов, распределенных в глобальных сетях и постепенно интегрирующихся с телекоммуникационными системами.

Содержание

1. 20 лет эволюции программного обеспечения. 3
2. Реляционные базы данных. 4
3. Объектно-реляционные методы. 6
4. Объектно-ориентированные базы данных. 8
4. 1 Why ODBMS? 8
4. 2 Спорные моменты технологии. 10
4. 3 Стандарты объектных баз данных. 13
4. 4 Поставщики ООСУБД. 17
5. Заключение. 19
6. Глоссарий 21

Вложенные файлы: 1 файл

Документ Microsoft Office Word (3).docx

Объектно-ориентированные СУБД - (реферат)

Дата добавления: март 2006г.

Бойко И.
Объектно-ориентированные СУБД.
Оглавление
1. 20 лет эволюции программного обеспечения. 3
2. Реляционные базы данных. 4
3. Объектно-реляционные методы. 6
4. Объектно-ориентированные базы данных. 8
4. 1 Why ODBMS? 8
4. 2 Спорные моменты технологии. 10
4. 3 Стандарты объектных баз данных. 13
4. 4 Поставщики ООСУБД. 17
5. Заключение. 19
6. Глоссарий 21
20 лет эволюции программного обеспечения.
Рисунок 1

Управление информацией всегда было основной сферой применения компьютеров и, надо думать, будет играть еще большую роль в будущем. Системы управления базами данных [1 Термины, выделенные курсивом, как правило, приведены в словарике на стр. 21] (СУБД, DBMS – Database Management System)на протяжении всего пути развития компьютерной техники совершенствовались, поддерживая все более сложные уровни абстрактных данных, заданных пользователем, и обеспечивая взаимодействие компонентов, распределенных в глобальных сетях и постепенно интегрирующихся с телекоммуникационными системами. Позволив себе рассуждения в стиле Билла Гейтса, предположим, что результатом будет становление систем управления информацией одной из частей повседневной жизни каждого.

История развития компьютерной техники –это история непрерывного движения от языка и уровня коммуникации машины к уровню пользователя. Если первые машины требовали от пользователя оформления того, что ему нужно (то есть написания программ), в машинных кодах, то языки программирования четвертого уровня (4GLs) позволяли конечным пользователям, не являющимся профессиональными программистами, получать доступ к информации без детального описания каждого шага, но только с встроенными предопределенными типами данных– например, таблицами. Последним шагом в этом направлении стала объектно- ориентированная технология, радикально изменившая сферу разработки программного обеспечения уже в 1990-х годах (Рисунок 1). Объектно-ориентированный подход позволяет упаковывать данные и код для их обработки вместе. Таким образом практически снимается ограничение на типы данных, позволяя работать на любом уровне абстракции. Эволюция систем управления информацией шла параллельно этому прогрессу, начиная с низкоуровневых программ, которые, например, напрямую производили операции чтения и записи со всей памятью без ограничения доступа, лентой, цилиндрами и дорожками диска и более высокоуровневыми средствами–файловыми системами, которые оперировали с такими понятиями, как массивы, записи и индексы для повышения производительности. Базы данных в свою очередь начинали с модели записей и индексов (ISAM и др. ), приобретая со временем способность восстановления после сбоев, проверки целостности данных и возможности работы нескольких пользователей одновременно. Эти ранние модели данных (CODASYL) относились скорее к уровню машинной ориентации. В дальнейшемреляционные базы данных, пришедшие на смену в 1980? х годах, приобрели механизм запросов, позволяющий пользователю указать требуемое, предоставив СУБД самой оптимальным образом найти результат, используя динамическую индексацию. Обьектно-ориентированные СУБД (ООСУБД) стали разрабатываться с середины 80? х годов в основном для поддержки приложений САПР. Сложные структуры данных систем автоматизированного проектирования оказалось очень удобно оформлять в виде объектов, а технические чертежи проще хранить в базе данных, чем в файлах. Это позволяет обойтись без декомпозиции графических структур на элементы и записи их в файлы после завершения работы с чертежом, выполнения обратной операции при внесении любого изменения. Если типичные реляционные базы данных имеют связи глубиной в два уровня, то иерархическая информация чертежей САПР обычно включает порядка десяти уровней, что требует достаточно сложных операций для “сборки” результата. Объектные базы данных хорошо соответствовали подобным задачам, и эволюция многих СУБД началась именно с рынка САПР. Между тем рынок САПР был быстро насыщен, и в начале 90? х годов производители ООСУБД обратили внимание на другие области применения, уже прочно занятые реляционными СУБД. Для этого потребовалось оснастить ООСУБД функциями оперативной обработки транзакций (OLTP), утилитами администратора баз данных (database administrator–DBA), средствами резервного копирования/восстановления и т. д. Работы в данном направлении продолжаются и сегодня, но уже можно сказать, что переход к коммерческим приложениям идет достаточно успешно.

Реляционные базы данных.

В реляционных базах данных (Relational Database System, RDBS)все данные отображаются в двумерных таблицах. База данных, таким образом, это ни что иное, как набор таблиц. RDBS и ориентированные на записи системы организованы на основе стандарта B-Tree или методе доступа, основанном на индексации–Indexed Sequential Access Method (ISAM) и являются стандартными системами, использующимися в большинстве современных программных продуктов. Для обеспечения комбинирования таблиц для определения связей между данными, которые практически полностью отсутствуют в большинстве программных реализаций B-Tree и ISAM, используется языки, подобныеSQL (IBM), Quel (Ingres) и RDO (Digital Equipment), причем стандартом отрасли в настоящее время стал язык SQL, поддерживаемый всеми производителями реляционных СУБД. Оригинальная версия SQL –это интерпретируемый язык, предназначенный для выполнения операций над базами данных. Язык SQL был создан в начале 70? х как интерфейс для взаимодействия с базами данных, основанными на новой для того времени реляционной теории. Реальные приложения обычно написаны на других языках, генерирующих код на языке SQL и передающих их в СУБД в виде текста в формате ASCII. Нужно отметить также, что практически все реальные реляционные (и не только реляционные) системы помимо реализации стандарта ANSI SQL, известного сейчас в последней редакции под именем SQL2 (или SQL-92), включают в себя дополнительные расширения, например, поддержка архитектуры клиент-сервер или средства разработки приложений.

Строки таблицы составлены из полей, заранее известных базе данных. В большинстве систем нельзя добавлять новые типы данных. Каждая строка в таблице соответствует одной записи. Положение данной строки может изменяться вместе с удалением или вставкой новых строк.

Чтобы однозначно определить элемент, ему должны быть сопоставлены поле или набор полей, гарантирующих уникальность элемента внутри таблицы. Такое поле или поля называютсяпервичным ключом (primary key) таблицы и часто являются числами. Если одна таблица содержит первичным ключ другой, это позволяет организовать связь между элементами разных таблиц. Это поле называетсявнешним ключом (foreign key).

Так как все поля одной таблицы должны содержать постоянное число полей заранее определенных типов, приходится создавать дополнительные таблицы, учитывающие индивидуальные особенности элементов, при помощи внешних ключей. Такой подход сильно усложняет создание сколько нибудь сложных взаимосвязей в базе данных. Желающим убедится, что это действительно так и не пожалевшим на это определенный отрезок времени, компания POET Software любезно предоставляет возможность ознакомиться с примером в своей“белой книге”“POET Technical Reference”. База данных рядового предприятия общепита (клиенты– Джордж Буш и Эдди Мэрфи) состоит из четырех таблиц. Еще один крупный недостаток реляционных баз данных – это высокая трудоемкость манипулирования информацией и изменения связей. Объектно-реляционные методы.

Несмотря на рассмотренные в п. 2 недостатки реляционных баз данных, они обладают рядом достоинств:

разделение таблиц разными программами;
развернутый “код возврата” при ошибках;

высокая скорость обработки запросов (команда SELECTязыка SQL; результатом выборки является таблица, которая содержит поля, удовлетворяющие заданному критерию);

Рисунок 2 Возможные подходы к объединению объектных и реляционных БД. сама концепция объектных баз данных довольно сложна и требует от программистов серьезного и длительного обучения;

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

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

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

Некоторые объектные СУБД, например GemStone компании GemStone Systems, могут сами выполнять роль мощного объектно-реляционного адаптера, позволяя объектно-ориентированным приложениям обращаться к реляционным БД. Объектно-реляционные адаптеры, такие как Odapter компании Hewlett-Packard для СУБД Oracle, можно с успехом использовать во многих областях, например в качестве связующего ПО, объединяющего объектно- ориентированные приложения с реляционными СУБД.

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

Производительность в рассмотренных двух подходах зависит от способа доступа к реляционной базе данных. Каждая РСУБД состоит из двух уровней: уровня управления данными (data manager layer) и уровня управления носителем (storage manager layer). Первый из них обрабатывает операторы на языке SQL, а второй отображает данные в базу. Шлюз или адаптер могут взаимодействовать как с уровнем данных (то есть обращаться к РСУБД при помощи SQL), так и с уровнем носителя (вызовами процедур низкого уровня). Производительность в первом случае намного ниже (например, система OpenODB фирмы Hewlett-Packard, которая может выполнять роль шлюза, поддерживает только на высоком уровне). Гибридные СУБД. Еще одним решением может стать создание гибридных объектно- реляционных СУБД, которые могут хранить и традиционные табличные данные, и объекты. Многие аналитики считают, что будущее за такими гибридными БД. Ведущие поставщики реляционных СУБД начинают (или планируют) добавлять к своим продуктам объектно- ориентированные средства. В частности, Sybase и Informix собираются в следующих версиях СУБД ввести поддержку объектов. Подобные разработки намерены вести и независимые фирмы. Например, компания Shores готовится оснастить объектно- ориентированными средствами СУБД Oracle8, выпуск которой намечен на конец 1996 г.

С другой стороны, производители объектных СУБД, такие как компания Object Design, сознают, что объектно-ориентированные базы данных в обозримом будущем не заменят реляционные СУБД. Это вынуждает их создавать шлюзы для поддержки реляционных и иерархических баз данных иди различного рода интерфейсы, характерным примером которых является объектно-реляционный интерфейс Ontos Integration Server фирмы Ontos, применяемый в сочетании с ее ООБД Ontos/DB. Объектно-ориентированные базы данных.

“Белыми книгами” с названием, вынесенным в заголовок, с избытком снабдит любая компания, занимающаяся объектными базами данных. Кое-что о преимуществах и недостатках объектно-ориентированных СУБД уже упоминалось выше, подведем в таком случае итог.

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

Если данные состоят из коротких, простых полей фиксированной длины (имя, адрес, баланс банковского счета), то лучшим решением будет применение реляционной базы данных. Если, однако, данные содержат вложенную структуру, динамически изменяемый размер, определяемые пользователем произвольные структуры (мультимедиа, например), представление их в табличной форме будет, как минимум, непростым. В то же время в ООСУБД каждая определенная пользователем структура – это объект, непосредственно управляемый базой данных. В РСУБД связи управляются пользователем, создающим внешние ключи. Затем для обнаружения связей динамически во время выполнения система просматривает две (или больше) таблицы, сравнивая внешние ключи до достижения соответствия. Этот процесс, называемый объединением (join), является слабой стороной реляционной технологии. Более двух или трех уровней объединений–сигнал, чтобы искать лучшее решение. В ООСУБД пользователь просто объявляет связь, и СУБД автоматически генерирует методы управления, динамически создавая, удаляя и пересекая связи. Ссылки при этом прямые, нет необходимости в просмотре и сравнении или даже поиске индекса, который может сильно сказаться на производительности. Таким образом, применение объектной модели предпочтительнее для баз данных с большим количеством сложных связей: перекрестных ссылок, ссылок, связывающих несколько объектов с несколькими (many-to-many relationships) двунаправленными ссылками.

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

И, наконец, ООСУБД подходят (опять же без трансляций между объектной и реляционной моделями) для организации распределенных вычислений. Традиционные базы данных (в том числе и реляционные и некоторые объектные) построены вокруг центрального сервера, выполняющего все операции над базой. По существу, эта модель мало отличается от мэйнфреймовой организации 60? х годов с центральной ЭВМ –мэйнфреймом (mainframe), выполняющей все вычисления, и пассивных терминалов. Такая архитектура имеет ряд недостатков, главным из которых является вопрос масштабируемости. В настоящее время рабочие станции (клиенты) имеют вычислительную мощность порядка 30? 50 % мощности сервера базы данных, то есть большая часть вычислительных ресурсов распределена среди клиентов. Поэтому все больше приложений, и в первую очередь базы данных и средства принятия решений, работают в распределенных средах, в которых объекты (объектные программные компоненты) распределены по многим рабочим станциям и серверам и где любой пользователь может получить доступ к любому объекту. Благодаря стандартам межкомпонентного взаимодействия (об этом позже) все эти фрагменты кода комбинируются друг с другом независимо от аппаратного, программного обеспечения, операционных систем, сетей, компиляторов, языков программирования, различных средств организации запросов и формирования отчетов и динамически изменяются при манипулировании объектами без потери работоспособности.

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

Типология баз данных.

Базы данных можно классифицировать по разным признакам:


  • по организации информации (реляционные, объектно-ориентированные)

  • по способу хранения информации (централизованные, распределенные)

  • по способу доступа к хранимым данным (настольные, серверные)

  • по характеру хранимой информации (фактографические, документальные)

Рассмотрим подробнее типологию баз данных по принципу организации информации, другими словами, классификация, основанная на модели данных. Существует несколько типов систем управления базами данных, таких как:

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

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

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

Другой значимый недостаток - при добавлении нового поля или записи требуется переопределение всей базы данных.
К преимуществам иерархических БД относится быстрый доступ и обновление.
Структура иерархической системы баз данных была разработана IBM в начале 1960-х годов. Иерархические базы данных широко используются для создания приложений высокой производительности и доступности, обычно в банковской и телекоммуникационной отраслях. Например, известные базы данных IBM Information Management System (IMS) и реестр Windows относятся к иерархическим БД.

Сетевые базы данных.

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

Структура базы данных сети была изобретена Чарльзом Бахманом. Некоторые из популярных сетевых баз данных: интегрированное хранилище данных (IDS), IDMS (интегрированная система управления базами данных), менеджер баз данных Raima, TurboIMAGE и Univac DMS-1100.
Реляционные базы данных.

Реляционная БД впервые была предложена исследователем из IBM Эдгаром Фрэнком Коддом в 1969 году.

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

Язык структурированных запросов (SQL) - это язык, используемый для запросов к СУБД, включая вставку, обновление, удаление и поиск записей. Реляционные базы данных работают с каждой таблицей, в которой есть ключевое поле, однозначно указывающее на каждую строку. Эти ключевые поля можно использовать для соединения одной таблицы данных с другой.
Реляционные базы данных являются наиболее популярными и широко используемыми базами данных. Некоторые из популярных DDBMS - это Oracle, SQL Server, MySQL, SQLite и IBM DB2.


  • Реляционные базы данных легки в освоении.

  • Записи базы данных могут быть изменены без указания всего тела таблицы.

Реляционные базы данных удовлетворяют следующим свойствам:


  • Атрибуты являются атомарными

  • Каждая строка уникальна.

  • Поля не упорядочены.

  • Последовательность строк незначительна.

  • Каждое поле имеет уникальное имя.

Графовые базы данных.

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

К самым популярным графовым базам данных относятся Neo4j, DEX, Azure Cosmos DB, SAP HANA. Структура базы данных графов также поддерживается некоторыми реляционными СУБД, включая Oracle и SQL Server 2017 и более поздние версии.

Базы данных NoSQL.

Базы данных NoSQL - это базы данных, которые не используют SQL в качестве основного языка доступа к данным. Графические, сетевые, объектно-ориентированные БД и базы данных документов относятся к NoSQL БД.

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

К популярным NoSQL базам данных относятся Космос БД, ArangoDB, CouchDB, Amazon DocumentDB, MongoDB, SAP HANA.


  • Сущности представляются как объекты

  • Объекты имеют свойства (атрибуты) и методы

  • Объекты хранятся в памяти

  • Механизмы наследования и полиморфизма

Жизненный цикл каждого объекта включает в себя создание объекта, использование объекта и удаление объекта. При создании каждому объекту присваивается генерируемый системой уникальный идентификатор, связанный с эти объектом на протяжении всего его жизненного цикла, в том числе и при изменении состояния объекта.

В ООБД данные можно представить в виде любой структуры, которую можно описать с помощью выбранного для разработки языка программирования. Также можно создавать произвольное сложные отношения между объектами.

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

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

Преимущества объектно-ориентированных баз данных (ООБД) неоспоримы.

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

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

В реляционных СУБД (РСУБД) размерность значений типа целых чисел составляет 11 цифр, а в используемом для разработки языке – 15. Разработчикам необходимо отслеживать подобные ситуации в РСУБД.

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


  1. Не существует математического аппарата, на который могла бы опираться объектная модель. Следовательно объектные базы данных не имеют стандарта, общей базовой модели

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

  3. Не многие языки программирования поддерживают объектные базы данных.

  4. Большинство СУБД используют SQL в качестве стандартного языка запросов.

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

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

InterSystems Caché

InterSystems Caché - это высокопроизводительная объектная база данных. Ядро базы данных Caché - это набор сервисов, включающий хранение данных, управление параллелизмом, транзакции и управление процессами.

Caché также является полнофункциональной реляционной базой данных. Все данные в базе данных Caché доступны в виде настоящих реляционных таблиц и могут быть запрошены и изменены с использованием стандартного SQL через ODBC, JDBC или объектные методы. Caché - одна из самых быстрых, надежных и масштабируемых реляционных баз данных.

Caché предоставляет следующие возможности и функции:

ConceptBase.

ConceptBase.cc - это многопользовательская система баз данных с объектно-ориентированным подходом, который делает ее мощным инструментом для метамоделирования и разработки пользовательских языков моделирования. Система сопровождается настраиваемым графическим интерфейсом пользователя, который основан на логических возможностях сервера ConceptBase.cc.

ConceptBase.cc разработан командой ConceptBase из Университета Скёвде (HIS) и Университета Аахена (RWTH). ConceptBase.cc доступен для Linux, Windows и Mac OS-X. Существует также предварительно настроенное виртуальное устройство, которое содержит исполняемую систему, а также ее источники и инструменты для их компиляции. Система распространяется под лицензией в стиле FreeBSD.

ObjectDB Object Database.

ObjectDB - это мощная объектно-ориентированная система управления базами данных (ODBMS). ObjectDB предоставляет все стандартные сервисы управления базами данных (хранение и извлечение, транзакции, управление блокировками, обработка запросов). Но таким образом, чтобы упростить разработку и ускорить работу приложений.


(текст реферата разделен на две части, так как в данном сервисе возможно проверять процент оригинальности текста, состоящего менее чем из 10000 символов)

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

Факультет физико – математический

Кафедра информатики и вычислительной техники

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

Автор работы________________________________________ А. А. Кирсанова

Направления подготовки 44.03.05 Педагогическое образование

Профиль Математика. Информатика

Руководитель работы: канд. физико – матем. наук, доцент___________________________________________ Т. В. Кормилицына

Введение

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

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

1 Объектно-ориентированное программирование

1.1 Технологии программирования

Технология программирования – это совокупность методов и средств разработки (написания) программ и порядок применения этих методов и средств.

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

В 1958 году были разработаны первые языки программирования, Фортран и Алгол-58. Программа на Фортране состояла из главной программы и некоторого количества процедур - подпрограмм и функций. Программа на Алголе-58 и его последующей версии Алголе-60 представляла собой единое целое, но имела блочную структуру, включающую главный блок и вложенные блоки подпрограмм и функций.

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

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

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

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

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

– построением языка программирования, содержащего как можно больше типов данных, и выбором для каждого класса задач некоторого подмножества этого языка. Такой язык иногда называют языком-оболочкой. На роль языка-оболочки претендовал язык ПЛ/1, оказавшийся настолько сложным, что так и не удалось построить его формализованное описание. Отсутствие формализованного описания, однако, не помешало широкому применению ПЛ/1 как в Западной Европе, так и в СССР;

– построением расширяемого языка, содержащего небольшое ядро и допускающего расширение, дополняющее язык типами данных и операторами, отражающими концептуальную сущность конкретного класса задач. Такой язык называют языком-ядром. Как язык-ядро были разработаны языки Симула и Алгол-68, не получившие широкого распространения, но оказавшие большое влияние на разработку других языков программирования.

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

1.2 Сущность объектно-ориентированного подхода к программированию

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

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

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

1.3 Принципы объектно-ориентированного программирования

В основу ООП положены следующие принципы:

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

Применяемая абстракция реального предмета существенно зависит от решаемой задачи: в одном случае нас будет интересовать форма предмета, в другом вес, в третьем – материалы, из которых он сделан, в четвертом – закон движения предмета и т.д.

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

Ограничение доступа – сокрытие отдельных элементов реализации абстракции, не затрагивающих существенных характеристик ее как целого.

Необходимость ограничения доступа предполагает разграничение двух частей в описании абстракции:

1) интерфейс – совокупность доступных извне элементов реализации абстракции (основные характеристики состояния и поведения);

2) реализация – совокупность недоступных извне элементов реализации абстракции (внутренняя организация абстракции и механизмы реализации ее поведения).

Ограничение доступа в ООП позволяет разработчику:

– выполнять конструирование системы поэтапно, не отвлекаясь на особенности реализации используемых абстракций;

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

Сочетание объединения всех свойств предмета (составляющих его состояния и поведения) в единую абстракцию и ограничения доступа к реализации этих свойств получило название инкапсуляции.

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

Иерархия – ранжированная или упорядоченная система абстракций. Принцип иерархичности предполагает использование иерархий при разработке программных систем.

В ООП используются два вида иерархии:

Один из важнейших механизмов ООП – наследование свойств в иерархии общее/частное. Наследование – такое соотношение между абстракциями, когда одна из них использует структурную или функциональную часть другой или нескольких других абстракций (соответственно простое и множественное наследование).

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

Использование принципа типизации обеспечивает:

– раннее обнаружение ошибок, связанных с недопустимыми операциями над программными объектами (ошибки обнаруживаются на этапе компиляции программы при проверке допустимости выполнения данной операции над программным объектом);

– возможность генерации более эффективного кода.

Тип может связываться с программным объектом статически (тип объекта определен на этапе компиляции – раннее связывание) и динамически (тип объекта определяется только во время выполнения программы – позднее связывание). Реализация позднего связывания в языке программирования позволяет создавать переменные-указатели на объекты, принадлежащие различным классам (полиморфные объекты), что существенно расширяет возможности языка.

Параллелизм – свойство нескольких абстракций одновременно находиться в активном состоянии, т.е. выполнять некоторые операции.

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

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

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

– временные объекты, хранящие промежуточные результаты некоторых действий, например, вычислений;

– локальные объекты, существующие внутри подпрограмм, время жизни которых исчисляется от вызова подпрограммы до ее завершения;

– глобальные объекты, существующие пока программа загружена в память;

– сохраняемые объекты, данные которых хранятся в файлах внешней памяти между сеансами работы программы.

Все указанные выше принципы в той или иной степени реализованы в различных версиях объектно-ориентированных языков.

Язык считается объектно-ориентированным, если в нем реализованы первые четыре из рассмотренных семи принципов.

2 Особенности объектно-ориентированных языков программирования

Объектно-ориентированный язык программирования (ОО-язык) – язык, построенный на принципах объектно-ориентированного программирования.

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

Первый объектно-ориентированный язык программирования Simula 67 был разработан в конце 60-х годов в Норвегии. Авторы этого языка очень точно угадали перспективы развития программирования: их язык намного опередил свое время.

Однако современники (программисты 60-х годов) оказались не готовы воспринять ценности языка Simula 67, и он не выдержал конкуренции с другими языками программирования (прежде всего, с языком Fortran).

Прохладному отношению к языку Simula 67 способствовало и то обстоятельство, что он был реализован как интерпретируемый (а не компилируемый) язык, что было совершенно неприемлемым в 60-е годы, так как интерпретация связана со снижением эффективности (скорости выполнения) программ.

Но достоинства языка Simula 67 были замечены некоторыми программистами, и в 70-е годы было разработано большое число экспериментальных объектно-ориентированных языков программирования: например, языки CLU, Alphard, Pascal и др. Эти языки так и остались экспериментальными, но в результате их исследования были разработаны современные объектно-ориентированные языки программирования: C++, Smalltalk, Eiffel и др.

Наиболее распространенным объектно-ориентированным языком программирования безусловно является C++. Свободно распространяемые коммерческие системы программирования C++ существуют практически на любой платформе. Широко известна свободно распространяемая система программирования G++, которая дает возможность всем желающим разобрать достаточно хорошо и подробно прокомментированный исходный текст одного из образцовых компиляторов языка C++. Завершается работа по стандартизации языка C++: последний Draft стандарта C++ выпущен в июне 1995 г. (он доступен по Internet).

Разработка новых объектно-ориентированных языков программирования продолжается. С 1995 года стал широко распространяться новый объектно-ориентированный язык программирования Java, ориентированный на сети компьютеров и, прежде всего, на Internet. Синтаксис этого языка напоминает синтаксис языка C++, однако эти языки имеют мало общего. Java интерпретируемый язык: для него определены внутреннее представление (bytecode) и интерпретатор этого представления, которые уже сейчас реализованы на большинстве платформ. Интерпретатор упрощает отладку программ, написанных на языке Java, обеспечивает их переносимость на новые платформы и адаптируемость к новым окружениям. Он позволяет исключить влияние программ, написанных на языке Java, на другие программы и файлы, имеющиеся на новой платформе, и тем самым обеспечить безопасность при выполнении этих программ. Эти свойства языка Java позволяют использовать его как основной язык программирования для программ, распространяемых по сетям (в частности, по сети Internet).

3 Обзор объектно-ориентированных языков программирования

Язык Smalltalk был разработан командой Xerox Palo Alto Research Center Learning Research Group как программная часть Dynabook – фантастического проекта Алана Кея. В основу были положены идеи Simula. Smalltalk является одновременно и языком программирования, и средой разработки программ. Это чисто объектно-ориентированный язык, в котором абсолютно все рассматривается как объекты; даже целые числа - это классы. Вслед за Simula, Smalltalk является важнейшим объектно-ориентированным языком, поскольку он не только оказал влияние на последующие поколения языков программирования, но и заложил основы современного графического интерфейса пользователя, на которых непосредственно базируются интерфейсы Macintosh, Windows и Motif.

В основу языка положены две простые идеи:

– все является объектами;

В таблице 1 приведены характеристики языка Smalltalk с точки зрения семи основных элементов объектного подхода.

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

Гост

ГОСТ

Основные понятия

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

Записи базы данных и функции их обработки связаны механизмами, подобными соответствующим средствам, которые реализуются в объектно-ориентированных языках программирования.

Графическим представлением структуры объектно-ориентированной базы данных является дерево, узлы которого представляют объекты.

Стандартный тип (например, строковый – string) или тип, созданный пользователем (class), описывает свойства объектов.

На рисунке 1 объект БИБЛИОТЕКА является родителем для объектов-экземпляров классов КАТАЛОГ, АБОНЕНТ и ВЫДАЧА. У разных объектов типа КНИГА может быть один или разные родители. У объектов типа КНИГА, которые имеют одного и того же родителя, должны быть по крайней мере разные инвентарные номера (уникальные для каждого экземпляра книги), но одинаковые значения свойств автор, название, удк и isbn.

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

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

При создании и модификации БД выполняется автоматическое формирование и последующая корректировка индексов (индексных таблиц), которые содержат информацию для осуществления быстрого поиска данных.

Готовые работы на аналогичную тему

Цель инкапсуляции – ограничение области видимости имени свойства границами того объекта, в котором оно определено.

Например, если в объект КАТАЛОГ добавлено свойство, которое задает телефон автора и имеет название телефон, то одноименные свойства получатся у объектов КАТАЛОГ и АБОНЕНТ. Смысл свойства определяется тем объектом, в который оно инкапсулировано.

Наследование, обратно инкапсуляции, отвечает за распространение области видимости свойства относительно всех потомков объекта.

Например, всем объектам КНИГА, которые являются потомками объекта КАТАЛОГ, могут быть приписаны свойства объекта-родителя: автор, название, удк и isbn.

При необходимости расширения действия механизма наследования на объекты, которые не являются непосредственными родственниками (например, на два потомка одного родителя) в их общем предке определяют абстрактное свойство типа abs.

Таким образом, свойства номер и билет в объекте БИБЛИОТЕКА наследуются всеми дочерними объектами ВЫДАЧА, КНИГА и АБОНЕНТ. Именно поэтому значения этого свойства классов АБОНЕНТ и ВЫДАЧА одинаковые – 00015 (рисунок 1).

Полиморфизм позволяет одному и тому же программному коду работать с разнотипными данными.

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

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

Преимущества и недостатки объектно-ориентированной модели

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

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

На сегодняшний день такие системы достаточно широко распространены. К ним относятся СУБД:

Читайте также: