65 - Objektově-orientované databázové systémy - kolekce a struktura, objekt, dědičnost, vztahy, role, systém Cache, architektura Java Enterprise Edition.
16. června 2017
12:27
Objektově-orientované databázové systémy
Data
hodnota schopná přenosu, uchování, interpretace či zpracování
z hlediska IT jde o hodnoty různých datových typů
data sama o sobě nemají sémantiku(význam), jsou to věty nějakého formálního jazyka určující syntaxi
hodnoty dat obvykle udávají stav nějakého systému
Informace
Informace jsou interpretovaná data lidmi nebo strojově
po interpretaci mají sémantiku(význam)
transformaci dat na informace provádí uživatel nebo specializovaný systém
je nezbytné zajistit shodnou interpretaci dat u všech uživatelů informace
vzdělání, školení, zavedení konvencí, ontologie
Znalosti –big data
informace zařazená do souvislostí (často s redukovaným množstvím dat)
interpretace je však ještě hůře definovatelná, neboť může jít o agregace informací
znalosti chápeme často jako sekundární odvozené informace
některé informační systémy se zabývají pouze informacemi (transakční -OLTP), některé pracují se znalostmi a velkými daty (pro podporu rozhodování a plánování –OLAP)
znalosti jsou často získávány operacemi nad velkými daty (agregace, data mining, apod.)
množina prvků a vazeb mezi nimi, účelově definované na nějakém nosiči 
Nosič 
množina prvků systému ve vzájemných informačních a procesních vztazích 
prvky nosiče = zdroje 
výsek reálného světa (knihovna, škola, úřad, atd.) 
Zdroje 
fyzické (osoby, materiál, stroje, finance) 
konceptuální (informace) 
Kartézský součin
Uspořádaná n-tice je množina hodnot ve tvaru (a1, a2, ... an)
Kartézský součin A1 x A2 x ... x An je množina všech uspořádaných n-tic takových, že a1 ∈ A1, a2 ∈ A2, … an ∈ An. Podstatné je, že v uspořádané n-tici každá hodnota je prvkem jediné z množin definice kartézského součinu a to té, která jí indexem odpovídá
Struktura 
je uspořádaná n-tice, prvek kartézského součinu
představuje strukturovanou hodnotu vytvořenou pevným počtem pojmenovaných dílčích hodnot obecně různých typů
Pojmenované hodnoty označujeme jako vlastnosti. 
žádné omezení datových typů vlastností (data, složené typy i algoritmy) 
definice pouze rozhraní - polymorfismus struktur 
komunikace zasíláním zpráv (vysílající struktura nemusí znát příjemce zprávy - polymorfismus - zpráva může být interpretována různým způsobem v závislosti na typu přijímající struktury) 
Kolekce 
je uspořádaná multimnožina. 
Předem neomezený počet hodnot stejných datových typů 
standardní operace: add, item, count, remove 
kurzor (iterátor) - ukazovátko do kolekce, posouvání oběma směry 
uspořádání nad kolekcí (jedno nebo více podle různých klíčů) 
vlastnosti - nejčastěji agregáty: maximum, minimum, suma, průměr 
tabulka v relační databázi je vlastně kolekcí bez vlastních vlastností a s často omezenou funkčností, jejímiž prvky jsou struktury s vlastnostmi jednoduchých typů 
častý požadavek jedinečnost prvku v kolekci 
Prostá struktura 
je struktura bez identifikace. 
Objekt 
struktura s identifikací - OID - jednoznačná identifikace objektu v celém systému 
identifikovatelný, odkazovatelný 
perzistentní - dynamická nebo statická perzistence 
porovnávání objektů: 
identické objekty/struktury - stejné atributy 
totožné objekty - stejné OID 
Extent 
kolekce obsahující obor hodnot pro objekty jistého typu 
důležitý navigační prvek v OO databázích 
kolekci udržuje OODBMS 
v případě dědění může být neefektivní (nová instance - vložení do všech extentů hierarchie dědičnosti) 
uživatel má možnost omezit, které třídy budou tvořit extenty 
je nejčastějším vstupním bodem do objektové databáze (iterujeme pres objekty určitého typu v extentu a z nich se pomoci vztahu dostáváme k dalším informacím) 
Abstraktní typ 
struktury, které slouží jen jako stavební kameny (vzory) pro vytváření následníků 
Poznámka: Abstraktní typ může mít extent (budou tam výskyty všech následníků toho datového typu) 
struktury, které skutečně budou mít své výskyty a budou skutečnými strukturami 
Vztahy 
dva pohledy na strukturu: 
definiční - definice metadat (jak má struktura daného typu vypadat z hlediska vlastností a jejich typů) 
výskytový - vytváříme konkrétní výskyty (instance) struktury (jaké jsou hodnoty vlastností) 
Vztah je vazba mezi výskyty objektů 
výskyt struktury, v níž se vyskytuje vlastnost typu struktura (je nezajímavé, jde-li o prostou strukturu nebo objekt), nazveme vlastníkem; hodnotu vlastnosti nazveme členem 
Typy vztahů 
Členem je prostá struktura - jedná se o hierarchické členění struktur (základní prostředek pro vytváření komplexních hierarchicky strukturovaných hodnot) 
Členem je kolekce prostých struktur - opět pouze hierarchické zanoření 
Členem je jediný objekt - vztah 1:1 realizovaný pomocí OID 
Členem je kolekce objektů - vztah 1:N, kolekce obsahuje reference na objekty 
Objekty ani kolekce objektů nemohou existovat bez vztahů a naopak. 
Inverzní vztahy 
se mohou automaticky dotvořit při vzniku vztahu (atribut inverse),
 velmi usnadňují vývoj IS (automatické udržování integrity apod.). 
