Objektově relační databáze.

Za posledních 25 let je mohutný trend přechodu od strukturovaného k objektově orientovanému programování, a to i v oblasti zpracování dat a databází. Objektově orientované DB se objevili v 90. Letech minulého století a kladou si za cíl urychlit a ulehčit práci s daty. Situace ovšem není jednoduchá, protože relační a objektový přístup je od základu rozdílný. Existuje tak mnoho výhod i mnoho nevýhod pro relační i objektové DB. Na současném trhu existují 3 základní typy:

Relační DB ( Relational Database Management System, RDBMS) – výkonné na tradičních datech. Př. Oracle 7.x, DB2.

Objektově-relační (Object Relational Database Management t System, ORDBMS) – Poskytuje programátorské pohodlí, rychlý a udržitelný vývoj aplikací. Př. Oracle 8.x, 9.x, 10.x.

Objektové DB (Object Database Management system, ODBMS) – Výkonné na netradičních datech, slabší v databázových rysech. Př. Jasmine, Gemstone, O2.

Objektově relační databáze

Objektově relační DB se snaží přinést objektové rysy do relačních databází. ORDBMS je specifikována v rozšíření SQL standardu – SQL3. Do této kategorie patří např. Informix, IBM, Oracle a Unisys.

Objektově relační mapování přináší vrstvy mezi OO aplikací a SQL databází. Charakteristiky jsou:

Myšlení v objektech, ev. Cache objektů, zodpovědné za persistenci.

Rozšiřují datový model tak, že přidávají objektovost do tabulek. Všechny trvalé informace jsou stále v tabulkách, ale některé položky mohou mít bohatší datovou strukturu (porušení 1. NF), nazývanou abstraktní datové typy, tzv. ADT:

ADT je datový typ, který vznikne kombinací základních datových typů

Podpora dědičnosti, polymorfismu, referencí a integrace s programovacím jazykem je omezená

Funkce a operace jsou asociované s novými datovými typy, mohou být použity k indexování, ukládání a získávání záznamů na základě obsahu nového datového typu.

ORDBMS podporují rozšířenou verzi SQL – SQL3 (SQL 99), důvodem je podpora objektů (tj. dotazy obsahující atributy objektů). ORDBMS je stále relační, protože data jsou uložena v řádcích a sloupcích tabulek a SQL, včetně zmíněných rozšíření. Typická rozšíření zahrnují dotazy obsahující vnořené objekty, atributy, abstraktní datové typy a použití metod.

Jazyk SQL s rozšířením pro přístup k ADT je stále hlavním rozhraním pro práci s DB.

Objektové rozšíření standardizované v SQL99 zahrnuje:

Strukturované uživatelské typy – Oracle od verze 9.i včetně jednoduché dědičnosti. Mohou být organizovány do hierarchie s děděním. Chování uživatelem definovaných typů je realizováno pomocí procedur a funkcí a (metod u ADT). Jedná se o řádkové typy, ADT, odlišující typy.

Pole s proměnnou délkou (VARRAY) – CREATE TYPE typ AS VARRAY(5) OF VARCHAR(15)

Hnízděné tabulky – typ TABLE

Typ REF – odkaz ukazatel – jeho obsahem je OID nějakého záznamu, nelze s ním manipulovat jako s hodnotou, ale jako s odkazem. Zajišťuje objektovou identitu.

Výhoda - pro sdílení objektů (nejsou zbytečně kopírována data a změna se provádí na jednom místě)

Dereference př. SELECT Film->titul FROM hrajev WHERE herec->jmeno=’Chaplin’;

SQL99 je kompatibilní s existujícími jazyky a další vlastnosti jsou:

Řádkové typy (jsou typem relace)

Vytvoření řádkových typů: 

Příklad tvorby tabulky s řádkovým typem:

Tvorba dotazů: 

FROM FilmovyHerec WHERE FilmovyHerec.adresa.mesto = ‘Plzeň’; 

Abstraktní datové typy (jsou typem atributu relace) – umožňují zapouzdření atributů a operací (na rozdíl od řádkových typů). Hodnoty jejich typů mohou být umístěny do sloupců tabulek.

Př. (Oracle)

Instance vznikají konstruktorem jmenoTypu(), operátorem NEW jmeno hodnota, příkazem INSERT INTO osoby VALUES(...)

Funkce a procedury vyjádřeny v SQL/PSM (Persistent stored module), nebo C/C++, Java, ADA.... Jsou svázány s ADT. Metody jsou uložené ve schématu typu definovaného uživatelem. Metody se dědí. Metody i funkce mohou být polymorfní (liší se způsobem výběru). CREATE PROCEDURE zjisti_cenu ...; CALL zjisti_cenu(...);

Odlišující typy (musí být FINAL) – emulace domén – strong typing

OID – záznamy mají/mohou mít OID (v relačních DB mohou být použity jako primární klíče), které zajišťují objektovou identitu. V jiných záznamech atribut typu REF – odkaz ukazatel. Zpřístupnění klauzulemi REF IS SYSTEM GENERATED a REF IS USER GENERATED.

Srovnání databázových systémů 

Podpora pro objektově orientované programování 

Špatná; programátoři stráví 25% času kódování mapováním objektového programu do databáze 

Omezená hlavně na nové datové typy

Přímá a rozsáhlá 

Jednoduchost používání

Strukturám tabulky je jednoduché porozumět; mnoho dostupných nástrojů pro koncové uživatele 

Totéž co RDBMS, navíc s nějakými matoucími rozšířeními 

OK pro programátory; nějaký SQL přístup pro koncové uživatele 

Objekty jsou přirozenou cestou k modelu; může vyhovět širokým rozsahem typů a vztahů 

Rozšiřitelnost a obsah 

Žádná

Omezená hlavně na nové datové typy 

Může pracovat s libovolnou složitostí; uživatelé mohou psát metody a jakékoliv struktury 

Složité datové vztahy 

Pro model obtížné

Pro model obtížné

Může pracovat s libovolnou složitostí; uživatelé mohou psát metody a jakékoliv struktury 

Úroveň bezpečnosti se mění s dodavatelem, je třeba vzájemně porovnat; dosáhnutí obojího vyžaduje rozsáhlé testování 

Úroveň bezpečnosti se mění s dodavatelem, je třeba vzájemně porovnat; dosáhnutí obojího vyžaduje rozsáhlé testování

Úroveň bezpečnosti se mění s dodavatelem; většina ODBMSs dovoluje programátorům rozšířit funkčnost DBMS definováním nových tříd 

Vyspělost produktu

Velmi vyspělé 

Nezralé; rozšíření jsou nová, stále se definují a jsou relativně neprozkoušená 

Relativně vyspělé

Široká podpora nástrojů a trénovaných vývojářů 

Může využívat výhod nástrojů RDBMS a vývojářů 

Vybaveno SQL, ale určeno pro objektově orientované programování. 

Poskytováno hlavními RDBMS společnostmi

Poskytováno hlavními RDBMS společnostmi 

ODBMS výrobci začínají emulovat RDBMS výrobce, ale žádný nenabízí velký obchod jiným ISV 

Životaschopnost výrobce

Očekávaná pro hlavní zaběhnuté RDBMS výrobce 

Očekávaná pro hlavní RDBMS výrobce; UniSQL bojuje 

Menší než se čekalo; stále se očekává zmenšování 
