+ All Categories
Home > Documents > Objektový přístup v databázích

Objektový přístup v databázích

Date post: 14-Jan-2016
Category:
Upload: sanura
View: 28 times
Download: 0 times
Share this document with a friend
Description:
Objektový přístup v databázích. Objektová identita (místo primárních klíčů) Reference (místo cizích klíčů) Objektový přístup k návrhu – objekty stejného typu mají stejné chování a stejnou množinu stavů : Metody, (funkce, uložené procedury, triggery v SQL ) Složité struktury datové - PowerPoint PPT Presentation
32
síťový,hierarchický síťové,hierarchické relační relační objektový objektové 1960 1970 1980 1990 databázové m odely SŘBD síťové,hierarchické relační relační objektový objektové objektový data w arehouse 1960 1970 1980 1990 1960 1970 1980 1990 databázové m odely SŘBD databázové m odely SŘBD databázové m odely SŘBD m ultidim enzionální objektově-relační objektově-relační
Transcript
Page 1: Objektový přístup v databázích

síťový, hierarchický síťové, hierarchické

relační

relační

objektový objektové

1960

1970

1980

1990

databázové modely SŘBD

síťové, hierarchické

relační relační

objektový objektové

objektový

data warehouse

1960

1970

1980

1990

1960

1970

1980

1990

databázové modely SŘBD databázové modely SŘBD databázové modely SŘBD

multidimenzionální

objektově-relační objektově-relační

Page 2: Objektový přístup v databázích

Objektový přístup v databázích

• Objektová identita (místo primárních klíčů)

– Reference (místo cizích klíčů)

• Objektový přístup k návrhu– objekty stejného typu mají stejné chování a stejnou množinu stavů:– Metody, (funkce, uložené procedury, triggery v SQL)

– Složité struktury datové• Seznamy, pole, (multi)množiny, strukturované hodnoty• Hnízděné tabulky v SQL

– Abstraktní datové typy

• Objektově orientovaná tvorba aplikací– Objektové přizpůsobení DML

• SQL• OQL, binding k programovacím jazykům

Page 3: Objektový přístup v databázích

Objektová identita

• Záznamy mají/mohou mít OID– v relační db mohou být použity „jako primární

klíče“• k odkazům z jiných záznamů

• V jiných záznamech : atribut typu REF – odkaz, ukazatel– jeho obsahem je OID nějakého záznamu

• nelze s ním manipulovat jako s hodnotou, ale jako s odkazem

Page 4: Objektový přístup v databázích

Reference a dereference v SQLnavigační dotazování

Tabulka Ucty má pole Vlastnik typu REF do tabulky Klient,tabulka Klient má pole Jmeno a pole Adresa strukturovaného typu:

SELECT U.Vlastnik.JmenoFROM Ucty UWHERE U.Vlastnik.Adresa.Mesto=”Pardubice“ AND U.Zustatek>100000;

Page 5: Objektový přístup v databázích

OID, REF a referenční integrita?

• INSERT…– integritu zajišťuje vkládání reference na konkrétní

objekt• UPDATE…

– OID nelze měnit– aktualizace REFu se provádí referencí na konkrétní

objekt• DELETE…

– se buď vůbec neprovádí– nebo může eventuelně proběhnout, ale volné odkazy

zkontrolujeme v neděli večer– nebo potřebuje zajistit integritu definujeme omezení

FOREIGN KEY

Page 6: Objektový přístup v databázích

ODMG, OMG (ODBT WG od 2.2006)

• ODMG 3.0 norma (2001):– objektový model (~OMG)

• objekt, typ/třída - objekty stejné třídy mají mít stejné chování a stejnou množinu stavů

• metody, atributy, vztahy (=vazby na jiný objekt)

– ODL– OQL

• jazyk manipulace dat?– „binding“ pro objektově orientované prog. jazyky

Page 7: Objektový přístup v databázích

ODL

CLASS Person{ SRING Name,

DATE Birthdate,…

INT Age,REF <Apartment> Lives_in

INVERSE Apartment::IS_used_by}

• jiné konstrukty SET, BAG, ARRAY, STRUCT, LIST

SET<REF<Apartment>>

Referenční vztahy, integrita

1:1

1:n, n:m

také metody,konstruktor

Page 8: Objektový přístup v databázích

OQL

SELECT c.Lives_in.Building.AddressFROM p IN Person, c IN p.Children

…výsledkem je Bag

SELECT STRUCT( me:p.Name, my_address:p.lives_in.building.address)FROM p IN PersonWHERE …

…výsledkem je struktura• Do SELECT možno i zahnízďování struktur, i metody…• Porušení zapouzdření možno v ad-hoc dotazech.

porušení zapouzdření

porušení zapouzdření

Page 9: Objektový přístup v databázích

Objektové databázeaplikace

• Inženýrské úlohy

• Prostorové databáze

• Telekomunikace, sítě

• Data vědeckých výzkumů (fyzika, biologie)

• Finanční služby

Page 10: Objektový přístup v databázích

Objekty v SQL databázi

• Většinou dynamicky jako výsledek SELECTů,– některé typované jako VIEW

• Chování objektů?– Uložené procedury, triggery

Page 11: Objektový přístup v databázích

Objektové typy v SQL databázi

• Složité objekty

možno použít jako řádkový typ při CREATE nové tabulky,

lineitems mohou být logicky dostupné v „nested table“ (ORACLE)

idcontact

lineitemsname phone

item qty unit_price

Page 12: Objektový přístup v databázích

Objektové typy v SQL databázi

• Metody příslušného objektového typu v definici typu– Těla metod v uložených procedurách a

funkcích

SELECT Formalni(Jmeno)FROM CtenarWHERE Vek(Ctenar)>=40