Častým modelovaným případem je situace, kdy je  požadováno, aby  vytvoření vztahu V z objektu A do objektu B vyvolalo rovněž vytvoření vztahu W z objektu B do objektu A.
Podobně při zrušení vztahu V z objektu A do objektu B musí dojít i ke zrušení vztahu W z objektu B do objektu A.
Tuto situaci vyjádříme zápisem atributu Inverse ke vztahu V. Datový typ vztahu V určuje, do kterého objektu vztah povede. Hodnota atributu Inverse udává jméno vztahu W, který má být v objektu B udržován jako inverzní.
Dědičnost 
umožňuje definici typu pomocí typu jiného. 
Pojmy předek a následník, přímý předek, přímý následník -> dědičnost, přímá dědičnost 
Vlastnosti se mohou přidávat, modifikovat i ubírat. 
Binární relace dědičnosti je tranzitivní uzávěr relace přímé dedičnosti. Obě tyto binární relace jsou uspořádáním. 
Generalizace je postup vytváření hierarchie dědičnosti hledáním společných vlastností a vytvářením předků. 
Specializace je opačný postup ke generalizaci, kdy se rozrůzňují typy a vznikají tak následníci. 
Abstraktní typy existují pouze kvůli hierarchii dědičnosti, ale nelze vytvářet jejich instance. 
jednoduchá dědičnost - každý následník smí mít pouze jediného předka (zakreslený graf je potom stromem) 
vícenásobné dědičnosti - počet předků není omezen (zakreslený graf je obecný acyklický graf) 
v grafu dědičnosti se nesmí vyskytovat cyklus 
Zavedením hierarchie dědičnosti nad typy jsme stanovili pro každý typ jeho předka (kromě nejvyššího typu v hierarchii). Žádný z typů nemůže být svým vlastním předkem, ani následníkem.
Typová kompatibilita struktur
Požadujeme aby každá struktura jistého typu byla zároveň typu všech svých předků. 
Struktura není tedy jediného typu, ale je současně více typů, a to svého typu a jeho všech přímých i nepřímých předchůdců.
Tedy, pokud máme k dispozici strukturu typu B, která je instancí následníka typu A, pak se může B vyskytovat všude tam, kde může být A. Tj. v deklaracích proměnných, hodnotách vlastností, kolekcích, extentech apod. Říkáme, že typ B je kompatibilní s typem A, nikoliv naopak.
Vícetypovost a role
Role
změna role objektu v čase u perzistentních  objektů
Vícetypovost je  vícenásobná dědičnost pro persistentní objekty prováděná v čase běhu
Vícetypovost - více koncových typů
Pokud výskytem objektu typu A modelujeme osobu, typu B studenta a typu C čtenáře knihovny, mohl by v klasickém objektovém modelování existovat objekt typu A nebo typu B, ale nikdy současně obou společně.
Často se však vyskytne nutnost modelovat kombinaci studenta s čtenářem knihovny. Pro tento případ nabízí klasický objektový přístup vytvořit typ D, který bude následníkem typů B i C a bude tedy studentem a současně čtenářem.
této techniky lze využít velmi dobře v situaci, kdy objekty nejsou persistentní.
tehdy je možné podle momentální potřeby mezi jednotlivými běhy aplikací vždy doplnit graf dědičnosti o typ vyjadřující požadovanou kombinaci vícenásobnou dědičností, celou aplikaci znovu přeložit a použít kombinovaný objekt.
v DB aplikacích však objekt persistentní je a není možné předem předpokládat všechny možné kombinace koncových typů, obzvláště o složitých grafů dědičnosti,
je tedy nutné umožnit vytváření různých kombinací koncových typů v jediném objektu během jeho existence. Tento jev se nazývá vícetypovost.
Vytvořeno společností InterSystems 
Postrelační databáze (je schopna pracovat jak z relačního tak objektového pohledu) 
Aplikační i datový server + integrované vývojové prostředí 
Přístup k objektům přes ID, pojmenovaný dotaz, Ad-hoc dotaz 
Architektura databáze 
základní jednotkou modelování jsou objekty organizované do tříd 
Caché Class Dictionary - úložiště tříd a dat 
každá třída jsou dvě synchronní sady kódu - pro relační i objektový přístup 
Vlastnosti jsou do relačního modelu mapovány 
jednohodnotové vlastnosti - sloupce 
vícehodnotové - zvlášť tabulka s vazbou na tabulku objektů třídy 
třídy lze tvořit pomocí 
Caché studia (ručně) 
Pomoci DDL SQL 
Programově pomocí objektů 
Pomocí XML 
pomocí UML (import UML specifikací) 
Typy tříd 
Abstraktní třídy - nelze instancovat 
Registrované třídy - lze instancovat, nejsou perzistentní 
Persistentní třídy - lze instancovat jsou perzistentní 
Vnořené třídy - nejsou perzistentní samy o sobě, ale jen jako součást perzistentní třídy 
Odvozené třídy - vznikají dědičností, polymorfismem 
Datové typy 
Caché Object Script 
značně odlišné od klasických programovacích jazyků 
2 typy proměnných - globály (perzistentní) a dočasné 
2 typy funkcí - vnitřní (systémové) a vnější (uživatelské) 
Caché Basic 
Vychází z VisualBasic 
obojí je možné kombinovat 
CSP - "Caché server pages" 
Dynamicky generovaná stránka, session automaticky 
Podobné JSP 
Java EE 
Platforma pro vývoj a provoz aplikací (virtuální stroj, podpůrné nástroje) 
Databázová vrstva, Business vrstva (chování), Webová vrstva, Klientská vrstva 
Vrstvy 
Business 
Implementace chování aplikace 
Potencionálně distribuovaná 
Aplikace nebo prohlížeč 
Tučné vrstvy spadají do kompetence Java EE serveru 
datová vrstva 
Java Beans 
Java Persistence API (JPA) 
webová aplikace 
Java Server Pages (JSP) 
JSP Standard Tag Library (JSTL) 
Java Server Faces (JSF) 
Java EE aplikace 
EJB (Enterprise Java Beans) moduly 
definují veřejná rozhraní 
lze je odděleně nasadit na servery 
EJB vrstva zajišťuje vzdálené volání funkcí rozhraní 
Webové moduly 
uživatelské rozhraní 
Kontejnery 
Prostředí pro běh aplikace na serveru (webový, EJB) 
Webovy kontejner - beh webu 
EJB kontejner - beh EJB modulu, volani funkci 
Java EE kontejner - Webovy + EJB kontejer 
Dostupne kontejnery 
Java EE kontejnery 
GlassFish (Sun) 
JBoss (Red Hat) 
Geronimo (Apache) 
WebSphere (IBM) 
Pouze webove servery 
Tomcat (Apache) 
Jetty (Mort Bay Consulting) 
Technologie 
Java Beans - pomocí anotací vytvoření entity persistence z třídy 
Java Persistence API - O/R framework, relační úroveň (JDBC spojen s databází), objektově orientované API, mapování tříd na tabulky (detaily anotacemi) 
Java Servlet - implementuje chování serveru 
Java Server Pages - dynamické webové stránky (XHTML kód, kód v Javě (scriptlet), definované značky, výrazy) 
JSP Standard Tag Library - množina základních značek 
Facelets - nástupce JSP v Java EE 6, založeno na XML, šablonování komponent a stránek, překlad na interní objektovou reprezentaci 
Java Server Faces - MVC framework nad Facelets, značky pro generování základních prvků uživatelského rozhraní 
stránka se překládá na servlet (třídu) 
překlad zajišťuje kontejner 
Notes
Objektově-orientované databázové systémy - kolekce a struktura, objekt, dědičnost, vztahy, role, systém Cache, architektura Java Enterprise Edition.
Kdo me primarne zkousel: Burget Radek, Ing., Ph.D.
Co jsem k tomu rekl(a)/na co se ptali/co mne vytkli: Tady chtěl vědět co je to kolekce, struktura, objekt a pak ty vztahy. Základní definice jsem řekl, ale pak se doptával na nějaké další věci a to jsem ani nevěděl, co mu mám k tomu říct, ale bylo to v pohodě. Za tuto část C.
From <[link]> 
Objektově-orientované databázové systémy - kolekce a struktura, objekt, dědičnost, vztahy, role, systém Cache, architektura Java Enterprise Edition.
Kdo me primarne zkousel: Burget
Co jsem k tomu rekl(a)/na co se ptali/co mne vytkli:
Burget mě vyzval, ať začnu sám, tak jsem začal od úplných základů. Popsal jsem, co je objekt a zmínil jsem při tom strukturu, tak chtěl, ať blíže popíšu strukturu. Pak co je teda kolekce. Následně jak se odlišuje struktura od objektu a když jsem řekl, že tím, že objekt je identifikovatelný a tím pádem i odkazovatelný, tak se zeptal, k čemu to je. Tak jsem řekl, že např. k vytváření vztahů. Tak ještě chtěl vědět, jak vypadá vztah 1:1 a 1:N. To mu stačilo.
From <[link]> 
 Objektově orientované databázové systémy - kolekce, struktura, objekt, vztahy
