Об'єктно-орієнтована база даних

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Приклад об'єктно-орієнтованої моделі[1]

Об'єктно-орієнтована база даних (ООБД) — база даних, в якій дані моделюються у вигляді класів і об'єктів[2], їх атрибутів і методів[3].

Історія[ред. | ред. код]

Перші публікації про об'єктно-орієнтовані база даних з'явились в середині 1980-х років[4] і були викликані проблема роботи з данмми, які виникають в системах збереження даних з високою складністю структур даних та відношень між ними.

Характеристики[ред. | ред. код]

Об'єктно-орієнтована база даних зазвичай рекомендовані для тих випадків, коли потрібна високопродуктивна обробка даних, що мають складну структуру.

В маніфесті ООБД[5] пропонується обов'язкові характеристики, котрим повинна відповідати будь-яка ООБД. Їх вибір засновано на 2 критеріях: система має бути об'єктно-орієнтированою і представляти собою базу даних.

Обов'язкові характеристики:

  • Підтримка складних об'єктів. В системі має бути передбачена можливість створення складових об'єктів за рахунок застосування конструкторів. Необхідно, щоб конструктори об'єктів були ортогональними, тобто будь-який з конструкторів можна було використовувати з будь-яким об'єктом.
  • Підтримка індивідуальності об'єктів. Всі об'єкти мають мати унікальний ідентифікатор, котрий не залежить від значень їх атрибутів.
  • Підтримка інкапсуляції. Коректна інкапсуляція досягається за рахунок того, що програмісти мають право доступу тільки до специфікації інтерфейсу методів, а дані і реалізація методів приховані всередині об'єктів.
  • Підтримка типів і класів і типів. Вимагається, щоб ООБД підтримувалась хоча б одна концепція відмінності між типами і класами[6].
  • Підтримка наслідування типів і класів від їх предків. Підтип або підклас має наслідувати атрибути і методи від, відповідно, його супертипу або суперкласу.
  • Перезавантаження у поєднанні з повним пов'язуванням. Методи повинні застосовуватись до об'єктів різних типів. Реалізація методу має залежати від типу об'єктів, до яких даний метод застосовується. Для забезпечення цієї функціональності зв'язування імен методів у системі не повинно виконуватись до часу, коли програму виконано.
  • Обчислювальна повнота. Мова маніпулювання даними має бути мовою програмування загального призначення.
  • Набір типів даних має бути розширюваним. Користувач повинен мати засоби створення нових типів даних на основі набору зумовлених системних типів. Більш того, між способами використання системних і користувацьких типів даних не повинно бути жодних відмінностей.

Необов'язкові характеристики:

  • множинне спадкування;
  • перевірка типів;
  • розподілення;
  • проектні транзакції.

Відкриті характеристики:

  • парадигми програмування (процедурне, декларативне);
  • система представлення;
  • система типів;
  • одноманітність (реалізація — мова програмування — інтерфейс).

ООБД та її СУБД[ред. | ред. код]

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

Деякі об'єктно-орієнтовані бази даних розроблені для щільної взаємодії з такими об'єктно-орієнтованими мовами програмування як Python, Java, C#, Visual Basic .NET, C++, Objective-C і Smalltalk; інші мають свої власні мови програмування. ООСКБД використовують точно таку же модель, що й об'єктно-орієнтовані мови програмування.

СУБД повинна забезпечувати:

  • довготермінове зберігання;
  • використання зовнішньої пам'яті;
  • паралелізм;
  • відновлення;
  • нерегламентовані запити.

Примітки[ред. | ред. код]

  1. Data Integration Glossary, U.S. Department of Transportation, August 2001.
  2. Словарь по естественным наукам
  3. OLAP.
  4. IEEE Database Engineering, special issue on Object-Oriented Databases, F. Lochovski, ed., Dec. 1985
  5. Atkinson et al., 1989
  6. Термін «тип» більш відповідає поняттю абстрактного типу даних. У мовах програмування змінна оголошується із вказівкою на її тип. Компілятор може використати цю інформацію для перевірки операцій, що виконуються із змінною щодо сумісності з її типом, що дозволяє гарантувати коректність програмного забезпечення. З іншого боку, клас є шаблоном для створення об'єктів і надає методи, котрі можуть застосовуватись до цих об'єктів. Таким чином, поняття «клас» більшою мірою стосується часу виконання, аніж часу компіляції

Література[ред. | ред. код]

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]