Optimalizace?!

Page 13: Objektový přístup v databázích

Datové typy v SQL

Základní datové typy:– číslo– textový údaj– datum a čas– ano/ne (logický)

operace (=„co s nimi mohu dělat“) patří k typu (=„záleží na typu“)

Nové datové typy…– bitové řetězce– volný text– obrázky, audio,

multimedia– prostorová data– časové intervaly

+ „uživatelsky“ definované typy

Page 14: Objektový přístup v databázích

UDTs and UDFs…

• DataBlades

• Cartridges

• Extenders

• …

Indexace

Balíky, které je možno koupit

Page 15: Objektový přístup v databázích

Odlišující typy v SQL

• Emulace domén– Strong typing

Page 16: Objektový přístup v databázích

Chování dat v SQL databáziaktivní databáze

• databanka =– databáze

+

– aplikace datům vlastní

triggery uložené procedury

Page 17: Objektový přístup v databázích

Triggery

CREATE TRIGGER …

událost INSERT|UPDATE|DELETE

před/po BEFORE/AFTER

tabulka … (u UPDATE výběr polí)

…jméno pro referenci na vkládaný/měněný/mazaný řádek

podmínka …

akce …

pro FOR EACH ROW | STATEMENT

Page 18: Objektový přístup v databázích

Triggery

Účel:

• Integritní omezení

• Odvozené datové objekty– Repliky, archivy, vypočtená pole

• Akce ven– E-mail, zaslání objednávky…

Page 19: Objektový přístup v databázích

Integritní omezení triggerem- příklad

Titul (ISBN, název, …)

Svazek (signatura, titul→Titul.ISBN,…, umístění)

Vypujcka (ctenar, svazek, od, do)

Rezervace (ctenar, titul, od, do)

Titul není možno rezervovat, když existuje volný svazek tohoto titulu.

Page 20: Objektový přístup v databázích

pokračování příkladu

událost: insert do tabulky Rezervacepodmínka: „existuje volný svazek“

EXISTS SELECT * FROM Vypujcka v JOIN Svazek s ON (v.svazek=s.signatura) WHERE s.titul=Rezervace.titul AND v.do IS NOT NULL

akce: „nepovolit“ukončit transakci, poslat hlasku

…málo efektivní

Page 21: Objektový přístup v databázích

pokračování příkladu

Svazek (signatura, titul→Titul.ISBN,…, umístění, je_volný:A/N)

podmínka: „existuje volný svazek“EXISTS SELECT * FROM Svazek s WHERE s.titul=Rezervace.titul AND s.je_volný

…trigger na údržbu odvozeného pole je_volný

Page 22: Objektový přístup v databázích

pokračování příkladu

událost: UPDATE pole do v tabulce Vypujcky

podmínka: -

akce: „u toho svazku napiš, že je volný“ UPDATE Svazek SET je_volny=T WHERE Svazek.signatura=Vypujcky.svazek

Page 23: Objektový přístup v databázích

pokračování příkladu

událost: INSERT do tabulky Vypujcky

podmínka: -

akce: „u toho svazku napiš, že není volný“ UPDATE Svazek SET je_volny=F WHERE Svazek.signatura=Vypujcky.svazek

Page 24: Objektový přístup v databázích

Triggery

• Množství možných triggerů na jednu tabulku je omezené !

Page 25: Objektový přístup v databázích

Uložené procedury

• Spravované db serverem– Přístupová práva

• Zkompilované, prováděné db serverem– Rychlost, sdílení paměti

• Logika aplikace na jediném místě– Snadná údržba (opravy, aktualizace)– Může programovat nejlepší programátor, jednou

• Lze omezit přístupová práva k datovým objektům– Bezpečnost, spolehlivost přístupu

Page 26: Objektový přístup v databázích

Uložené procedury

• Zatěžují DB server

• Vhodné jsou „datově intenzivní procesy“

Page 27: Objektový přístup v databázích

Uložené procedury

Užití:

• Jednotlivé typové SELECTy– (…nebezpečí neoptimalizovaných SELECTů)

• Těla triggerů

• Údržbové procedury

Page 28: Objektový přístup v databázích

Uložené procedury

• Napsané v SQL– Od verze 1999 je SQL úplný programovací

jazyk– Proměnné…

• Napsané v jiném programovacím jazyce– Db server musí mít kompilátor toho jazyka

Page 29: Objektový přístup v databázích

DATA

databáze,schemata,tabulky,indexy,

constraints,views

triggery

uložené procedury datové typy

funkce

aplikační server

SQL

SQL

data

data tenký klient

tlustý klient

ODBC

API vrstvy

embedded SQLpředkompilátor

recordset

level1,2,3

connectbegin (transaction)insert,update,delete

select…commit/rollback

disconnect

dotaz na „SQLcode“

Page 30: Objektový přístup v databázích

O-R mapping

• Vrstvy mezi OO aplikací a SQL databází– myšlení v objektech– ev. cashe objektů, zodpovědné za persistenci

• Co potřebjeme:– INSERT,UPDATE,DELETE– SELECT

• Typový– Navigační na malém počtu objektů– Přehledový (lépe SQL přímo)

• Ad-hoc… (lépe SQL přímo)

Page 31: Objektový přístup v databázích

Porovnání R,OO,O-R

• Relační db – výkon na tradičních datech,výkon na rozsáhlých dotazech

• O-R mapping –– programátorské pohodlí, rychlý, udržitelný vývoj aplikací

• OO db – výkon na netradičních datech– slabší v „databázových“ rysech

Page 32: Objektový přístup v databázích

Trendy v DBS

• Prostorová data

• XML databáze

• Temporární databáze, verzování


Recommended