Kdo me primarne zkousel: Hruška Tomáš, prof. Ing., CSc.
Co jsem k tomu rekl(a)/na co se ptali/co mne vytkli:
Začal jsem definicí kolekce, kterou jsem vyměnil se strukturou, na což mě zkoušející upozornil. Po definici struktury a kolekce jsem přešel k objektu, kde se mě ptal na příklad OID. Nakonec jsem na tabuli nakreslil vztahy (všechny 4 možnosti), což mu stačilo více než slovní popis. Známka - C.
From <[link]> 
 Objektově-orientované databázové systémy – kolekce a struktura, objekt (PIS) (67)
Kdo me primarne zkousel: Hruška
Co jsem k tomu rekl(a)/na co se ptali/co mne vytkli: Povedal som nejaky zakladne definicie (struktura, prosta struktura, objekt). Potom sa pytal, ze co je to OID (hodnota, referencia). Na to som odpovedal, ze hodnota. A snazil sa ma dotlacit k tomu, ze tam musi byt index na vyhladavanie, co sa nakoniec podarilo.
From <[link]> 
Objektově-orientované databázové systémy – kolekce a struktura, objekt, dědičnost, vztahy, role, systém Cache, architektura Java Enterprise Edition.
Kdo me primarne zkousel: Hruska
Co jsem k tomu rekl(a)/na co se ptali/co mne vytkli: Rekl jsem nake obecne povidani o OO databazich, pak co je to objekt (struktura s identifikaci) pak se ptali na to co je vlastne ta identifikace zac jestli adresa nebo hodnota, jak se k obektum pristupuje a to sem moc nedaval, obecne na to jak je tohle spis lechci otazka tak sem se zase zamotal a rekl dost malo
From <[link]> 