03 - Організація баз даних та знань

Тема 10 - Обєктно-орієнтовані бази даних

Стислий конспект


Ключові терміни:

OQL ODMG, клас, літерал, об’єкт, поведінка об’єкта, поліморфізм, реалізаційна частина, стан об’єкта, успадкування, інтерфейсна частина

10.1 Об’єктно-орієнтована модель ODMG

В об’єктно-орієнтованій моделі дані та методи, що їх обробляють, об’єднуються в структури, які називаються об’єктами. Типи об’єктів називаються класами. З точки зору баз даних є такі важливі особливості об'єктно-орієнтованої моедлі (далі ООМ), які ми розглянемо далі.

Складні структури даних. Складні об’єкти будуються з простіших за допомогою конструкторів. Найпростішими об’єктами є: числа, символи, символьні рядки довільної довжини, булеві змінні тощо. Будь-який конструктор має бути застосовним до будь-якого об’єкту (наприклад, повинна надаватися можливість побудови множини з масивів або масиву з множин). Маніпулювання складними об’єктами забезпечується відповідними операціями, які часто розповсюджуються на всі компоненти таких об’єктів. Прикладом може бути вибирання чи видалення складного об’єкту або створення його копії. Існує можливість визначати додаткові операції над складними об’єктами.

Ідентифікованість, унікальність і стан об’єктів. Кожний об’єкт є унікальним, тобто забезпечується унікальна ідентифікація об’єктів (для мов програмування унікальними ідентифікаторами можуть бути адреси пам’яті, за якими зберігаються об’єкти).

Стан об’єкта — це поточне значення, приписане об’єкту. Об’єкт може мати єдиний стан протягом свого життєвого циклу або переходити з одного стану в інший. Оскільки об’єкти мають властивість інкапсуляції (що буде розглянута нижче), то стан об’єкта є абстракцією, яка визначається лише через його поведінку (методи). Унікальність об’єкта не залежить від його стану.

Розрізнення об’єктів. У моделі з об’єктами, що ідентифікуються, два об’єкти можуть спільно використовувати компоненти (зокрема інші об’єкти). Отже, схематичним відображенням складного об’єкта є граф, натомість у системі без ідентифікованості об’єктів - це дерево.

Поведінка об’єктів. Поведінка об’єкта це сукупність операцій (методів), які він надає. Лише через ці операції розкривається семантика об’єкта.

Класи об’єктів. Клас означує спосіб реалізації множини об’єктів, встановлюючи їхню структуру, поведінку та інтерфейс, тобто спосіб запам’ятовування інформації про їхні стани. Проте власне стан має запам’ятовувати сам об’єкт. Однією з основних властивостей класу, відтак і його об’єктів, є інкапсуляція.

Інкапсуляція. Інкапсуляція вимагає, щоб дані та програмні коди для маніпулювання даними були приховані. З цієї точки зору об’єкт поділяється на інтерфейсну й реалізаційну частини. Інтерфейсна частина є специфікацією набору операцій, допустимих над об’єктом. Лише ця частина об’єкта видима для методів інших об’єктів. Реалізаційна частина складається з даних, що описують стан об’єкта, і процедур, що реалізують операції над об’єктом. Інкапсуляція специфікується на рівні оголошення класу.

Успадкування. Успадкування є механізмом, що дає змогу створювати нові класи з використанням даних і методів інших класів. Це дає можливість деякі властивості, спільні для багатьох класів, описувати в базовому класі.

Поліморфізм. Принцип поліморфізму є розширенням принципу успадкування й дає змогу переозначувати методи в успадкованих класах.

10.2 Мова опису об’єктів ODL ODMG

Будь-яка СКБД має мову опису даних (МОД), що використовується для опису схем баз даних. Мова опису об’єктів ODL ODMG розглядається як розширення МОД, призначене для опису об’єктів, їхніх атрибутів, зв’язків та операцій. Основою цієї мови стала мова IDL (Interface Definition Language), розроблена групою OMG.

