1 / 32

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é

sanura
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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;

  4. 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

  5. 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

  6. ODL také metody,konstruktor 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

  7. 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í

  8. 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

  9. 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

  10. 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)

  11. 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?!

  12. Základní datové typy: číslo textový údaj datum a čas ano/ne (logický) Nové datové typy… bitové řetězce volný text obrázky, audio, multimedia prostorová data časové intervaly Datové typy v SQL operace (=„co s nimi mohu dělat“) patří k typu (=„záleží na typu“) + „uživatelsky“ definované typy

  13. UDTs and UDFs… • DataBlades • Cartridges • Extenders • … Indexace Balíky, které je možno koupit

  14. Odlišující typy v SQL • Emulace domén • Strong typing

  15. Chování dat v SQL databáziaktivní databáze • databanka = • databáze + • aplikace datům vlastní triggery uložené procedury

  16. 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

  17. Triggery Účel: • Integritní omezení • Odvozené datové objekty • Repliky, archivy, vypočtená pole • Akce ven • E-mail, zaslání objednávky…

  18. 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.

  19. pokračování příkladu událost: insert do tabulky Rezervace podmí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í

  20. 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ý

  21. 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

  22. 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

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

  24. 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

  25. Uložené procedury • Zatěžují DB server • Vhodné jsou „datově intenzivní procesy“

  26. Uložené procedury Užití: • Jednotlivé typové SELECTy • (…nebezpečí neoptimalizovaných SELECTů) • Těla triggerů • Údržbové procedury

  27. 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

  28. dotaz na „SQLcode“ databáze,schemata,tabulky,indexy,constraints,views triggery aplikační server SQL tenký klient data tlustý klient SŘBD DATA SQL data uložené procedury datovétypyfunkce embedded SQL předkompilátor API vrstvy connectbegin (transaction)insert,update,deleteselect…commit/rollbackdisconnect recordset ODBC level1,2,3

  29. 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)

  30. 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

  31. Trendy v DBS • Prostorová data • XML databáze • Temporární databáze, verzování

More Related