10.2.1. Основні положення

ODL - це мова, призначена насамперед для специфікації класів. Вона підтримує об’єктну модель ODMG і не є мовою програмування. Більше того, ODL незалежна від мов програмування. Основна мета розробки цієї мови - створити єдину основу для опису об’єктів і тим самим забезпечити перенесення схем об’єктних даних між різними ООСКБД.

Основні положення об’єктної моделі даних ODMG:

В об’єктній моделі ODMG мова йде насамперед про типи, а вже потім про класи. Клас розглядається як різновид типу, що має одну реалізацію. 

10.2.2. Система типів ODL

Базовими типами мови є: integer, float, string, boolean, перелічувані типи, що створюються за допомогою ключового слова enum, та класи. Похідні типи створюються за допомогою конструкторів типів. Є конструктор Struct для структур і чотири конструктори для типів колекцій: Set, Bag, List, Array. Опис структур і колекцій наведено далі.

10.2.3. Об’єкти

Основні характеристики об’єктів:

На рис. 10.1 наведена класифікація об’єктів.

Рисунок 10.1 – Класифікація об’єктів у ODL

 

10.2.4. Літерали

Літерали — це об’єкти, екземпляри яких не можна змінювати. Для наперед визначених типів літералів не можна змінювати операції. На рис. 10.2 наведена класифікація літералів.

Рисунок 10.2 – Класифікація літералів

 

10.3 Об’єктна мова запитів OQL ODMG

OQL ODMG - це незалежна мова запитів до об’єктної моделі даних ODMG, синтаксис якої базується на мові SQL. Окрім того, передбачається можливість її використання в мовах програмування.

Мова запитів орієнтована на побудову виразів, її конструкції мають такі властивості:

10.3.1. Запити OQL

В OQL запитом може бути будь-який вираз, що повертає об’єкт, колекцію об’єктів, літерал або колекцію літералів. Оскільки запит — це вираз, а будь-який вираз має тип, то й будь-якому запиту ставиться у відповідність тип.

Найпоширенішим різновидом запиту, як і в SQL, є select-запит. В запитах слід звертатися саме до екстентів, а не до класів.

10.3.2. Обчислення проміжних результатів

Запит можна не лише сформулювати для виконання, але й визначити для подальшого використання в інших запитах (певний аналог віртуальних таблиць, створюваних командою CREATE VIEW у мові SQL). Це досягається за допомогою означення запиту, що має такий вигляд:

define ім’я_запиту as вираз

 

10.4 Архітектура ООСКБД

 

10.4.1. Розширення реляційних СКБД

Реляційні СКБД надають можливість звертатися до них програмам, написаним різними, зокрема об’єктно-орієнтованими, мовами програмування. У цьому випадку об’єктно-орієнтовані прикладні програми виконують усі функції, пов’язані з відображенням об’єктної моделі в реляційну, тобто перетворюють об’єкти на структури даних, які можуть бути безпосередньо записані в табличні БД, підтримують властивості успадкування, інкапсуляції, зв’язування з об’єктами їхніх методів.

РСКБД бере на себе єдину функцію - зберігання даних, які пов’язані з об’єктами, причому зберігання у вигляді реляційних таблиць, усе інше виконує прикладна програма.

Даний підхід передбачає включення до складу РСКБД засобів, які полегшують процес відображення об’єктів у базі даних і маніпулювання ними. Тобто сама РСКБД удосконалюється, полегшуючи обробку об’єктів, але залишається при цьому реляційною. До можливих розширень РСКБД належать такі.

Перевага підходу - можливість використовувати всю потужність реляційних систем баз даних. Недолік - слабка розвиненість засобів зображення об’єктів і маніпулювання ними.

 

10.4.2. Створення самостійних ООСКБД

Об’єктно-орієнтовані СКБД реалізують гнучку модель даних, яка базується на тій же парадигмі, що й об’єктно-орієнтовані мови програмування. ООБД забезпечують глибшу інтеграцію з об’єктно-орієнтованими додатками, ніж реляційні бази даних, і мінімізують обсяг роботи з програмування збереження і вибирання об’єктно-орієнтованих даних.

Переваги використання однакових моделей у додатках та базі даних виявляються тоді, коли об’єктно-орієнтовані моделі є складними. Якщо ієрархія успадкування є багаторівневою, колекції перетворюють граф об’єкта на павутину, застосуванням складно використовувати поліморфізм та посилання, об’єктна база даних робить такі застосування меншими і їхня продуктивність підвищується. Це знижує витрати на написання і налагодження програмного коду й підвищує загальну продуктивність застосувань

Самостійні ООСКБД забезпечують повну підтримку об’єктно-орієнтованої парадигми. Це передбачає безпосередню інтеграцію з об’єктно-орієнтованими мовами програмування, підтримку об’єктних типів, зв’язків між об’єктами та операцій бази даних, які інтерпретують об’єкти (найчастіше об’єкти інтерпретуються як записи) Прикладами об’єктно-орієнтованих операцій бази даних можуть бути: створення посилань на об’єкти і завантаження з бази даних об’єктів, на які є посилання, забезпечення блокування на об’єктному рівні й повернення об’єктів як результатів запитів або операцій з курсорами.

Перевагою ООСКБД є їхня повна узгодженість із об’єктно-орієнтованою парадигмою програмування, що знімає всі проблеми, пов’язані зі зберіганням і маніпулюванням об’єктами у базі даних.

Основний недолік пов’язаний з тим, що для самостійних ООСКБД слід вирішувати весь комплекс проблем, пов’язаних із СКБД, які вже вирішені в наявних реляційних СКБД.

 

10.4.3. Об’єктно-реляційні СКБД

Особливість даного підходу полягає в тому, що на базі наявних реляційних СКБД реалізується об’єктно-орієнтований інтерфейс. Робота з цим інтерфейсом здійснюється так само, як і в ООСКБД, але всі проблеми, пов’язані зі створенням і веденням баз даних, вирішуються в реляційній СКБД.

Основна проблема, пов’язана зі створенням такого інтерфейсу, — відображення об’єктно-орієнтованої моделі в реляційну. Є кілька способів інтеграції об’єктного і реляційного підходів, що будуть розглянуті далі.

Об’єктно-реляційний шлюз автоматично виділяє об’єкти програми й зберігає їх у реляційній базі даних. Об’єктно-орієнтований додаток працює як звичайний користувач СКБД (рис. 10.3). Такий варіант дає змогу програмістам повністю сконцентруватися на об’єктно-орієнтованому проектуванні


Рисунок 10.3 – Використання об’єктно-реляційного шлюзу

Об’єктно-реляційний прошарок між об’єктною та реляційною СКБД

У разі використання об’єктно-орієнтованого прошарку програма взаємодіє з БД за допомогою мови ООСКБД, а прошарок замінює всі об’єктно-орієнтовані елементи цієї мови на їхні реляційні еквіваленти (рис. 10.4).



Рисунок 10.4Використання об’єктно-реляційного прошарку

За це доводиться розплачуватися продуктивністю. Окрім іншого, прошарок має перетворювати об’єкти на набори зв’язаних відношень, генерувати унікальні OID об’єктів і передавати ці дані до реляційної БД.

Уніфікована об’єктно-реляційна СКБД

Цей підхід передбачає створення гібридних об’єктно-реляційних СКБД, що можуть зберігати як табличні дані, так і об’єкти. Вважається, що майбутнє саме за гібридними СКБД. Сьогодні розробники реляційних СКБД починають додавати до своїх продуктів об’єктно-орієнтовані засоби.


© 2015 СумГУ
created with Lectur'EDbeta