Případová studie návrhu implementace a nasazení OLAP

Rozměr: px
Začít zobrazení ze stránky:

Download "Případová studie návrhu implementace a nasazení OLAP"

Transkript

1 Bankovní institut vysoká škola Praha Katedra informačních technologií a elektronického obchodování Případová studie návrhu implementace a nasazení OLAP Diplomová práce Autor: Bc. Pavel PECA Informační technologie a management Vedoucí Práce: Ing. Michal VALENTA, Ph.D. Praha Červen 2011

2 Prohlášení: Prohlašuji, ţe jsem diplomovou práci zpracoval samostatně a v seznamu uvedl veškerou pouţitou literaturu. Svým podpisem stvrzuji, ţe odevzdaná elektronická podoba práce je identická s její tištěnou verzí, a jsem seznámen se skutečností, ţe se práce bude archivovat v knihovně BIVŠ a dále bude zpřístupněna třetím osobám prostřednictvím interní databáze elektronických vysokoškolských prací. V Praze dne Místo a datum. jméno a příjmení autora

3 Poděkování: Na tomto místě bych rád poděkoval panu Ing. Michalovi Valentovi, Ph.D., za hodnotné rady, zajímavé podněty, vstřícný a mentorský přístup a pomoc při návrhu a psaní této diplomové práce. Velké díky patří mé rodině, za vytvoření příjemných podmínek a nezměrnou podporu. Dále pak děkuji kolegům z týmu Capitol společnosti Capgemini Czech Repubulic, za lidský a chápavý přístup k mým absencím v období dokončování této diplomové práce. Také bych rád poděkoval kamarádovi Honzovi Jarošovi za motivaci a pozitivní energii.

4 Anotace V dnešní elektronické době se v transakčních systémech uchovává velké mnoţství různorodých informací, jako jsou například informace o prodejích výrobků, o klientech, o časovém zařazení těchto informací atd. Pokud tyto data budeme vhodně skladovat a analyzovat, můţeme z nich pomocí vyspělých nástrojů získat značnou vypovídací hodnotu, například o vývoji trendů, bilancí a jiných zákonitostí v našich ţivotech. Tyto data za účelem analýzy a zkoumání vstupují do datových skladů, kde je na ně nahlíţeno z různých pohledů. Tato diplomová práce popisuje relační databáze, syntaxi jazyka SQL, MDX a další především normalizační a denormalizační techniky pouţívané k zastřešení problematiky datových skladů a OLAP analýzy obecně. Vysvětluje pojmy jako dimenze, datová krychle či míra. V další praktické části potom vyuţívá zmíněných informací a vytváří případovou studii implementace OLAP serveru pro servery Oracle OLAP a Pentaho Mondrian. Implementaci dokumentuje a jejich funkci demonstruje na příkladech. Annotation In today's electronic age the transactional systems keep large amounts of diverse information such as information of sales products, of clients, the inclusion of time information etc. If these data will be stored and analyzed properly, we can use the advanced tools and gain the considerable explanatory value for the development of trends, balances and other legality in our lives. These analysis and examination data entering into a data warehouse where they are viewed from different perspectives. This diploma thesis describes a relational database, SQL syntax, MDX and other techniques above all normalizing and de-normalizing techniques used to cover issues of data warehouses and OLAP analysis in generally. Explains terms such as "Dimension", "Data cube" or "Measure". In another practical part we can use mentioned information and create a study case and implementation of OLAP Server for servers Oracle OLAP and Pentaho Mondrian. This work documents implementation and demonstrating their functions in the examples.

5 Obsah Obsah... 5 Úvod... 7 Problematika datových skladů obecně Architektury pro datové sklady OLTP relační databáze Datová normalizace OLAP multidimenzionální databáze Schémata uspořádání tabulek faktů a dimenzí Dotazovací jazyky SQL Příkazy DDL Příkazy DML Příkazy TCC Příkazy DCL Moţnosti jazyka SQL pro agregaci a analýzu dat MDX ETL Procesy Seznámení s OLAP produkty na trhu Oracle OLAP Pentaho Mondrian Vlastní návrh a implementace DS PIM návrh architektury a řešení datového skladu Datový model zdrojové relační databáze Převod relačního schématu na schéma hvězdy PSM návrh architektury a řešení datového skladu Oracle Vlastní instalace SŘBD Oracle 11g Vytvoření datových struktur Naplnění datových struktur daty Vytvoření datové krychle, dimenzí a hierarchií

6 3.3 PSM návrh architektury a řešení datového skladu Pentaho Vlastní instalace OLAP serveru Pentaho Mondrian Konfigurace OLAP serveru a mapování modelu na SŘBD Oracle 11g Vlastní pouţití OLAP serveru Pentaho Mondrian Porovnaní vyhotovených řešení Porovnání z pohledu dostupnosti a instalace Porovnání z pohledu implementace Porovnání z pohledu rychlosti Další varianty porovnání Závěry a doporučení Seznam použité literatury Seznam použitých zkratek Seznam použitých obrázků Seznam použitých tabulek Přílohy

7 Úvod Cíl této diplomové práce je detailní seznámení se s moderními přístupy k návrhu OLAP aplikací a ukázková implementace datového skladu v prostředích Oracle OLAP a Pentaho Mondrian. Problematika datových skladů nabírá v poslední době na oblibě, díky více a více dostupným hardwarovým řešením, velké škále platforem pro uchovávání dat a rozšiřující se nabídkou analytických nástrojů. V této práci se budu zabývat popisem techniky realizace datového skladu a nástroji k tomu potřebnými. Navrhnu vhodnou případovou studii, její logický i fyzický rámec a provedu ukázkovou implementaci výše zmíněných OLAP serverů. Případová studie bude realizovaná nad reálnými daty tak, aby co nejvěrněji nastínila moţná pouţití takto implementovaných řešení. Také se budu zaměřovat na zvýraznění kladů a záporů popisovaných řešení a slabá a silná místa mého návrhu. 7

8 Problematika datových skladů obecně Intenzivní nasazení informačních technologií do rozličných odvětví lidské činnosti přináší s sebou jeden zákonitý jev, kterým je shromaţďování velkého mnoţství různorodých údajů. Shromaţďují se údaje z technologických zařízení, firemní administrativy, odbytu a podobně. Mnoţství údajů mají shromáţděno i velké supermarkety ze skladových karet, elektronických pokladen a podobně. Výsledek je lehko předvídatelný. Za kratší či delší dobu se podaří shromáţdit obrovské mnoţství údajů. Moderní databázové servery umoţňují nejen bezpečnou a rychlou práci s takovým mnoţstvím údajů, ale umoţňují nám z těchto údajů získat i informace? Na první, povrchní pohled by se mohlo zdát, ţe mezi pojmy, údaje a informace, můţeme postavit znaménko rovnosti. Ale jen na první pohled. [5] Výstiţnou definici rozdílu mezi údaji (daty) a informacemi můţeme najít ve firemní literatuře Oracle. Podle této definice se stávají data informacemi, pokud: [6] Máme data Víme, ţe máme data Víme, kde tato data máme Máme k těmto datům přístup Zdroji dat můţeme důvěřovat Proces transformace dat na informace a převod těchto informací na poznatky prostřednictvím objevování nazýváme Business intelligence. Jinými slovy, účelem Business intelligence je konvertovat velké objemy údajů na poznatky, které jsou potřebné pro koncové uţivatele. Tyto poznatky můţeme potom efektivně vyuţít například v procesu rozhodování. Pod pojmem informace nerozumíme jen konkrétní záznam nebo mnoţinu záznamů. Často potřebujeme sledovat trend nějaké veličiny, například při obchodování s cennými papíry, nebo potřebujeme najít mezi údaji určité závislosti. Proto moderní databázové servery obsahují rozsáhlou podporu pro budování datových skladů (data warehouse), analýzy OLAP a data mining (dolování, odkrývání dat). 8

9 Poznatky z obchodování se samozřejmě zpracovávaly i předtím, neboť plány a studie se pro manaţery vypracovávaly odjakţiva, byly to samozřejmě reporty v papírové podobě. Určitý posun nastal v období 1980 aţ 1990, kdy se pro vyhodnocování údajů z obchodování začaly pouţívat různé tabulkové kalkulační programy. Éra produktů pro Business Intelligence začala okolo roku [5] 9

10 1 Architektury pro datové sklady Pokud budeme hovořit o architekturách databázových systémů obecně, můţeme je rozdělit z hlediska jejich datové architektury (modelu), která označuje vlastnosti vazeb mezi údaji v databázi a způsob organizace jejich struktury, kterým se prezentuje na logické úrovni, tedy na rozhraní SŘBD. Výběr datové architektury podstatně ovlivňuje vlastnosti dotazovacího jazyka a především způsob konstrukce jednotlivých dotazů. Datový model představuje definici formalizovaných přístupů k uložení a práci s informací v paměti počítače. Síťové Klasické síťové Hierarchické Souborově orientované Relační Normalizované NFNF Klasické relační Objekty (objektově relační) Datové modely Hypertextové Objektově orientované Fultextové Sémantické sítě Klasické (třídně instanční) Obrázek 1 Druhy datových modelů (převzato z [10]) Datové modely lze rozdělit na dvě velké skupiny. První z nich jsou historicky starší souborově orientované modely. Jejich název vychází z pohledu na data v databázi, který je relativně blízký souborové technologii, také z ní vychází, a nahlíţí na data jako na seznamy poloţek, coţ lze povaţovat za formalizovanou podobu původního datového souboru. Druhou skupinou jsou modely souhrnně označované jako objektově orientované. Jejich společnou vlastností je to, ţe jsou zaloţeny na takových formálních prostředcích, které nemají přímou vazbu na architekturu současných počítačů, především na jiţ zmíněnou organizaci 10

11 paměti. V detailech se však jednotlivé modely od sebe velmi liší a jejich vývoji se věnuje značná pozornost. Na pomyslné linii člověk-počítač je tato druhá skupina vlivem pouţitých prostředků blíţe člověku. Síťový datový model je historicky nejstarším datovým modelem. Základy síťového datového modelu byly poloţeny v roce Podstatou síťového datového modelu jsou vzájemně propojené mnoţiny záznamů. Záznamy jednoho typu jsou obvykle uloţeny v jednom souboru. Celá databáze je sloţena ze dvou hlavních mnoţin. Mnoţin záznamů, obvykle rozloţenou do více souborů a mnoţinou spojek, přičemţ spojka je zvláštní typ záznamu o dvou poloţkách obsahující fyzické adresy záznamů, které spojují. Pro modelování síťového databázového schématu se pouţívají např. tzv. Bachmanovy diagramy datové struktury, obsahující symboly obdélníků, reprezentující záznamy a čáry se šipkou mezi obdélníky, které představují spojky jako orientovanou vazbu mezi záznamy. Hierarchický datový model je zvláštním případem síťového datového modelu, kdy je kaţdý záznam odkazován pouze nejvýše jedním jiným záznamem. Pokud je toto pravidlo dodrţeno, potom celá struktura databáze degeneruje na strom, coţ se projevuje v odlišné fyzické implementaci databáze. V tomto modelu jsou data uspořádána podle tzv. hierarchických stromů (např. ZEMĚ, STÁT, HLAVNÍ MĚSTO, ). Kaţdý uzel tohoto stromu reprezentuje typ záznamu a kaţdá hrana spojku mezi dvěma typy záznamů. V hierarchickém stromu existuje jeden speciální význačný typ záznamu, tzv. kořen. Ostatní typy záznamů se nazývají závislé typy záznamů a jsou ve struktuře hierarchického stromu na niţší úrovni. Síťový a hierarchický datový model ve své době představoval optimální technologii pro organizaci dat v databázích. Mezi výhody těchto modelů patří velká rychlost zpracování a vazba na nativní knihovny funkcí programovacích jazyků, které dodnes podporují práci s daty organizovanými podle síťového nebo hierarchického datového modelu. Mezi nevýhody těchto datových modelů patří sekvenční přístup po jednotlivých záznamech, coţ je nevýhodné pro konstrukci uţivatelských dotazů nad SŘBD, či obtíţná změna struktury databáze. Tyto modely pracují optimálně pouze tehdy, pokud je na počátku vytvořena struktura databáze, do které se potom jen zapisuje. Rušení záznamů v databázi a hlavně změny struktury databáze jsou programátorsky obtíţné. Tyto nevýhody vyústily vývojem relačního datového modelu. 11

12 Relační datový model má počátky v roce Autorem prvních prací byl E. F. Codd, matematik z laboratoře IBM. Relační datový model se od svých předchůdců liší tím, ţe je důsledně budován na teoretickém základě, tj. je definována struktura a povolené operace nad nimi. Rozšíření relačního datového modelu po řadu let bránil nízký výkon tehdejších počítačů, neboť tento model je řádově pomalejší při provádění dotazů neţ síťový datový model. Rozšíření RDM nastalo koncem 80. let. Relační datový model lze charakterizovat následujícím způsobem: Hodnoty v tabulkách musejí být atomické. Hodnoty musejí být skalární (nesmějí mít více neţ jeden rozměr). Hodnoty v tabulkách existují jako prvky jednotlivých domén. Všechny prvky dané domény musejí být mezi sebou porovnatelné a musejí náleţet jednomu datovému typu. V kaţdé tabulce jsou hodnoty v jednom nebo více sloupcích (doménách), které slouţí k jednoznačné identifikaci řádek mezi sebou. Tyto hodnoty jsou označovány jako primární klíče tabulky. V některých tabulkách jsou hodnoty v jednom nebo ve více sloupcích, které mají vztah k hodnotám v jiných tabulkách (nebo k hodnotám vlastní tabulky). Tyto hodnoty jsou označovány jako cizí klíče. V tabulkách lze definovat podmnoţiny řádek anebo podmnoţiny sloupců. Operace vybírající podmnoţinu řádek jako výběr řádek z tabulky je označována jako selekce tabulky. Operace vybírající podmnoţinu sloupců jako výběr sloupců z tabulky je označována jako projekce. Více tabulek lze kombinovat mezi sebou jako běţné mnoţiny pomocí operací sjednocení, rozdíl, průnik a kartézský součin mnoţin. Kombinace kartézského součinu a selekce se nazývá spojení tabulek. Základním pojmem teorie relačních datových bází je tedy relace, která je neformálně prezentována jako tabulka. V relační bázi dat jsou datové soubory chápany jako mnoţiny. Z uţivatelského hlediska jsou data v relačním datovém modelu uspořádána v dvourozměrných tabulkách. Kaţdá tabulka je označována termínem relace, která je tvořena záhlavím, kde jsou specifikována jména sloupců (nazývaných téţ atributy) a řádky (označovanými také jako 12

13 n tice podle toho, ţe sdruţují hodnoty z n-sloupců, případně také záznamy). Kaţdý sloupec obsahuje hodnoty určitého datového typu, přičemţ obor těchto hodnot, které se v daném sloupci mohou vyskytovat, se nazývá doména sloupce nebo atributu. Průsečíkem řádku a sloupce je označován jako pole. Kaţdé pole nese konkrétní hodnotu. [10] Sloupec Databáze Hodnota Řádek Tabulka Obrázek 2 Struktura dat relační databáze (převzato z [5]) Výhody a nevýhody relačního modelu: + Potenciál odborníků ve firmách, kteří tento model mnoho roků rutinně pouţívají + Potenciál softwaru a vývojových nástrojů pro vývoj a ladění aplikací a pro generování reportů + Pouţitelnost v transakčních databázích i datových skladech Absence komplexních analytických nástrojů Potenciální omezení objemu údajů, ke kterým je moţné v rozumném čase přistoupit [5] 1.1 OLTP relační databáze Oblast pouţití transakčních databázových systémů je skoro neomezená. Primárním cílem při jejich návrhu je umoţnit klientům databázového serveru vykonávání velkého mnoţství transakcí online, například bankovních, obchodních a podobně. Cílem transakčních 13

14 databázových systémů je automatizace kaţdodenních činností, které jsou předmětem našeho podnikání, například skladového hospodářství, mzdy, nákup a prodej, případně řízení a monitorování technologických procesů v reálném čase. Transakční systémy jsou ve firemní praxi velmi často pouţívané a jsou velmi oblíbené, jednak pro svoje výhody, ale i z důvodu existence mnoţství specialistů, ať uţ administrátorů, nebo vývojářů. V případě, ţe transakční databázový systém pokrývá většinu podnikových aktivit, nazýváme ho systémem ERP. Ke zdroji údajů tedy ve stejném čase přistupuje velké mnoţství uţivatelů, kteří údaje z databáze čtou, jiní do něj zapisují, případně někteří vykonávají jednodušší analýzy. Ano, i nad databázemi OLTP je moţné vybudovat analytické aplikace OLAP. Nejen z teorie, ale z praktických zkušeností totiţ vyplývá, ţe údaje v transakčních databázích by měly být uloţeny v normalizovaných tabulkách, které by měly vyhovovat podmínkám druhé nebo třetí normální formy. To znamená mnoho atomických, relačně svázaných tabulek. Analýza velkého mnoţství takto uloţených údajů by byla proto velmi neefektivní a značně pomalá. [5] Datová normalizace Datová normalizace je postupný reverzibilní proces nahrazování dané mnoţiny relací souhrnem relací, které mají jednodušší a současně i regulérnější strukturu. Tento proces zjednodušování je zaloţen na nestatickém kriteriu. Reverzibilita zaručuje, ţe původní souhrn informací lze kdykoliv obnovit, a proto při pouţití této techniky nedochází ke ztrátě informace. Cíle datové normalizace: Umoţnit reprezentaci kaţdé relace v DB Získat účinné algoritmy vyhledávání, zaloţené na jednodušší mnoţině relačních operací Odstranit v relacích neţádoucí závislosti při operacích vkládání, aktualizace a rušení Redukovat potřebu restrukturalizace při zavedení nového typu dat Zajistit neutrálnost souhrnu relací k četnosti dotazů, které mají tendenci měnit se v čase 14

15 Normalizace dat představuje takový způsob seskupení datových prvků do struktur záznamů, který zabraňuje problémům s jejich aktualizací. Technika datové normalizace patří mezi základní techniky návrhu relačního databázového schématu. Návrh pomocí tzv. normálních forem byl motivován praktickými problémy souvisejícími především s aktualizací dat v jednotlivých relačních tabulkách. Tato technika slouţí k dekompozičnímu návrhu tabulek s minimální redundancí a maximální konzistencí dat, přičemţ existuje více správných řešení provedené normalizace. Normalizace přináší výhody: Zabránění vzniku duplicitních dat Šetří kapacitu paměťového média Usnadňuje aktualizace a výběry poţadovaných dat Normalizovaná data však nejsou optimalizovaná k výkonnosti DBS z pohledu doby zpracování dotazu. [10] 1NF Jedna relace nesmí obsahovat násobná data (data ve vztahu 1:N) 2NF Všechna neklíčová data v jedné relaci musí záviset na celém primárním klíči 3NF Všechna neklíčová data v jedné relaci musí záviset jen na celém primárním klíči této relace BCNF (původně 3NF) všechna data v jedné relaci musejí záviset jen na primárním klíči a nikoliv mezi sebou 4NF sloţený primární klíč nesmí být tvořen z nezávislých dat 5NF sloţený (3 a více) primární klíč nesmí obsahovat párové cyklické závislosti Obrázek 3 Normální formy (převzato z [10]) 1. Normální forma je nezbytným předpokladem relačního datového modelu vymezeného původními definicemi E. F. Codda. Pokud má být databáze v souladu s poţadavky relačního datového modelu, tak musí být alespoň v 1NF, která je vymezena pravidlem, ţe v tabulce nesmějí být obsaţeny multizávislosti. Jinými slovy to znamená, ţe pokud v jedné tabulce existují závislosti více hodnot na jedné klíčové hodnotě, tak (vzhledem k tomu, ţe v poloţkách tabulky nesmí být více neţ po jedné hodnotě) je třeba tuto tabulku 15

16 dekomponovat. Výše uvedená multizávislost se projevuje tzv. neplochostí záznamů, které musí být normalizovány do 2 či více plochých záznamů. [10] Relace je v první normální formě, pokud kaţdý její atribut obsahuje jen atomické hodnoty. Tedy hodnoty z pohledu databáze jiţ dále nedělitelné. [7] 2. Normální forma se týká tabulek se sloţeným klíčem (alespoň ze dvou domén). Pokud tedy má tabulka sloţený klíč, tak je v 2NF jen tehdy, pokud jsou všechny hodnoty v tabulce závislé na celém klíči tabulky. Pokud tomu tak není, tak se tabulky musejí rozkládat. Zjednodušeně tedy lze říci, ţe relace se nachází v druhé normální formě, jestliţe je v první normální formě a kaţdý neklíčový atribut je plně závislý na primárním klíči, a to na celém klíči a nejen na nějaké jeho podmnoţině. Z čehoţ vyplívá, ţe druhou normální formu musíme řešit pouze v případě, ţe máme vícehodnotový primární klíč. Například v tabulce zboţí v obchodě bude atribut název zboţí, výrobce, telefon na výrobce, cena zboţí a mnoţství na skladě. Klíčem této relace je kombinace atributů Název a Výrobce. Telefon výrobce ovšem není závislý na celém klíči, ale pouze na atributu výrobce. To by vedlo k aktualizační anomálii a to k té, ţe pokud by se vymazaly veškeré výrobky od daného výrobce, ztratilo by se jeho telefonní číslo, coţ není zrovna ţádané. Řešením je zmíněný rozklad relace na více relací. [7] 3. Normální forma se týká vzájemných závislostí mezi daty v tabulce. Aby byla tabulka v 3NF, musí dílčí hodnoty v ní obsaţené záviset pouze na klíčových hodnotách a ne mezi sebou. V případě neţádoucí vzájemné závislosti mezi daty se tabulka rozkládá. Obecně řečeno, v této formě se nachází tabulka, splňuje-li předcházející dvě formy a ţádný z jejich atributů není tranzitivně závislý na klíči. Jiné vyjádření téhoţ říká, ţe relace je v 3NF, pokud je ve 2NF a všechny neklíčové atributy jsou navzájem nezávislé. Tranzitivní závislost je taková závislost, mezi minimálně dvěma atributy a klíčem, kde jeden atribut je funkčně závislý na klíči a druhý atribut je funkčně závislý na prvním. Například řekněme, ţe firma chce uchovávat informace o zaměstnancích, takţe vytvoří relaci Zaměstnanec s atributy r. č. (primární klíč), Jméno, Příjmení, Město, PSČ, Funkce a Plat. Z této tabulky je vidět kromě závislosti všech atributů na klíči ještě závislost PSČ a Města a závislost Platu na Funkci. Závislost r.č -> Město -> PSČ je tranzitivní závislost PSČ na klíči, stejně tak závislost r.č. -> Funkce ->Plat. Pochopitelnější je asi druhé vyjádření, podle 16

17 něj jsou závislosti Město -> PSČ a Funkce -> Plat přesně ty, které porušují sousloví: "všechny neklíčové atributy jsou navzájem nezávislé". Řešením problému je opět zmíněný rozpad na více relací, v tomto případě dokonce na 3. [7] Boyce Coddova normální forma je někdy nazývána jako 3.5NF a je původní definicí 3NF jak ji v 70. letech publikovali její autoři. BCNF je vymezena stejným pravidlem jako 3NF, ale je přísnější v tom, ţe toto pravidlo musí platit i mezi hodnotami uvnitř sloţeného primárního klíče. Nejsnáze Boyce Coddovu normální formu pochopíme s pomocí funkčních závislostí. Boyce Coddova normální forma v podstatě říká, ţe mezi kandidátními klíči nesmí být ţádná funkční závislost. Například relace adresář s atributy Město, Ulice a PSČ. V této relaci platí dvě netriviální funkční závislosti, {Město, Ulice} -> PSČ a PSČ -> Město. Protoţe neplatí Ulice -> PSČ ani Město -> PSČ, tvoří dvojice {Město, Ulice} klíč schématu. Klíčem je ale i {Ulice, PSČ} platí totiţ PSČ -> Město, nikoliv však PSČ -> Ulice. Tudíţ je {PSČ, Ulice} kandidátním klíčem schématu. Schéma má všechny atributy atomické a nemá ţádný neklíčový atribut a tudíţ je v 3NF, ale není v BCNF. Tento fakt vede k tomu, ţe nelze evidovat města s PSČ bez znalosti Ulice a krom toho jsou v relaci redundantní data, pokud by se evidovalo velké mnoţství ulic v jednom městě, začal by to být problém. Klasické řešení, rozpad na dvě tabulky. Vzhledem k tomu, ţe neplatí PSČ -> Ulice, musíme spojit PSČ a Ulice. Výsledkem tudíţ budou relace Města (PSČ, Město) a Ulice (PSČ a Ulice). 4. Normální forma se zabývá vztahy uvnitř sloţeného primárního klíče. Pokud je totiţ v tabulce sloţený primární klíč, tak se můţe stát, ţe některé hodnoty tohoto klíče jsou na sobě nezávislé, ale tím, ţe společně vytváří sloţený klíč, tak vzniká falešná souvislost mezi těmito hodnotami a nemohou existovat nezávisle na sobě, coţ není v souladu s modelovanou realitou. 4NF proto vyţaduje, aby klíč tvořily jen ty hodnoty, které mají skutečnou vzájemnou souvislost, a v případě nezávislých hodnot se vyţaduje rozklad. Jinými slovy, ve čtvrté normální formě je relace tehdy, je-li v BCNF a všechny vícehodnotové závislosti obsaţené v relaci jsou zároveň funkčními závislostmi. Vícehodnotovou závislost atributů lze definovat následovně: V relaci R, která je v BCNF, s atributy A, B, C nastává vícehodnotová závislost atributu B na atributu A právě tehdy, jestliţe mnoţina hodnot B přiřazená dvojici hodnot A, C závisí jen na hodnotě atributu A a je nezávislá na hodnotě atributu C. 17

18 Například, mějme relaci zachycující vztah zaměstnance, kvalifikace a úkolu: Pracovní zařazení (Zaměstnanec, Úkol, Kvalifikace). Všechny atributy dohromady tvoří klíč schématu a neexistuje mezi nimi ţádná funkční závislost, tudíţ je v BCNF a všechno vypadá ideálně, ale není tomu tak. I kdyţ se dá předpokládat, ţe atributy Kvalifikace a Úkol jsou na sobě nezávislé, tak tabulka neumoţňuje zachytit kvalifikaci zaměstnance, který nemá přiřazen ţádný úkol a nelze ani úkolovat zaměstnance bez kvalifikace. Krom ztráty informací se rozkladem vyvarujeme i redundance dat. Tudíţ je opět nutno tabulku rozdělit a to na dvojici: Kvalifikace (Zaměstnanec, Kvalifikace), Úkol (Zaměstnanec, Úkol). 5. Normální forma je poslední v praxi pouţívanou normální formou a týká se primárních klíčů, které jsou tvořené nejméně třemi hodnotami. V případě, ţe mezi těmito hodnotami v klíči existují párové cyklické závislosti, tak je třeba tyto závislosti extrahovat do samostatných tabulek (ale původní tabulka zůstává zachována). Tyto zdánlivě nadbytečné tabulky nám pak umoţňují udrţovat informaci o zmíněných závislostech i v případě, ţe hlavní tabulka neobsahuje záznam s odpovídajícími hodnotami a jeho sloţeného klíče. [10] K porušení 5NF musí opět být splněno několik podmínek a to dost specifických. Relace musí být ve 4NF a musí mít klíč sloţený ze třech nebo více atributů a mezi nimi musí být párové cyklické závislosti, ale nikoliv funkční, ani multizávislosti, to by nebyla ve 4NF. Typicky se jedná o vztah třech a více tabulek, kde platí vztahy M:N:O:M a tento vztah je vytvořen jednou relací. 5NF řeší redundanci dat a moţnou ztrátu závislostí. Například, mějme firmu, která provozuje síť obchodních zástupců strojírenských firem pro celou Evropu. Ta potřebuje vědět, který zástupce zastupuje kterou firmu a v jakých státech a ve kterých státech firmy působí. Předpokládejme, ţe o Zástupcích, Firmách i Státech máme vytvořeny informační relace a pouţité hodnoty jsou pouze cizí klíče, kterými řešíme vztahy mezi těmito relacemi. Zdánlivě jednoduché: Problém vypadá na první pohled vyřešeně, ale dle naší definice páté normální formy tomu tak není, neboť zde existují závislosti Zástupce-> Firma -> Sát -> Zástupce a to jsou párové cyklické závislosti. Mohlo by se stát, ţe s vymazáním obchodního zástupce, by se mohla ztratit informace o tom, ţe firma prodává v zemi, kde jí zastupoval pouze ten smazaný zástupce a to je pochopitelně neţádoucí. Stejně tak odebrání firmy můţe způsobit ztrátu informace o působení obchodního zástupce v některé zemi a to je taktéţ neţádoucí. Takţe musíme provést rozpad na tři relace, které nám pokryjí všechny vztahy. Zdá se, ţe problém je vyřešen, nicméně není. Jedna z definic říká, ţe relace je v páté normální formě, pokud jiţ nelze bezeztrátově rozdělit na menší relace. Důleţité je slovíčko 18

19 bezeztrátově. Protoţe pokud si spojíme výsledné tabulky pomocí přirozeného spojení, nedostaneme původní výsledek. Dostaneme úplně jiné informace. [7] 1.2 OLAP multidimenzionální databáze Na úvod problematiky budování datových skladů uvedu definici datového skladu podle Billa Inmona. Datový sklad je podnikově strukturovaný depozitář subjektově orientovaných, integrovaných, časově proměnlivých, historických dat použitých na získávání informací a podporu rozhodování. V datovém skladu jsou uložena atomická a sekundární data. Datový sklad Provozní transakční databáze Vkládání, aktualizace, mazání, čtení Obrázek 4 Pohyb dat (převzato z [6]) Čtení Jednotlivé pojmy, které tvoří definici, jsou: Subjektová orientace. Data se do datového skladu zapisují spíše podle předmětu zájmu neţ podle aplikace, ve které byla vytvořena. Datový sklad neuchovává data, která nejsou vhodná pro podporu rozhodování na manaţerské úrovni. Integrovanost a sjednocení. Data, která se týkají konkrétního předmětu, se do datového skladu ukládají jen jednou. 19

20 Zahrnuje sjednocení názvů stejných ukazatelů, sjednocení měr, sjednocení kódování (například pohlaví M, muţ, 0, Ţ, ţena, 1 atd.) Časová variabilita. Data se ukládají do datového skladu jako série snímků, ze kterých kaţdá reprezentuje určitý úsek. Neměnnost. Data v datovém skladu se obvykle nemění ani neodstraňují, jen se v pravidelných intervalech přidávají nová data. Data se získávají z uloţených dat do produkčních databází, které mohou být v různých odděleních firem anebo dokonce v rozličných lokalitách. Tato data se v pravidelných intervalech sbírají, předzpracují se a zavedou se do datového skladu. Datový sklad je v podstatě také databáze, jen je organizována podle uvedených pravidel. Rozdíly mezi transakčním prostředím relačních databází a OLAP prostředím datových skladů, charakterizuje následující tabulka. Tabulka č. 1, rozdíly v architekturách Vlastnost Transakční databáze Datový sklad Čas odezvy Zlomky sekund až sekundy Sekundy až hodiny Operace DML Primárně jen čtení Původ dat dní Série snímků za časový úsek Organizace dat Podle aplikace Podle předmětu, času Velikost Malá až velká Velká až velmi velká Zdroje dat Operační, interní Operační, interní, externí Činnosti Procesy Analýza Nástroje na budování a provoz datových skladů představují poměrně velkou počáteční investici za hardware a software, takţe datové sklady vyuţívají většinou banky, pojišťovny, mobilní operátoři, velké obchodní řetězce a podobně. Datový sklad, i kdyţ můţe obsahovat mnohé informace, je hlavně prostředkem na získávání informací pro podporu rozhodování. Bez analytických nástrojů by se i nejdokonaleji navrţený a organizovaný datový sklad stal jen shromaţdištěm dat. [6] Data v datovém skladu představují jakýsi neutrální datový prostor, který není vytvářen s myšlenkou konkrétních analýz. Proto se doporučuje vytvářet v návaznosti na datový sklad řadu tzv. specializovanějších datových trţišť (data-mart), kam se z datového skladu přesunou 20

21 data relevantní pro určitý typ analýz (pro určité oddělení firmy). Mluví se pak o třívrstvé architektuře datového skladu. Viz Obrázek 5 Třívrstvá architektura. 1. vrstva Produkční databáze 2. vrstva Datový sklad 3. vrstva Datové tržiště Obrázek 5 Třívrstvá architektura (převzato z [2]) OLAP servery můţou být děleny podle způsobu, jakým ukládají data. Můţeme jmenovat následující modely. Multidimenzionální OLAP MOLAP Získává data z datového skladu anebo transakčních databází. Po jejich získání vypočítá výsledky a uloţí je ve vlastních multidimenzionálních strukturách. Z existujících dat jsou na základě výpočtů a transformací získána nová data. Databáze je organizována tak, aby umoţnila rychlé získání příslušných dat z více dimenzí. Připravená sumární data a předem vypočítané hodnoty umoţní rychlou a jednoduchou analýzu. Tato architektura OLAP databáze se hodí pro středně velké, statické aplikace. Vzhledem k tomu, ţe výpočty souhrnů vyţadují jistý čas, není MOLAP řešení vhodné pro dynamické aplikace, kde jsou povaţovány informace z průběţně aktualizovaných dat. [2] Relační databázový OLAP ROLAP Získává data z relačně organizovaného datového skladu. Uţivateli však poskytuje pro tato data zobrazení ve formě multidimenzionálního pohledu. Nevýhodou je potřeba vysokého výpočetního výkonu. V tomto případě se dotazy OLAP převádějí do klasických dotazů SQL. 21

22 ROLAP je vhodný pro rozsáhlé aplikace hojně vyuţívající transakčních dat. Výhodou je schopnost zpracovávat rozsáhlá data za pouţití existujících databázových technologií. [6] Hybridní databázový OLAP HOLAP HOLAP je kombinací obou zatím uvedených modelů. Zdrojová data jsou uloţena v relačních databázích a výsledky výpočtů a agregací jsou uloţeny v multidimenzionálně organizované databázi. MOLAP Uživatelské rozhraní ROLAP Sumarizovaná data OLAP engine SQL egine Granulární data Obrázek 6 MOLAP a ROLAP zpracování (převzato z [2]) OLAP architektura představuje přímé analytické zpracování velkého mnoţství dat v reálném čase. Na rozdíl od architektury OLTP, kde je typickou operací čtení a změna specifické či malé skupiny záznamů, OLAP pracuje s mnoţinou dat a prováděné operace nad daty jsou zpravidla pouze čtení. Pod termínem přímého zpracování v reálném čase si můţeme představit dostatečně rychlou práci s obrovským mnoţstvím dat, typicky desítky milionů záznamů fyzicky reprezentujících několik GB paměťového prostoru, jeţ musí být systém schopen nahlíţet z poţadovaných hledisek a měr a interaktivně tyto pohledy poskytovat uţivateli. Tabulka č. 2, osy a buňky Rok Růst Produkt Tržba Kusů Tržba Kusů Tržba Kusů Celkem % 12% Knihy % 17% Poezie % -10% Cizojazyčné % 47% Časopisy % -7% Blahopřání % 22% 22

23 Tabulka č. 2 zobrazuje osu řádku, který obsahuje hodnoty Celkem, Knihy, Poezie, Cizojazyčné, Časopisy a Blahopřání a osu sloupce, který obsahuje agregované hodnoty k rokům 2000 a 2001, dále pak vypočtené hodnoty procentuálních rozdílů, označené jako Růst. Mírou pro tyto osy je pak Trţba a kusy. Kaţdá buňka potom reprezentuje hodnoty prodeje daného artiklu v daném roce, vyjádřené v jednotkách kusů a utrţené hodnoty. Toto je komplexnější pohled na data, neţ běţně bývá nabídnut architekturou OLTP. Dimenze Produkt, Rok a míry zmíněné v této tabulce jsou jenom 3 z mnoha dimenzí, v kterých mohou být data agregována a filtrována. Soubor dimenzí, hierarchií jejich úrovní a měr je nazýván multidimenzionální kostka. [4] Produkt Tržba Čas Obrázek 7 Multidimenzionální krychle (vlastní tvorba) Na rozdíl od geometrické krychle můţe mít multidimenzionální databázový model i více dimenzí neţ tři, řádově i běţně desítky. Údaje se nacházejí v průnicích jednotlivých dimenzí. Můţeme analyzovat údaje jen za určité časové období, například abychom vyhodnotili výsledky reklamní kampaně nebo sledovanost webové stránky za určité období a podobně. 23

24 Výhody a nevýhody multidimenzionálního modelu: + Rychlý komplexní přístup k velkému objemu dat + Přístup k multidimenzionálním a relačním datovým strukturám + Moţnost komplexních analýz + Silné schopnosti pro modelování a prognózy Problémy při změně dimenzí, bez přizpůsobení časové dimenzi Vyšší nároky na kapacitu úloţiště Záznamy v transakčních systémech obsahují informace například o prodeji různých produktů v různých dnech a v různých městech. Tyto databáze můţeme převést na krychle tak, ţe jednotlivé sledované atributy budou tvořit dimenze krychle, buňky krychle pak odpovídají jednotlivým záznamům v databázi. Tento způsob uloţení umoţňuje různé pohledy na data (natočení krychle, provádění řezů), ale plýtvá se při něm místem. Řada buněk je v krychli prázdných, tento stav se nazývá řídkou maticí, viz Tabulka č. 3, řídká matice. Datová krychle obsahuje jak data z transakčních databází, tak z dílčí souhrny. Právě proto tyto souhrny umoţňují rychlou odezvu a dotazy uţivatele. Práce s krychlí spočívá v různém natáčení (pivot), provádění řezů (slice), výběrů určitých částí (dice) a zobrazování různých agregovaných hodnot. Velmi často lze hodnoty atributů sdruţovat do hierarchií a těchto úrovní bývá obvykle více. Tyto hierarchie se vyuţívají při práci s krychlí při operacích roll-up a drill-down. Při roll-up se přechází na hierarchicky vyšší, obecnější úroveň, kdy mají zobrazované údaje podobu souhrnů, při drill-down se přechází na podrobnější pohled na data. V tomto kontextu se mluví o granuralitě, podrobnosti pohledu na data. [14] Tabulka č. 3, řídká matice Praha Brno Kladno Datum šrouby Matky podložky šrouby Matky podložky šrouby Matky podložky Každá krychle OLAP byla vytvořena na základě dvou druhů údajů: faktů a dimenzí. Fakta jsou numerické měrné jednotky. Tabulky faktů a dimenzí mohou vytvářet určitá schémata, například hvězdicové (star schema) nebo schéma sněhové vločky (snowflake 24

25 schema). Hvězdicové schéma obyčejně obsahuje jen jednu tabulku faktů, jiné, hlavně schémata DSS, mohou obsahovat i více tabulek faktů. Prvotní fakta se mohou kombinovat nebo vypočítat pomocí jiných faktů a vytvořit tak měrné jednotky. Měrné jednotky se mohou uloţit v tabulce faktů, případně vyvolat, kdyţ je to nevyhnutelné, na účely vykazování. Dimenze obsahují logicky nebo organizačně hierarchicky uspořádané údaje. Jsou to vlastně textové popisy hodnot v tabulce faktů. Tabulky dimenzí jsou obyčejně menší neţ tabulky faktů a data v nich se nemění tak často. Velmi často se pouţívají časové, produktové nebo geografické dimenze. Většinou obsahují data ve stromové struktuře. Například dimenze vytvořené na základě časových informací, se člení na jednotlivé úrovně podle zařazení na časové ose, například Rok s podúrovní kvartál, kvartál s podúrovní měsíc, měsíc s podúrovní týden atd. V této analogii lze pouţívat i produktové či jiné dimenze.[5] Ne kaţdé dimenzi musí nutně příslušet dimenzní tabulka. Pokud máme dimenzi s nízkou kardinalitou (několik málo záznamů), případně dimenzi, která má podobu číselníku, je zbytečné pro takovou dimenzi vytvářet separátní dimenzní tabulku. V takovém případě je moţné hodnoty z domény této dimenze pouţít jako součást primárního klíče faktové tabulky, ve které se má tato dimenze uplatnit. Dimenze tohoto typu nazýváme degenerované. Existuje jedna výjimka. Pokud má degenerovaná dimenze podobu číselníku, avšak patří do nějaké hierarchie, je výhodné i pro tuto dimenzi vytvořit dimenzní tabulku. Agregace hodnot do nadřazené úrovně je pak mnohem jednodušší. [14] Tabulky faktů a tabulky dimenzí jsou jedním z příkladů, kdy normalizace databázových tabulek nejenţe nepřináší ţádný efekt, ale v případě tabulek dimenzí by mohla v mnoha případech nepříliš velká úspora uloţené kapacity přinést sníţení výkonu, a tím také prodlouţení doby potřebné pro analýzu.[6] Schémata uspořádání tabulek faktů a dimenzí Krychli vytváříme na základě dimenzionálního modelu, který má určité topologické uspořádání, kterému říkáme schéma. Nejčastěji je pouţívané schéma hvězdicové, které se skládá z centrální tabulky faktů, obsahující cizí klíče, které se vztahují k primárním klíčům v tabulkách dimenzí. Pro kaţdou dimenzi existuje jedna tabulka, která obsahuje údaje na různé úrovni hierarchie. Úroveň 25

26 v hierarchii se rovněţ zaznamenává jako další indikátor do tabulky dimenzí. Tento identifikátor je nutný při dotazování do tabulky, která obsahuje současně data detailní i agregovaná. Hvězdicové schéma nemá normalizované dimenze ani relační propojení mezi tabulkami dimenzí, proto je velmi lehce pochopitelné a v důsledku nenormalizovaných dimenzí je vytvoření takového modelu relativně pomalé, ale na druhé straně tento model poskytuje vysoký dotazovací výkon. Schematicky je hvězda znázorněna, viz Obrázek 8 Hvězdicové schéma. Tabulka dimenzí Tabulka dimenzí Tabulka faktů Tabulka dimenzí Tabulka dimenzí Obrázek 8 Hvězdicové schéma (převzato z [5]) Data v tabulce dimenzí v této topologii mohou vypadat stejně, jako ukazuje Tabulka č. 4, denormalizovaná tabulka. Tabulka č. 4, denormalizovaná tabulka Time_ID Date Day Month Year DayOfMonth WeekOfYear MonthOfYear Quarter Wednesday January Q Thursday January Q Friday January Q Saturday January Q Sunday January Q Monday January Q1 Sestavit takovouto tabulku vyţaduje určité úsilí, ale pro kaţdý den okamţitě víme jeho pořadí v týdnu, kvartálu, v roce, jméno dne a měsíce a podobně. Z této struktury pramení vysoký výkon, protoţe všechny údaje získáme najednou a nemusíme je skládat z relačních tabulek. 26

27 Schéma sněhové vločky obsahuje některé dimenze sloţené z mnoha relačně svázaných tabulek. Tento model umoţňuje rychlejší zavedení údajů do normalizovaných tabulek dimenzí, ale má podstatně niţší dotazovací výkon, neboť obsahuje větší mnoţství spojení tabulek.[5] Tabulka dimenzí Tabulka dimenzí Tabulka dimenzí Tabulka dimenzí Tabulka faktů Tabulka dimenzí Tabulka dimenzí Tabulka dimenzí Tabulka dimenzí Obrázek 9 Schéma sněhové vločky (převzato z [5]) 1.3 Dotazovací jazyky Každý dotazovací jazyk určený pro SŘBD musí splňovat následující předpoklady: Musí obsahovat konstrukce, ze kterých lze skládat příkazy pro definici nových dat včetně jednoznačného popisu jejich struktury. Tato část dotazovacího jazyka se nazývá jazyk pro definici dat, DDL. Musí obsahovat konstrukce, ze kterých lze skládat příkazy pro kladení dotazů nad mnoţinou dat v databázi, pro vkládání nových dat, rušení a změny existujících dat. Tato část dotazovacího jazyka je nazývána jako jazyk pro manipulaci dat, DML. 27

28 Musí obsahovat konstrukce pro řízení přístupových práv jednotlivých uţivatelů systému a také např. pro řízení transakcí (někdy jsou příkazy pro řízení transakcí začleněny do zvláštní skupiny příkazů pro řízení transakcí, TCL). Tato část dotazovacího jazyka je označována jako jazyk pro řízení dat, DCL. Kromě textového přístupu uplatněného v dotazovacích jazycích se v poslední době stále více pouţívají prostředky vizuálního programování, pomocí kterých se příslušné příkazy skládají z grafických symbolů v uţivatelském rozhraní. Přitom je však potřeba si uvědomit, ţe i kdyţ textový a vizuální přístup se z pohledu uţivatele od sebe velmi odlišuje, tak z pohledu SŘBD, který je řízen příkazy dotazovacího jazyka, se oba postupy od sebe neliší. Podle způsobu zadávání dotazů rozlišujeme dotazovací prostředky na jazyky procedurální a neprocedurální. Procedurální jazyky vyţadují zadání algoritmu pro získání poţadované odpovědi, neprocedurální jazyky jsou jednodušší a vyţadují pouze specifikování podmínky, kterou má poţadovaná odpověď splňovat. Nejznámějším neprocedurálním jazykem je SQL. [10] SQL Databázový jazyk SQL vznikl na základě projektu společnosti IBM pod názvem SEQUEL. Cílem projektu bylo vytvořit jazyk blízký angličtině pro práci s daty v relačních databázích. Postupem času se ujaly vylepšení a upravené standardy tohoto jazyka s označeními SQL 86 a SQL 92, pro které se zaţilo označení SQL 2. V současné době je nejrozšířenějším standardem SQL 3. [6] Jak jiţ bylo zmíněno, jazyk SQL prošel normalizací ANSI, ale v praxi tuto normu dodrţuje pouze IBM a Oracle. Ve skutečnosti tedy existuje celá třída podobných jazyků typu SQL, které se liší od produktu k produktu. Největší odchylky od normy má implementace SQL v produktech firmy Microsoft, především ve specifikaci ODBC rozhraní. V následujících odstavcích tato práce obecně popisuje základní příkazy jazyka SQL, které jsou implementovány napřič produkty ze světa relačních databází a jsou nedílnou součástí administrátorských a vývojářských prácí s nimi spojenými, především pak ty, které budu vyuţívat v praktické části této práce, viz kapitola 3. 28

29 Příkazy DDL Skupina těchto příkazů obsahuje převáţně prostředky pro vytváření struktur v databázi. Jsou zde definovány tři typy příkazů. Příkazy typu CREATE, které slouţí k vytvoření popsaného objektu v databázi, příkazy typu ALTER, které slouţí k modifikaci jiţ existujícího objektu podle předaného popisu a příkazy typu DROP, které slouţí k odstranění objektu z databáze. V této části přiblíţím ty nejdůleţitější příkazy DDL jazyka SQL. Vytvoření/změna tabulky CREATE/ALTER TABLE Pomocí těchto příkazů se vytváří tabulka v poţadované struktuře. Definují se integritní omezení, výchozí chování tabulky atd. Syntaxe příkazu můţe vypadat takto: CREATE TABLE jméno tabulky ( <definice sloupce>, ) Případně ALTER TABLE jméno tabulky ( [ADD ALTER DROP] <definice sloupce>, [ENABLE DISABLE CONSTRAINT jmeno omezení] ) Konstrukce <definice sloupce> pak obecně obsahuje tyto parametry: Jméno sloupce <datový typ> [COLLATE jméno collace] [NULL NOT NULL] [CONSTRAINT jméno omezení {PRIMARY KEY UNIQUE }{, CHECK logická podminka}] [DEFAULT výraz pro defaultní hodnotu] [FOREIGN KEY (referencované pole) REFERENCES jméno tabulky (jméno pole)] [IDENTITY {inkrement}] 29

30 Syntaxe tohoto příkazu je velmi obsáhlá a celý popis je nad rámec této práce. Konkrétní příklad pouţití příkazu CREATE TABLE, viz kapitola 3 této diplomové práce. Odstranění tabulky z databáze DROP TABLE Pro odstranění tabulky z databáze se pouţívá příkaz DROP TABLE, za kterým následuje parametr určující tabulku, která má být odstraněna. Příkaz DROP TABLE nesmí porušit integritní omezení vystavěná nad databází. Vytvoření/změna pohledu CREATE/ALTER VIEW Příkaz CREATE/ALTER VIEW vytvoří virtuální tabulku, jejíţ obsah a struktura je definována databázovým dotazem. Syntaxe příkazu můţe vypadat následovně: CREATE VIEW jméno pohledu AS <příkaz SELECT jazyka SQL> Odstranění pohledu z databáze DROP VIEW Pro odstranění pohledu z databáze se pouţívá příkaz DROP VIEW, za kterým následuje parametr určující pohled, který má být odstraněn. Vytvoření/změna uložené procedury CREATE/ALTER PROCEDURE Hlavním omezením jazyka SQL je fakt, ţe se jedná o neprocedurální jazyk. V praxi to znamená, ţe příkazy jazyka se provádějí sekvenčně bez moţnosti pouţití klasických programátorských konstrukcí, jako jsou například cykly, podmínky, procedury, funkce či prvky objektového programování. Vzhledem k tomu, ţe tyto omezení jsou nevýhodná, nabízí takřka kaţdá moderní databázová platforma procedurální rozšíření jazyka SQL. Např. Oracle má název PL/SQL, Microsoft SQL server pouţívá Transact-SQL. Obecně lze říci, ţe rozšířením jazyka o jeho procedurální část, bylo umoţněno uloţit do databáze krom samotných dat a jejich popisu, také aplikační logiku pro zpracování těchto dat. Toto řešení přispívá nejen k přehlednosti a spolehlivosti, ale také k minimalizaci přenášených dat mezi datovou a aplikační vrstvou. Velkou výhodou uloţených procedur je fakt, ţe jsou uloţené v databázi v předkompilované podobě, takţe databázový server neztrácí čas s analýzou a interpretací procedur, ale provádí jiţ předkompilovaný kód. 30

31 Obecně lze deklaraci uloţené procedury zapsat takto: CREATE PROCEDURE název procedury ( Seznam parametrů <datový typ parametru> ) AS BEGIN Tělo procedury END Odstranění uložené procedury z databáze DROP PROCEDURE Pro zrušení uloţené procedury pouţíváme následující příkaz doplněný o parametr názvu uloţené procedury. DROP PROCEDURE název procedury Vytvoření/změna databázového triggeru CREATE/ALTER TRIGGER Pod pojmem trigger rozumíme pojmenovanou mnoţinu příkazů, která se automaticky provede v případě předem definované operace s daty, například vloţení nového záznamu, při vymazání či změně apod. Mohou se pouţívat např. na kontrolu zadávaných dat, pro zajištění referenční integrity atd. Trigger je chápan jako speciální případ uloţené procedury. Nikdy se neprovádějí přímo, ale jsou svázány s konkrétní událostí. Cílem triggerů nikdy není vrácení výsledků nějakého dotazu. V dnešních SŘBD je moţno definovat více druhů triggerů, jako například triggery pro DDL příkazy, triggery pro příkazy DML či triggery pro autentifikaci uţivatele do databáze. Obecně můţe vytvoření DML triggeru nad tabulkou mít takovouto syntaxi: CREATE TRIGGER název triggeru ON název tabulky { BEFORE AFTER} [INSERT UPDATE DELETE] AS BEGIN Tělo procedury END 31

32 Odstranění databázového triggeru z databáze DROP TRIGGER Odstranění triggeru se provede příkazem: DROP TRIGGER jméno triggeru Do skupiny DDL příkazů patří ještě další příkazy a konstrukce pro obsluhu indexů, funkcí, databázových omezení či samotných databází a jejich vlastností. Popis těchto příkazů a jejich syntaxe je nad rámec této práce Příkazy DML S příkazy této podmnoţiny jazyka SQL se vývojáři databázových aplikací střetávají pravděpodobně nejčastěji. Příkazy jazyka DML umoţňují vkládání, aktualizaci, mazání a výběr dat. Výběr dat z databáze příkaz SELECT Příkaz SELECT umoţňuje cílený výběr dat z databáze. Úplná syntaxe příkazu SELECT je poměrně sloţitá. Pro účely obecného přiblíţení uvedu jeho zjednodušenou syntaxi. SELECT [*] [seznam položek výstupní sestavy] FROM název tabulky WHERE podmínka výběru GROUP BY položky HAVING podmínka agregace ORDER BY seznam položek [ASC] [DESC] [6] Operace projekce slouţí pro potlačení sloupců, které nejsou předmětem zájmu. Výsledkem je relace o p-sloupcích, která vznikla z původní relace s n-sloupci, přičemţ platí, ţe p<n. Schematicky lze tuto operaci znázornit viz Obrázek 10 Operace projekce. [10] A B C D F G A B D Obrázek 10 Operace projekce (převzato z [10]) 32

33 Operaci projekce realizujeme pomocí příkazu SELECT a to díky výčtu poţadovaných sloupců oddělených čárkou, případně pouţití zástupného znaku *, který vybírá všechny dostupné sloupce. Moţnosti projekce výběrem sloupců nekončí. V této části příkazu SELECT je moţné pouţívat aliasů, aritmetických operátorů, zřetězení apod. Alias je v tomto kontextu pojmenování vybíraného sloupce, případně sloupce vzniklého jménem pomocí klíčového slova AS. V klauzuli SELECT je moţno pouţít i aritmetických operátorů pro práci se sloupci s numerickými či datumovými datovými typy se stejnou prioritou operátorů jako v klasické aritmetice. Priorita těchto aritmetických operátorů je ovlivněna pouţitím závorek. Zřetězením textových datových typů je moţné pouţít v případě, kdy potřebujeme sloučit několik textových polí či hodnot do jednoho textu. Klauzule SELECT můţe obsahovat i klíčová slova DISTINCT pro vyloučení duplicitních záznamů, případně klíčové slovo TOP s argumentem počtu prvních zobrazených vět v celkové výsledkové sadě. Při operaci selekce vzniká nová relace, do které jsou vybírány pouze ty řádky, které splňují uţivatelem specifikovanou podmínku. Schematicky lze tuto operaci znázornit viz Obrázek 11 Operace selekce. [10] A B C D F G 1 2 A B C D F G Obrázek 11 Operace selekce (převzato z [10]) 33

34 Operaci selekce realizujeme v příkazu SELECT pomocí klauzule WHERE. Do této klauzule zapisujeme logické podmínky, které lze kombinovat pomocí logických operátorů AND, OR a NOT. Pro samotné logické podmínky lze vyuţívat především jednoduché porovnávací operátory jako rovnost, větší menší, větší nebo rovný, nerovný atd. či komplexnější operátory jako je BETWEEN AND pro porovnávání intervalů, IN pro porovnávání mnoţiny hodnot, LIKE pro porovnávání řetězců na základě jejich částí, IS NULL pro porovnávání hodnot, které nebyly zadány a další. Pomocí příkazu SELECT a jeho klausule ORDER BY, můţeme výslednou sadu dat seřadit dle libovolných sloupců vyčtených v klauzuli SELECT, a to buď vzestupně nebo sestupně za pomoci klíčového slova DESC pro sestupné řazení a ASC pro vzestupné řazení. Spojení je jednou z hlavních operací relační algebry. Spojením dvou relací se vytváří třetí relace, přičemţ výsledná tabulka vţdy obsahuje všechny kombinace, které vyhovují zadané podmínce. Operace spojení lze schematicky znázornit viz Obrázek 12 Operace spojení. [10] A B A B D E 1 Jedna 1 Jedna A aaa 2 dvě 1 Jedna B bbb 3 Tři 2 dvě A aaa D E 2 dvě B bbb A aaa 3 Tři A aaa B bbb 3 Tři B bbb Obrázek 12 Operace spojení (převzato z [10]) Principy relační databáze a pravidla pro normalizaci vyţadují, aby byla data umístěna v tabulkách, jeţ mají atomickou strukturu a aby byla uloţena ve více relačně svázaných tabulkách. Princip spojení je v příkazu SELECT řešen pomocí klauzule FROM. V klauzuli je moţné definovat, které tabulky, pohledy či subselecty se budou účastnit výstupu databázového 34

35 dotazu. Samotné spojení můţe být deklarováno jen za pomoci klauzule FROM a WHERE, nebo, přehledněji, můţeme v klauzuli FROM pouţít konstrukci JOIN. V konstrukci JOIN je moţno definovat druh spojení tabulek, jejich alias ve výsledkové sadě a podmínku spojení. Typickým příkladem pouţití konstrukce JOIN můţe vypadat následovně: SELECT tab1.hodnota, tab2.hodnota, tab3.hodnota FROM tabulka1 AS tab1 INNER JOIN tabulka2 AS tab2 ON tab1.id = tab2.id LEFT OUTER JOIN tabulka3 AS tab3 ON tab2.id_z = tab3.id_z Někdy je výhodné zpracovávat data, která jsou na základě určitého kritéria seskupená do skupin. V syntaxi příkazu SELECT jsou podpoře této funkce vyhrazeny klauzule GROUP BY a HAVING. Za klíčovým slovem GROUP BY SŘBD očekává výčet sloupců, podle kterých bude data ve výsledkové sadě seskupovat. Nad těmito skupinami potom lze aplikovat agregační funkce, jako jsou maximální a minimální hodnoty, počet záznamů ve skupině, průměrná hodnota či suma numerických hodnot. Klauzule HAVING slouţí k vyloučení skupinových výsledků z dalšího zpracování. V předcházejícím odstavci jsem uvedl, ţe klauzule WHERE slouţí pro omezení záznamů, které se potom seskupují pomocí klauzule GROUP BY. Rozdíl mezi těmito dvěma klauzulemi je mnoţina dat, nad kterou se její podmínka uplatňuje. Klauzule HAVING slouţí k selekci záznamů z výstupní mnoţiny výsledkové sady dotazu. Konkrétní příklad pouţití příkazu SELECT se všemi zde popsanými i nepopsanými moţnostmi viz kapitola 3 této diplomové práce. Vkládání dat do tabulky příkaz INSERT Pro přidávání dat do databáze se pouţívá příkaz INSERT. Základní syntaxi lze zapsat následujícím příkladem. INSERT INTO název tabulky [ (sloupec1 [, sloupec2..])] nebo VALUES [ (hodnota1 [, hodnota..])] 35

36 INSERT INTO název tabulky [ (sloupec1 [, sloupec2..])] SELECT sloupec1 [, sloupec2..])] FROM název tabulky zdroje dat Zápis jednotlivých hodnot v klauzuli VALUES se provádí podle konotace konkrétního SŘBD. Obecně lze říci, ţe číselné hodnoty zadáváme bez apostrofů, znakové řetězce a hodnoty pro datum a čas zadáváme v apostrofech. Výčet jednotlivých sloupců lze vynechat, ale v takovém případě musíme zadat hodnoty pro všechny sloupce a v takovém pořadí, jak jsou definovány v tabulce. Při provádění příkazu INSERT musíme samozřejmě respektovat integritní omezení, která byla určena při vytváření tabulky. Konkrétní příklad pouţití příkazu INSERT viz kapitola 3 této diplomové práce. Změna dat v tabulce příkaz UPDATE Jazyk SQL obsahuje pro aktualizaci záznamů příkaz UPDATE. Nejčastěji se s tímto příkazem setkáváme v tomto následujícím tvaru. UPDATE tabulka SET sloupec = hodnota [, sloupec1 = hodnota1..] FROM tabulka WHERE podmínka Kde v klauzuli UPDATE specifikujeme tabulku obsahující záznamy, které chceme příkazem UPDATE aktualizovat. Pokud v příkazu UPDATE pouţijeme klauzuli FROM, je moţné aktualizovat data i na základě dat z jiných tabulek. I zde je moţné vyuţívání aliasů pro vyčtené tabulky. Klauzule WHERE má stejné pouţití a syntaxi jako u příkazu SELECT a určuje, které záznamy mají být aktualizovány. Provedenou změnu nad specifikovanými záznamy definuje klauzule SET. I pro příkaz UPDATE platí definovaná integritní omezení. Mazání dat z tabulky příkaz DELETE Pro odstranění záznamů z tabulky se v jazyku SQL pouţívá příkaz DELETE.Syntaxe příkazu DELETE je následující. 36

37 DELETE FROM tabulka FROM tabulka WHERE podmínka Dvě klauzule FROM v tomto případě nejsou překlepem. První klauzule FROM je nepovinná a smysl jejího uţití spočívá v případě, kdy je v povinné klauzuli FROM pouţita konstrukce JOIN. Pak první nepovinná klauzule FROM určuje tabulku, z které se budou záznamy odstraňovat. Klauzule WHERE má stejné pouţití a syntaxi jako u příkazu SELECT či UPDATE a určuje, které záznamy mají být odstraněny z tabulky. I pro příkaz DELETE platí definovaná integritní omezení Příkazy TCC Databázová transakce je skupina příkazů jazyka SQL, které převedou databázi za pomocí příkazů DML z jednoho konzistentního stavu do druhého. Databázová transakce má tyto vlastnosti souhrnně nazývané ACID: A Atomicity C Consistency I Isolation D Durability Atomicita. Databázová transakce je jako operace dále nedělitelná (atomární) ve vztahu k ostatním transakcím. Provede se buď jako celek, nebo se neprovede vůbec (a daný databázový systém to dá uţivateli na vědomí, např. chybovou hláškou). Tedy transakce A nastala buď před transakcí B, nebo po ní, ale nemohla probíhat současně. Přesněji, ve skutečnosti současně probíhala, ale synchronizace provedená databázovým serverem zajišťuje, ţe databáze bude vypadat, jako kdyby všechny transakce proběhly popořadě. Pokud to nebude moţné, provede zrušení některé transakce a zkusí ji provést znovu na novém stavu databáze. Atomicita transakce zároveň znamená, ţe pokud transakce selţe, selţe jako celek, tedy všechny zápisy, které provedla, budou při zrušení transakce vráceny. 37

38 Konzistence. Je vlastnost databázové transakce, díky které při a po provedení transakce není porušeno ţádné integritní omezení. Izolovanost. Operace uvnitř transakce jsou skryty před vnějšími operacemi. Vrácením transakce není zasaţena jiná transakce, jinak i tato musí být vrácena. V důsledku tohoto chování můţe dojít k tzv. řetězovému vrácení (cascading rollback). Trvalost. Změny, které se provedou jako výsledek úspěšných transakcí, jsou skutečně uloţeny v databázi a jiţ nemohou být ztraceny. Transakce se mohou lišit podle způsobu zpracování na pesimistické a optimistické. U pesimistického zpracování se v jeho průběhu změny zaznamenávají do dočasných objektů (například a nejčastěji: do řádků tabulek s příznakem dočasných dat, platných jen po dobu transakce) a teprve po přesunu/změně dat se odznačí příznak dočasnosti a data se stanou platnými. (Tento způsob se dá přibliţně připodobnit přepisu souboru, při kterém se nejdříve nová verze souboru nakopíruje pod dočasným jménem a teprve poté se tento soubor přejmenuje za starý a tím ho nahradí.) U optimistického zpracování se (optimisticky) předpokládá, ţe při transakci nenastane chyba a nebude třeba ji vrátit zpět (přestoţe tato moţnost je zachována). Měněné záznamy v tabulkách jsou při optimistickém zpracování transakce zapisovány natvrdo, současně s tím se však vytváří tzv. rollback log coby seznam SQL příkazů, které dokáţí prováděné změny vrátit zpět. V případě, ţe při transakci dojde k nějaké nezotavitelné chybě, tento log se provede a transakce (aby dodrţela pravidlo atomicity) skončí ve výchozím stavu s chybou. Naopak, na konci transakce, při které k ţádné takové chybě nedošlo, se rollback log maţe. Ţurnály jsou v tomto kontextu záznamy, které uchovávají informace o průběhu transakcí a slouţí k zotavení po vzniklé chybě. Ţurnály musí být v kaţdém uzlu a obsahují záznamy o historii kaţdé transakce. Transakce může nabývat těchto stavů: Aktivní - od počátku provádění transakce Částečně potvrzený - stav po provedení poslední operace transakce Chybný - nelze pokračovat v normálním průběhu transakce Zrušený - nastane po skončení operace 38

39 [12] Potvrzený - po úspěšném vykonání K řízení explicitních, uţivatelem definovaných, databázových transakcí je v jazyce SQL určena skupina TCC příkazů. Zde jejich výčet. Začátek transakce Pro začátek transakce je v jazyce SQL určen příkaz BEGIN TRANSACTION, kterým SŘBD sdělíme, ţe v tomto místě jsou data konzistentní a do zrušení či potvrzení transakce se nemají měnit. Za tímto příkazem následuje volitelný parametr jména transakce. Průběh transakce V průběhu transakce se provádí poţadované změny v tabulkách databáze. V některých případech, například při zpracování záznamů v cyklu je výhodné, vrátit se na určité místo po začátku transakce aniţ by bylo třeba celou transakci rušit. K vytvoření takového místa v transakci je určena funkce tzv. savepointů. Savepoint se v průběhu transakce deklaruje pomocí příkazu SAVE TRANSACTION následovaného pojmenováním takto označeného místa, kam je moţné se v průběhu transakce vrátit. Potvrzení probíhající transakce K ukončení transakce a jejímu persistentnímu zapsání na paměťové medium slouţí příkaz COMMIT TRANSACTION, který má volitelný parametr jména potvrzované transakce. Tento příkaz potvrzuje explicitní transakce volané uţivatelem i implicitní transakce spouštěné automaticky databázovým serverem. Zrušení probíhající transakce Pro zrušení explicitních i implicitních transakcí slouţí příkaz ROLLBACK TRANSACTION doplněný o volitelný parametr názvu savepointu či explicitní transakce. Není-li definován savepoint, tak se provede návrat do stavu před započetím vykonávání transakce. Většina databázových serveru umoţňuje řídit a nastavovat izolovanost transakcí. Izolovanost transakcí se úzce dotýká problematiky databázových zámků záznamu a je nad rámec této práce. 39

40 Příkazy DCL Přístup k datům v relačních databázích je řízen na základě identifikace uţivatele. Uţivatel, který tabulku vytvořil, má automaticky veškerá oprávnění pro práci s ní. Tato práva můţe rozšířit i na ostatní uţivatele pomocí příkazu GRANT. Syntaxe příkazu GRANT můţe být obecně zapsána takto: GRANT {ALL <seznam oprávění>} ON <jméno objektu> TO {PUBLIC <seznam uživatelů>} V seznamu oprávnění příkazu GRANT mohou být specifikována následující oprávnění: SELECT, který povoluje čtení dat z tabulky INSERT, který povoluje vkládání dat do tabulky UPDATE, který povoluje modifikaci dat v tabulce DELETE, který povoluje mazání záznamů z tabulky EXECUTE, který povoluje spuštění uloţené procedury nebo skalární funkce Případně klíčové slovo ALL, které opravňuje ke všem úkonům vztahujících se k typu daného objektu. K odnětí přidělených se pouţívá příkaz REVOKE. Příkaz REVOKE má následující syntaxi. REVOKE {ALL <seznam oprávění>} ON <jméno objektu> FROM {PUBLIC <seznam uživatelů>} V seznamu oprávnění mohou být uvedena stejná oprávnění jako pro příkaz GRANT. K vytvoření uţivatelských rolí je moţno pouţít příkazy CREATE ROLE. Uţivatelská role se zakládá pro skupinu uţivatelů se shodnými pravomocemi. Příkaz CRETAE ROLE má následující syntaxi: CREATE ROLE jméno role [AUTHORIZATION jméno předka oprávnění] Vytvořené role a uţivatelé se odstraní z aktivní evidence příkazem DROP ROLE, respektive DROP USER s parametrem specifikujícím jméno rušeného záznamu. [10] 40

41 Možnosti jazyka SQL pro agregaci a analýzu dat Klauzule CUBE Pomocí rozšiřující klauzule CUBE získáme multidimenzionální přehled všech moţných kombinací podle vybraných dimenzí. Syntaxe pouţití je velmi jednoduchá: SELECT GROUP BY CUBE (seznam seskupených sloupců) Výsledkem takto formulovaného dotazu je sestava sumárních dat, kde jsou zahrnuty všechny kombinace dle seskupených sloupců. Všechny, tedy i ty, které nemají ţádnou hodnotu v průsečíku os dimenzí a hodnot. V případě pouţití této klauzule dostaneme výpis všech kombinací a sumárních hodnot. Pokud je poţadováno zobrazit pouze sumární informace bez všech vypsaných kombinací, je moţné je potlačit za pomoci klausule GROUPING a HAVING. Syntaxe pouţití klausule GROUPING je následující: SELECT Jméno sloupce, Jméno sloupce2, GROUPING (jméno sloupce), GROUPING (jméno sloupce2), FROM tabulka faktu, tabulka dimenzí WHERE GROUP BY CUBE (jméno sloupce, jméno sloupce2, ) Tímto zápisem získáme stejný výpis jako u předcházejícího dotazu s indikací, zda hodnota výpisu je agregována či nikoliv. Poté jiţ můţeme jednoduše pouţít klauzuli HAVING pro potlačení takových vět MDX Obdobou jazyka SQL pro relační databáze je MDX, jako dotazovací jazyky pro dotazování na data datových krychlí. MDX byl představen společností Microsoft společně s produktem Microsoft SQL Server OLAP Services, jako komponenta OLE DB pro OLAP API.[13] 41

42 V následující kapitole přiblíţím základní syntaxi jazyka MDX, následně potom jeho praktické pouţití demonstruji na příkladech v kapitole 3. OLAP krychle jsou skladišti multidimenzionálních dat. Pro pochopení dotazů jazyka MDX je třeba pochopit, jak jsou data v kostce uloţena. Data jsou v kostce uloţena ve formě dimenzí a faktů. Jednotlivé dimenze jsou většinou hierarchické s různou úrovní zanoření a s tímto zanořením souvisejícími agregovanými hodnotami, viz Obrázek 13 Hierarchie časové dimenze. Vše Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q Obrázek 13 Hierarchie časové dimenze (vlastní tvorba) Základní zápis pro dotaz na data je velmi podobný jazyku SQL. Funkce a pouţití jsou však významně odlišné. Syntaxe příkazu SELECT jazyka MDX vypadá následovně: SELECT <seznam definující hlavičky sloupců> ON COLUMNS, <seznam definující hlavičky řádků> ON ROWS FROM jméno datové krychle WHERE <specifikace výběrové podmínky> 42

43 V případě klausule SELECT seznam prvků znamená definici poţadované úrovně dimenze nebo dimenzí. Pokud pouţiji časovou dimenzi, kterou vyobrazuje Obrázek 13 Hierarchie časové dimenze, zápis můţe vypadat takto: [ČAS].[ALL].[2011].[Q1].[2] Čímţ říkám, ţe na poţadované ose chci hodnoty související s druhým měsícem roku Na jedné ose je moţno specifikovat více dimenzí a jejich úrovní. Zápisem těchto parametrů realizuje jazyk MDX základní operace na datové krychli, jako je výsek z kostky, zavrtávání, vyvrtávání či otáčení kostky. Zápis by pak vypadal například takto: { [ČAS].[2011].[Q3], [Zboží].[Potraviny].[Pečivo], [Místo].[Střední čechy].[praha] } Pojmenování dimenzí nebo jejich hierarchií je ţádoucí uzavírat do hranatých závorek, aby kompilátor dotazu rozpoznal, ţe se jedná o pojmenování objektů, nikoliv o klíčová slova jazyka MDX v případě, ţe by taková obsahoval, případně pojmenování můţe obsahovat znaky, jakou jsou mezery, čísla atd., které by mohla působit problémy. V případě syntaxe MDX vstupují do hry dva další pojmy, které mají dopad na pouţití závorek. N-tice Kulaté závorky Kulaté závorky v MDX jsou pouţity pro označení tzv. n tice. N tice je kolekce členů, kaţdého z jiné dimenze, v jejichţ průsečíku se nachází uţivatelem poţadovaná data. N tice mohou, a běţně tomu tak je, odkazovat na několik členů různých dimenzí zároveň. Příkladem zápisu n-tice můţe být: ( [Product].[Drink].[Beverages],[Customers].[USA],[Time],[1998] ) 43

44 Sets složené závorky Sloţené závorky jsou v MDX pouţity pro označení setů. Set je v MDX chápán, jako kolekce N-tice se stejnou dimensionalitou. Například: { [Product].[Product Family].[Food].[Baked Goods], [Product].[Product Family].[Food].[Baking Goods], [Product].[Product Family].[Food].[Breakfast Foods], [Product].[Product Family].[Food].[Canned Foods], } Set můţe obsahovat jeden nebo více n-tic. Klíčovým slovem Members specifikujeme, ţe poţadujeme výstup za všechny členy definované úrovně dimenze. Např. ( [Product].[Drink].[Beverages].Members ) Stejným způsobem můţeme například pouţít i klíčová slova, Parent, Children, FirstChild, LastChild aj. V jazyce MDX jsou implementována i klíčová slova, která zajišťují relativní odkazování na buňky v osách kostky. Kaţdá buňka má v kostce určité souřadnice. V MDX existuje konstrukce, kterou můţeme definovat například následující dotaz: Pracuj s daty z roku 2010, předešlého a následujícího roku aniţ bychom rok 2009 a 2011 museli přímo odkazovat v definici setu. K tomuto účelu slouţí klíčové slovo PrevMemeber a NextMember. Pro odkaz na buňky, které jsou v jiných osách neţ sousedních, můţeme pouţít funkci Lag(n) pro definici osy o n členů zpět či vpřed. Jazyk MDX nabízí rozsáhlé moţnosti agregačních funkcí jako je Sum(), Count(), Avg(), Max(), Min(), aj. [11] Představme si, ţe v tabulce faktů máme více měr, jako například: prodáno kusů, cena atd. 44

45 V případě klausule WHERE říkáme jazykem MDX, ukaţ mi ty data, kde je účastna míra cena. Prázdné buňky, které jsou následkem řídkých matic, můţeme eliminovat klíčovým slovem NON EMPTY s následující syntaxí: SELECT NON EMPTY {[Produkt].[Třída].Members} ON COLUMNS, { [2011].[Q1], [2011].[Q2] } ON ROWS FROM [Prodeje] Jazyk MDX nabízí velmi široké moţnosti dotazování a zpracování daty. Popis celé jeho syntaxe je nad rámec této práce a proto jsem se omezil pouze na základní stavební kameny příkazu SELECT, který budu dále potřebovat v kapitole ETL Procesy ETL je zkratkou z třech anglických slov, které popisují proces pouţívaný ve světě databází, speciálně pak v oboru datových skladů. ETL je poměrně časově náročný a u některých implementací můţe zabrat aţ polovinu celkového času a úsilí. Hlavním účelem procesu ETL je centralizace údajů, tzn. jejich shromáţdění z mnoha z pravidla nehomogenních a různorodých zdrojů a databází OLTP a naplnění do skladu určenými údaji v poţadovaném čase. Extrakce Údaje, které chceme přenést do datového skladu jsou jednak umístěny v různých nehomogenních operačních prostředích, platformách či informačních systémech. Tyto data jsou rozdílně organizována nebo uloţena v rozličných formátech. Kromě interních údajů je někdy potřebné pracovat i s údaji externími, které můţou být dostupné na internetu případně z komerčních databází. Práce s externími údaji tak přináší nutnost zamyslet se ještě nad dostupností a monitorováním. Proces extrakce je tak velmi specifický konkrétní implementaci. 45

46 Obecně lze říci, ţe cílem extrakce dat je konvertovat data do jednotného formátu, který je zpracovatelný následujícím subprocesem, transformací. Transformace Transformace je proces, který aplikuje celou řadu pravidel a funkcí nad daty poskytnutými extrakcí, aby transformoval data do podoby vhodné pro nahrání do datového skladu. Tyto pravidla vedou ke zvýšení kvality údajů a k odstranění anomálií. Některá data nepotřebují ţádnou manipulaci a jsou připravena ihned. V jiných případech, mnohem častějších, musí být data transformována, aby splňovala technické nebo logické poţadavky. Nejčastější druhy transformací: Ošetření null hodnot Ošetření sirotků Překlady interních kódů různých systému (např. pohlaví, stav a jiná označení atd.) Tvorba nových vypočítávaných hodnot Agregace Řazení Tvorba unikátních klíčů Transpozice nebo kontingence Řetězení Věcná validace dat, například zápis titulů u jmen formátu PSČ, datumových polí atd. Doménová validace dat, například délka řetězců, intervaly dat, maximální a minimální hodnoty numerických polí atd. Změnu kódování Přenos Završením procesu ETL je přenesení extrahovaných a transformovaných dat do datového skladu. Tento proces by měl být plánovaný a automatizovaný, protoţe ve většině případů jde o obrovské mnoţství údajů. Po prvotním zavedení se však objem přenášených dat zmenší a přenáší se jen časové snímky. Přenos dat je spojen například s indexování záznamů, či přepočítáváním multidimenzionálních objektů a tak by měl být pečlivě naplánován s ohledem na vytíţení výpočetního výkonu.[5] 46

47 2 Seznámení s OLAP produkty na trhu V současné době je na trhu dostupných několik produktů, které zastřešují problematiku OLAP serverů. Portfolio těchto produktů se rozkládá od open-source řešení koncipovaných jako nástavba nad jiţ hotovým SŘBD, přes různé architektury a platformy, aţ po velmi nákladná a komplexní řešení předních softwarových developerů, jako jsou firmy Oracle, IBM či Microsoft. V následujících tabulkách uvedu stručnou charakteristiku některých dostupných OLAP serverů. Tabulka č. 5, OLAP řešení na trhu OLAP Server Výrobce Poslední verze Licence Náklady Essbase Oracle Chráněno iccube MISConsulting SA 1.0 Chráněno Zdarma Microsoft Analysis Services Microsoft 2008 R2 Chráněno MicroStrategy Inteligence MicroStrategy 9 Chráněno Server Mondrian OLAP server Pentaho 3.2 EPL Zdarma Oracle Database OLAP Option Oracle 11g R2 Chráněno Palo Jedox 3.2 SR3 GPL/EULA SAS OLAP Server SAS Institute 9.2 Chráněno SAP NetWeaver BW SAP 7.20 Chráněno TM1 IBM 9.5 Chráněno V následující tabulce jsou tyto produkty charakterizovány z hlediska moţného způsobu uloţení dat. Tabulka č. 6, podporované modely uložení dat OLAP Server MOLAP ROLAP HOLAP Essbase Ano Ano Ano iccube Ano Microsoft Analysis Services Ano Ano Ano MicroStrategy Inteligence Server Ano Ano Ano Mondrian OLAP server Ano Oracle Database OLAP Option Ano Ano Ano Palo Ano SAS OLAP Server Ano Ano Ano SAP NetWeaver BW Ano TM1 Ano Ano 47

48 Následující tabulka charakterizuje dostupné řešení z pohledu podporovaných platforem. Tabulka č. 7, podporované platformy OLAP Server Windows Linux UNIX OS Essbase Ano Ano Ano iccube Ano Ano Ano Ano Microsoft Analysis Services Ano MicroStrategy Inteligence Server Ano Ano Ano Mondrian OLAP server Ano Ano Ano Ano Oracle Database OLAP Option Ano Ano Ano Ano Palo Ano Ano Ano SAS OLAP Server Ano Ano Ano Ano SAP NetWeaver BW Ano Ano Ano Ano TM1 Ano Ano Ano Následující tabulka charakterizuje dostupná řešení z pohledu podporovaných dotazovacích jazyků Tabulka č. 8, podporované dotazovací jazyky [1] OLAP Server XML for Analysis OLE DB for OLAP MDX SQL Essbase Ano Ano Ano iccube Ano Ano Ano Microsoft Analysis Services Ano Ano Ano MicroStrategy Inteligence Server Ano Ano Ano Mondrian OLAP server Ano Ano Ano Oracle Database OLAP Option Ano Ano Ano Palo Ano Ano Ano SAS OLAP Server Ano Ano Ano SAP NetWeaver BW Ano Ano Ano TM1 Ano Ano Ano Tato diplomová práce se bude nadále zabývat pouze popisem a implementací dvou popsaných produktů. A to OLAP serverem Mondrian společnosti Pentaho a produktem společnosti Oracle. 2.1 Oracle OLAP Oracle OLAP je volitelnou součástí databáze Oracle 11g Enterprise Edition, která nabízí zakomponování OLAP nástrojů, dříve dostupných pouze díky samotným OLAP řešením přímo do relační databáze Oracle. Díky této integraci mohou být veškerá data (i metadata) spravována přímo z databázového prostředí, coţ s sebou přináší výbornou škálovatelnost celého systému a dostupnost 48

49 a zabezpečení dat. Díky Oracle OLAP je moţné snadno definovat multidimenzionální modely zahrnující sloţité analytické výpočty, vyuţívat jednoduchý a rychlý přístup k bohatým analýzám pomocí SQL dotazů a snadno a efektivně zlepšit výkon agregačních dotazů za pomocí materializovaných pohledů zaloţených na datových kostkách. Oracle, podobně jako Microsoft, je silným hráčem na poli databázových technologií. A stejně tak si za svá kvalitní řešení nechává náleţitě zaplatit. Na druhou stranu se databáze Oracle neomezuje na pouze jeden operační systém, ale je multiplatformní. [14] Oracle OLAP je plně integrován v databázi Oracle, což na technické úrovni znamená: OLAP engine běţí v jádru SŘBD Oracle Dimenzionální objekty jsou uloţeny v databázi Oracle v jejich přirozeném nativním formátu Datové krychle a další multidimenzionální objekty jsou první třídy dataobjektů uloţené v datovém slovníku databáze Bezpečnost dat je spravována standardním způsobem, pomocí příkazu GRANT a REVOKE v oboru databázových uţivatelů a rolí. Aplikace mohou dotazovat multidimenzionální objekty prostřednictvím dotazů SQL Uţivatelsky velmi příjemnou moţností je, dotazovat se na datové kostky uloţené v databázi prostřednictvím aplikace Microsoft Excel. MS Excel dotazuje přímo prostřednictvím MDX, čímţ zpřístupňuje uţivatelům data v kostkách, jako jsou například sumarizovaná data či vypočítávané hodnoty interaktivně. Uţivatelé si mohou definovat jejich vlastní dotazy a plně vyuţívat všech základních operací s datovými kostkami. Excelovské rozhraní s jeho formátováním a širokou vizualizační škálou, můţe být pouţito ve spojení s daty z datových kostek v Oracle OLAP. Toto spojení pak nabízí reprezentaci a zpracování dat v dalších modulech MS Office, jako je PowerPoint nebo Word, ţivě přímo z multidimezionální databáze. [9] Internetové stránky výrobce obsahují velké mnoţství specificky zaměřených dokumentů právě k problematice OLAP serveru. Ke zhlédnutí jsou i videa obsahující prezentace 49

50 zmiňovaného balíčku, instruktáţní videa, jak datovou kostku v tomto prostředí implementovat a jak se na data dotazovat. 2.2 Pentaho Mondrian Mondrian od společnosti Pentaho je OLAP serverový nástroj postavený na platformě Java. Jako dotazovací jazyk v Mondrian slouţí jazyk MDX, který čte data z relační databáze a prezentuje výsledek v multidimenzionálním formátu prostřednictvím aplikačního interface pouţité platformy. [4] Jeho hlavním účelem je tedy umoţnit uţivatelům analyzovat data uloţená v SQL databázi (jedná se o ROLAP řešení) aniţ by museli psát sloţité SQL dotazy. Mondrian umoţňuje definovat logické schéma datového skladu nad relační databází pomocí jednoduchého XML souboru. Dotazy nad logickým schématem se pak mohou zadávat pomocí jazyka MDX, nebo pomocí jazyka XMLA, které jsou Mondrianem překládány na klasické SQL dotazy. Výsledky těchto dotazů jsou nakonec opět převedeny do multidimenzionální podoby a vráceny jako odpověď na dotazy původní. Jedná se o komunitní open-source projekt, který můţe být dále doplněn o příbuzné produkty Pentaho Reporting. [14] Architektura serveru Pentaho Mondrian je rozdělena do čtyř vrstev, logicky rozdělených od části poskytující výstupy uţivateli aţ po nejinternější datové centrum. 4 Vrstvy Mondrian jsou: Prezentační vrstva (Presentation layer) Dimenzionální vrstva (Dimenzional layer) Hvězdicová vrstva (Star layer) Datová vrstva (Storage layer) Prezentační vrstva určuje, co uţivatel uvidí na svém monitoru a vytváří pro něj komunikační rozhraní pro práci se systémem a zadávání nových dotazů. Existuje mnoho způsobů jak prezentovat výsledky multidimenzionálních dotazů, jako například pomocí pivot tabulek, různých grafů a komplexnějších vizualizačních nástrojů jako jsou např. clikací mapy či dynamická grafika. Tyto výstupy mohou být naprogramovány v prostředí Swing nebo JSP, grafy mohou být renderovány ve formátu JPEG nebo GIF, případně mohou být přeneseny do 50

51 ostatních aplikací prostřednictvím XML. Ve víceuţivatelském řešení by tato vrstva měla existovat na kaţdé klientské stanici s výjimkou zobrazení pomocí JSP stránek, generovaných samotným serverem. Dimenzionální vrstva parsuje, validuje a provádí MDX dotazy. Samotný dotaz je vyhodnocován v několika fázích. První jsou zpracovávány osy dotazu, následně pak jednotlivé buňky v těchto osách. Pro větší efektivitu dimenzionální vrstva posílá poţadavky na zpracování hodnot buněk do agregační podvrstvy v dávkách. Transformační proces umoţňuje aplikacím pracovat a modifikovat jiţ provedené dotazy, které preferuje před vykonáváním zcela nových MDX dotazů pro kaţdý nový uţivatelský poţadavek. Metadata popisují dimenzionální model a jeho namapování na model relační. Hvězdicová vrstva je zodpovědná za správu agregační cache. Agregační cache je sada agregovaných hodnot kvalifikovaných dle definovaných dimenzí uloţených v paměti. Dimenzionální vrstva posílá poţadavky této vrstvě o sadu agregovaných hodnot. Pokud nejsou tyto agregované hodnoty v agregační cache nebo nejsou odvoditelné z agregací v cache, agragační manager posílá poţadavek do datové vrstvy. Strategie pouţití cache v systému Mondrian je následující. Faktová data jsou uloţena v SŘBD. Autoři Mondrianu jsou si vědomi absence důvodu vyvíjet novou datovou platformu, kdyţ potřebný SŘBD je dostupný. Datovou vrstvu představuje SŘBD, která je zodpovědná poskytováním vstupních dat pro agregované hodnoty a členy pro dimenzionální tabulky. Tato vrstva můţe být instalována na jiném serveru přístupném prostřednictvím JDBC[4]. Blokové schéma architektury OLAP serveru Mondrian je součástí této diplomové práce, viz příloha č. 1. Více informací a potřebná dokumentace k instalaci, konfiguraci a ladění OLAP serveru, případně sekce FAQ či dokumentace pro vývojáře jsou dostupné na internetových stránkách výrobce. 51

52 3 Vlastní návrh a implementace DS V následující kapitole popíši, jaké datové struktury, reprezentující databázový transakční systém, jsem se rozhodl pouţít jako vstupní bod pro tvorbu datového skladu. Dále popíši proces převodu struktury vhodné pro relační databáze a transakční zpracování do struktur vhodných pro uloţení dat ve strukturách, vhodných pro datové sklady a tvorbu datové krychle. V posledních kapitolách této části práce popíši instalaci SŘBD Oracle 11g, vytvoření zmiňovaných OLTP a OLAP struktur, vytvoření datové krychle, a instalaci OLAP serverů Oracle OLAP a Pentaho Mondrian, jich konfiguraci a spuštění nad daty obsaţenými v SŘBD. 3.1 PIM návrh architektury a řešení datového skladu PIM návrh se zabývá tou částí specifikace systému, která se nemění podle konkrétního druhu zvolené platformy. PIM zprostředkovává určitou míru nezávislosti konkrétního řešení dané problémové oblasti tak, aby se hodila na různé platformy podobného typu. [8] Datový model zdrojové relační databáze Pro případovou studii této diplomové práce jsem si vybral obecnou problematiku obchodování s cennými papíry. Navrhl jsem příslušný, zjednodušený, datový model popisující danou oblast a tento klasický relační model pouţiji jako předlohu pro návrh struktury datového skladu a procesu ETL. Datový model byl vytvořen v CASE nástroji Sybase PowerDesigner 12.0 a obsahuje 12 tabulek a 16 vazeb. Je v 3. normální formě a datová integrita je udrţována pomocí základních databázových deklarativních mechanizmů. Viz Obrázek 14 Datový model relační databáze. 52

53 Obrázek 14 Datový model relační databáze (vlastní tvorba) Tabulka S01Stat je číselníkem států, jejich označení a měny v tomto státě pouţívané. Jsou v ní uloţená data ve struktuře: S01StatID Sloupec je v tabulce primárním klíčem S01NazevStat Sloupec nese označení státu, například Čínská lidová republika S01NazevMena Sloupec nese hodnotu názvu měny, například Česká koruna S01StatKod Sloupec nese hodnotu kódu označení státu, například AU S01MenaKod Sloupec nese hodnotu kódu označení měny, například EMU Všechna pole v této tabulce jsou povinná. 53

54 Tabulka U01Ucastnik je evidencí osob participujících na obchodech a osob emitentů. Data jsou v ní uloţena v následující struktuře: U01UcastnikID Sloupec je v tabulce primárním klíčem U02FormaID Sloupec je v tabulce cizím klíčem z tabulky U02Froma S01StatID Sloupec je v tabulce cizím klíčem S01Stat U01RC Sloupec nese hodnotu rodného čísla nebo investičního čísla U01Jmeno Sloupec nese hodnotu křestního jména osoby U01Prijmeni Sloupec nese hodnotu příjmení osoby U01TitulPred Sloupec nese hodnotu titulu před jménem osoby U01TitulZa Sloupec nese hodnotu titulu za jménem U01Ulice Sloupec nese hodnotu ulice adresy osoby U01CisloPopisne Sloupec nese hodnotu čísla popisného adresy osoby U01Mesto Sloupec nese hodnotu města adresy osoby U01PSC Sloupec nese hodnotu poštovního směrovacího čísla adresy osoby U01DatumNarozeni Sloupec nese hodnotu data narození účastníka Tabulka U02Froma je číselníkem druhu osoby a data jsou v ní uloţena v následující struktuře: U02FormaID Sloupec je v tabulce primárním klíčem U02FormaKod Sloupec nese hodnotu kódu označení formy osoby, například U02_MUZ U02Forma Sloupec nese hodnotu popisu formy osoby, například Právnická osoba Tabulka U03Role je číselníkem rolí osoby a data jsou v ní uloţena v následující struktuře: U03RoleID Sloupec je v tabulce primárním klíčem U03RoleKod Sloupec nese hodnotu kódu označení role osoby, například U03_EMITENT U03RoleNazev Sloupec nese hodnotu popisu role osoby, například Emitent Tabulka U04UcastnikRole je vazební tabulkou mezi tabulkami U03Role a U01Ucastnik a řeší zde vazbu typu M:N. Data jsou v ní uloţena v následující struktuře: U04UcastnikRoleID Sloupec je v tabulce primárním klíčem U01UcastnikID Sloupec primárního klíče z tabulky U01Ucastnik 54

55 U03RoleID Sloupec primárního klíče z tabulky U03Role Tabulka E01Emise je evidencí cenných papírů. Data jsou v ní uloţena v následující struktuře: E01EmiseID Sloupec je v tabulce primárním klíčem S01StatID Sloupec je v tabulce cizím klíčem S01Stat E02EmiseDruhID Sloupec je v tabulce cizím klíčem E02EmiseDruh E01ISIN Sloupec nese hodnotu ISINU daného cenného papíru, například NL E01Nazev Sloupec nese hodnotu názvu daného cenného papíru E01Nominal Sloupec nese hodnotu nominální hodnoty E01DatumEmise Sloupec nese hodnotu data emise daného CP E01Objem Sloupec nese hodnotu objemu CP dané emise Tabulka E02EmiseDruh je číselníkem druhu emise. Jsou v ní uloţená data ve struktuře: E02EmiseDruhID Sloupec je v tabulce primárním klíčem E02DruhKod Sloupec nese hodnotu kódu označení emise, například E02_DERIVAT E02DruhNazev Sloupec nese hodnotu označení stavu, například Státní dluhopis Všechna pole v této tabulce jsou povinná. Tabulka O01Obchod je evidencí zaloţených obchodů. Data jsou v ní uloţena v následující struktuře: O01ObchodID Sloupec je v tabulce primárním klíčem E01EmiseID Sloupec je v tabulce cizím klíčem E01Emise P01ObchodSmerID Sloupec je v tabulce cizím klíčem P01ObchodSmer U01UcastnikID Sloupec je v tabulce cizím klíčem U01Ucastnik T01TrhID Sloupec je v tabulce cizím klíčem T01Trh P02StavID Sloupec je v tabulce cizím klíčem P02Stav U01ProtistranaID Sloupec je v tabulce cizím klíčem U01Ucastnik O01PocetCP Sloupec nese hodnotu počtu kusů CP daného obchodu O01ObchodObjem Sloupec nese hodnotu obchodního objemu daného obchodu O01CenaKus Sloupec nese hodnotu cenu za kus CP daného obchodu 55

56 O01ObchodDatum Sloupec nese hodnotu obchodního data daného obchodu O01DatumVyporadani Sloupec nese hodnotu data vypořádání obchodu O01VlozeniDatum Sloupec nese hodnotu vloţení obchodu do systému O01VlozeniDatumInt Sloupec nese hodnotu interní hodnotu vloţení (defaultně funkce GetDate()) Tabulka O02Vyporadani je evidencí vypořádání k obchodům z tabulky O01Obchod. Data jsou v ní uloţena v následující struktuře: O02VyporadaniID Sloupec je v tabulce primárním klíčem P02StavID Sloupec je v tabulce cizím klíčem P02Stav O01ObchodID Sloupec je v tabulce cizím klíčem O01Obchod O02VyporadaniDatum Sloupec nese hodnotu data skutečného vypořádání obchodu Tabulka P01ObchodSmer je číselníkem směru obchodu. Jsou v ní uloţená data ve struktuře: P01ObchodSmerID Sloupec je v tabulce primárním klíčem P01KodExt Sloupec nese hodnotu kódu označení směru externím systémem, například N P01SmerKod Sloupec nese hodnotu kódu označení směru, například P01_NAKUP P01Smer Sloupec nese hodnotu označení směru, například Nákup Všechna pole v této tabulce jsou povinná. Tabulka P02Stav je číselníkem stavu obchodu. Jsou v ní uloţená data ve struktuře: P02StavID Sloupec je v tabulce primárním klíčem S01StatID Sloupec je v tabulce cizím klíčem S01Stat P02StavKod Sloupec nese hodnotu kódu označení stavu, například P02_VYPORADANO P02StavPopis Sloupec nese hodnotu označení stavu, například Suspendováno Všechna pole v této tabulce jsou povinná. Tabulka T01Trh je číselníkem trhů. Jsou v ní uloţená data ve struktuře: T01TrhID Sloupec je v tabulce primárním klíčem T01TrhKod Sloupec nese hodnotu kódu označení stavu, například T01_BCPP 56

57 T01TrhNazev Sloupec nese hodnotu označení trhu, například Burza cenných papíru Praha T01MIC Sloupec nese hodnotu označení trhu označením MIC Převod relačního schématu na schéma hvězdy Při obecném návrhu datového skladu je nutné ze stávajícího relačního modelu vybrat s ohledem na budoucí pouţití hodnoty pro tabulku faktů a jejich měr a také jednotlivé dimenze. S ohledem na hodnoty ve výše uvedeném relačním modelu a jejich význam pro analytické účely jsem se rozhodl implementovat tyto následující dimenze: Dimenzi časovou pro obchodní den a den vypořádání obchodu Dimenzi participující osoby protistrany a účastníka Dimenzi emise obchodu, s kterou byl obchod uskutečněn Dimenzi trhu, na kterém byl obchod uskutečněn Dimenzi směru obchodu Dimenzi stavu obchodu Datový sklad bude dále obsahovat jednu tabulku faktů, obsahující hodnoty obchodního objemu, počtu CP a jednotkové ceny. 57

58 Obrázek 15 Multidimenzionální kostka a dimenze (vlastní tvorba) Pro řešení datového skladu jsem se rozhodl pouţít model hvězdy. Schéma datového skladu bude obsahovat 6 tabulek dimenzí, tabulky s prefixem DW_D01 DW_D06 a jednu tabulku faktů s prefixem DW_F01. Tabulky dimenzí a tabulka faktů jsou spojeny vazbami. 58

59 Obrázek 16 Model hvězda datového skladu (vlastní tvorba) 3.2 PSM návrh architektury a řešení datového skladu Oracle PSM návrh je závislý na cílové platformě, kombinuje PIM s konkrétními technologickými řešeními Vlastní instalace SŘBD Oracle 11g Instalační balíček produktu je umístěn na stránkách výrobce v sekci download. Pro instalaci SŘBD Oracle jsem se rozhodl pouţít notebook Lenovo T410, vybavený procesorem Intel Core i5 2.4GHz s operační pamětí 3GB. Instalovaný operační systém je Windows 7 Professional. Budu instalovat Oracle na 32 bitovou verzi operačního systému firmy Microsoft, pro kterou jsem zvolil verzi 11g Release 2 ( ). 59

60 Po staţení obou částí instalace, která je rozdělena na dva instalační archivy, je třeba soubory dekomprimovat do stejné sloţky umístěné na pevném disku počítače. Po dekomprimaci máme k dispozici kompletní instalační balíček, který jsem spustil souborem setup.exe. Při instalaci produktu Oracle 11g jsem postupoval podle návodu uvedeného v zdroji [6] a podle cíle této diplomové práce. Po spuštění souboru setup.exe se objeví přehledný průvodce instalací, který se dotazuje především na následující body, které jsem nastavil tak, jak je uvádí Tabulka č. 9, instalační parametry. Tabulka č. 9, instalační parametry Parametr Dostupné volby Zvoleno Způsob instalace SŘBD Nová SŘBD, update stávající, Nová SŘBD Třída SŘBD Desktop, Server Desktop Cesty pro fyzické umístění souboru DBS a aplikačního jádra Ponechání výchozí Druh instalace Enterprise Edition, Standard Editin, Enterpise Edition Defaultní znaková sada WIN 1250, Unicode WIN1250 SID databáze orcl Heslo administrátorského účtu Po dokončení prvotní instalace následuje okno Password management, kde je moţno zaloţit či aktivovat uţivatelské účty k přístupu do databáze a nastavení patřičných hesel. Instalace dále pokračuje bez dalších nutných zásahů aţ do bodu jejího ukončení, kdy je SŘBD po úspěšném instalačním procesu připraven k pouţití. Webové rozhraní nainstalovaného produktu je v případě popisované instalace dostupné z umístění kde jsou k dispozici přehledně uspořádané a logicky rozčleněné ovládací, konfigurační a monitorovací prvky. Pro případovou studii této práce jsem se rozhodl nechat nastavení ve výchozím stavu. Dalším krokem bylo tedy vytvořit patřičné datové struktury datového skladu a naplnit je daty vhodnými pro analýzu a prezentaci funkčnosti návrhu. Pro veškerou další práci s daty a datovými strukturami jsem pouţil volně dostupnou aplikaci Oracle SQL Developer verze , která je k dispozici na webu výrobce. Pro její zprovoznění a pouţívání stačí pouze vytvořit patřičnou konexi na v předešlém bodě 60

61 zmiňovaný SŘBD. Vytvoření konexe popisuje Obrázek 17 Vytvoření konexe na SŘBD v SQL Developer. Obrázek 17 Vytvoření konexe na SŘBD v SQL Developer (vlastní tvorba) Vytvoření datových struktur Pro vytvoření datových struktur jsem pouţil DDL skript vygenerovaný aplikací Sybase PowerDesigner 12, v které jsem tyto datové struktury modeloval. Skript je k nahlédnutí viz příloha č. 2. V datovém modelu jsem zcela úmyslně nepouţil sloupce typu identity pro primární klíče kaţdé tabulky, protoţe data, která jsem se rozhodl do datového skladu vloţit, pocházejí z informačního systému, kde tyto primární klíče jsou sloupci typu identity a jejich unikátnost je tak zaručena jiţ na straně zdroje. Narušení unikátnosti primárního klíče vstupem dalších instancí jiných primárních klíčů z třetích systémů je v tomto případě vyloučena. Datová integrita je řešena pomocí deklarativních omezení. Referenční integrita pomocí vazeb primárních a cizích klíčů mezi tabulkou faktů a tabulkami dimenzí. Doménová integrita je jiţ z velké části řešena na straně zdrojového informačního systému, na straně datového skladu jsem se tedy omezil jen na ošetření parciality. 61

62 3.2.3 Naplnění datových struktur daty Z důvodu naplnění datového skladu smysluplnými záznamy, které mají schopnost reálně popisovat danou situaci, z důvodu poţadavku na data integritní a konzistentní, a na dostatečný počet záznamů, jsem se rozhodl jako zdrojová data pro tuto případovou studii data extrahovat z nejmenovaného transakčního informačního systému pokrývajícího problematiku obchodování s cennými papíry. Protoţe se jedná o data z testovacího prostředí, které svůj původ mají v prostředí produkčním, provedl jsem nad těmito daty anonymizaci v takovém rozsahu, aby jejich schopnost identifikovat účastníky obchodů či titul cenného papíru, byla nulová. Po tomto zásahu mohu stále na jejich základě analyzovat pomocí OLAP serverů závislosti a trendy. Protoţe datová základna zmiňovaného informačního systému je implementována na platformě databázového serveru Microsoft SQL Server 2008 a tento server je v demilitarizované intranetové zóně, rozhodl jsem se přenést data mezi zdrojovou a cílovou databází jednorázově, pomocí do CSV souborů exportovaných dat. V případě skutečného automatizovaného procesu ETL by muselo být mezi servery zprovozněno spojení tak, aby proces mohl data dle nastaveného aktualizačního plánu ze zdrojového serveru číst a tyto data po vhodné transformaci do cílového serveru vkládat. Balíček Microsoft SQL Server 2008 i balíček Oracle 11g těmito nástroji disponují. Samotné naplnění tedy spočívalo v extrakci a transformaci časového snímku dat za období roků 2008 aţ 2010 včetně, ze zdrojové databáze, která je umístěna na databázovém serveru MS SQL 2008 a slouţí jako základna pro prostředí transakčního informačního systému. Příprava dat tedy probíhala v prostředí MS SQL serveru a zmiňované dotazy a skripty pouţité pro extrakci, anonymizaci a transformaci dat jsou syntaxí jazyka T-SQL, coţ je procedurální nadstavba standardu SQL implementované společností Microsoft v jejich SŘBD. Nejprve je nutné naplnit tabulku DW_D01Date, která obsahuje data pro dimenzi hodnot obchodního dne a data vypořádání. Časová dimenze má z pohledu datového skladu jistá specifika, mnoţinu obsahující datum není moţné brát přímo z tabulek např. faktů, protoţe jednoduše nemusí obsahovat všechna data v kalendářním roce. Toto je řešeno jednoduchým skriptem v jazyce Transact SQL, který naplní tabulku dimenze času postupně všemi 62

63 jednotlivými daty v určeném intervalu. V tomto případě tedy všemi dny od začátku roku 2008 do konce roku Skript pro naplnění tabulky DW_D01Date: datetime = ' ' < ' ' Begin Insert Into DW_D01Date ( D01Date, D01Day, D01Month, D01Year, D01Quarter ) DatePart(dd,@dt_datum), DatePart(mm,@dt_datum), DatePart(yyyy,@dt_datum), DatePart(qq,@dt_datum) = dateadd(day, 1,@dt_datum ) End Tímto skriptem se tabulka naplní 1096 záznamy, obsahujícími primární klíč záznamu data, který bude pouţit jako cizí klíč pro datumové poloţky tabulky faktů. Dalším postupem bylo naplnit tabulku dimenzí účastníků a protistran obchodů, tabulku DW_D02Ucastnik. Ve zdrojové databázi je tato evidence řešena jednou tabulkou obsahující všechny účastníky, bez rozdělení na protistranu či účastníka obchodu. Tímto způsobem bude řešena i dimenze účastníka a protistrany v této případové studii. V případě většího zatíţení datového skladu by bylo vhodnější tuto tabulku rozdělit na dvě separátní, aby byla zátěţ rozloţena. Tabulku dimenzí DW_D02Ucastnik, obsahující členy obchodů jsem naplnil výsledkovou sadou tohoto SQL dotazu: Select u01.u01ucastnikid As D02UcastnikID, 63

64 u02.u02formaid As U02FromaID, u02.u02forma As U02Froma, s01.s01statid As S01StatID, s01.s01nazevstat As S01NazevStat, u01. U01UcastnikID as U01RCIC, 'Jméno_' + ltrim(rtrim(str(u01ucastnikid))) As U01Jmeno, 'Příjmení_' + rtrim(ltrim(str(u01ucastnikid))) As U01Prijmeni, U01DatumNarozeni As U01DatumNarozeni From U01Ucastnik as u01 Inner Join U02Forma As u02 On u01.u02forma = u02.u02forma Inner Join S01Stat As s01 On s01.s01statid = u01.s01statid Where Exists(Select 1 From O01Obchod As o01 Where o01.u01ucastnikid = u01.u01ucastnikid And O01VlozeniCasInt > ' ' And O01VlozeniCasInt < ' ') Or Exists(Select 1 From O01Obchod As o01 Where o01.u01protistranaid = u01.u01ucastnikid And O01VlozeniCasInt > ' ' And O01VlozeniCasInt < ' ') Jak je ze skriptu patrno, pole U01Jmeno, U01Prijmeni, U01RCIC byly anonymizovány. Pro naplnění tabulky DW_D03Emise, která bude obsahovat denormalizované hodnoty relevantních cenných papírů, jsem pouţil výsledkovou sadu následujícího dotazu: Select e01.e01emiseid As D03EmiseID, e01.s01statid As S01StatID, s01.s01nazevstat As S01NazevStat, s01.statnazevmena As S01NazevMena, e01.e02emisedruhid As E02EmiseDruhID, e02.e02druhnazev As E02DruhNazev, e01.u01emitentid As U01EmitentID, 'Jmeno_' + rtrim(ltrim(str(e01.u01emitentid))) as U01Jmeno, 'Příjmení_' + rtrim(ltrim(str(e01.u01emitentid))) as U01Prijmeni, ltrim(rtrim(str( E01EmiseID))) As E01ISIN, 'Emise_' + ltrim(rtrim(str(e01emiseid))) E01Nazev From E01Emise e01 Inner Join S01Stat As s01 On s01.s01statid = e01.s01statid Inner Join E02EmiseDruh As e02 On e01.e02emisedruhid = e02.e02emisedruhid Inner Join U01UcasnikID As u01 On e01.u01emitentid = u01.u01ucastnikid Where Exists(Select 1 From O01Obchod As o01 Where e01.e01emiseid = o01.e01emiseid and O01VlozeniCasInt > ' ' And O01VlozeniCasInt < ' ') Anonymizovány byly pole U01Jmeno, U01Prijmeni, E01ISIN, E01Nazev. Tabulku DW_D04Trh, která bude obsahovat potřebné hodnoty pro vytvoření dimenze trhu, na kterém je obchod uzavřen, jsem naplnil výsledkovou sadou tohoto SQL dotazu: 64

65 Select T01TrhID As D04TrhID, T01TrhID As T01TrhKod, 'Trh_' + ltrim(rtrim(str(t01trhid))) As T01TrhNazev, left(t01kod,4) + ltrim(rtrim(str(t01trhid))) As T01MIC, t01.s01statid As S01StatID, s01.s01nazevstat As S01NazevStat, s01.statnazevmena As S01NazevMena, From T01Trh t01 Inner Join S01Stat As s01 On s01.s01statid = t01.s01statid Where Exists(Select 1 From O01Obchod o01 Where t01.t01trhid = o01.t01trhid and O0VlozeniDatumInt > ' ' And O0VlozeniDatumInt < ' ') V této výsledkové sadě jsou anonymizovány sloupce T01TrhNazev, T01TrhKod a T01MIC. Pro naplnění tabulky DW_D05ObchodSmer, která obsahuje hodnoty pro dimenzi obchodního směru, jsem pouţil následující statické inserty: Insert into "DW_D05ObchodSmer" ("D05ObchodSmerID","P01Smer") Values (0,'Nákup'); Insert into "DW_D05ObchodSmer" ("D05ObchodSmerID","P01Smer") Values (1,'Prodej'); Poslední dimenzní tabulku DW_D06Stav jsem naplnil výsledkovou sadou tohoto SQL dotazu: Select P02StavID As D06StavID, P02StavPopis as P02StavPopis From P02Stav As p02 Exists(Select 1 From O01Obchod o01 Where p02.p02stavid = o01.p02stavid and O0VlozeniDatumInt > ' ' And O0VlozeniDatumInt < ' ') Nyní jsou všechny tabulky dimenzí naplněny a je moţné přistoupit k naplnění tabulky faktů DW_D01Obchody. Tato tabulka byla naplněna daty z výsledkové sady tohoto dotazu, který je snímkem dat za určité časové období: Select o01.o01obchodid As F01ZaznamID, d01_obchoddatum.d01timeid As D01ObchodDatumID, 65

66 o01.u01protistranaid as D02ProstistranaID, o01.u01ucastnikid as D02UcastnikID, o01.e01emiseid As D03EmiseID, o01.t01trhid As D04TrhID, Coalesce(d01_o02vypor.D01TimeID,d01_01Vypor.D01TimeID) As O01DatumVyporadani, d01_vlozeniint.d01timeid As O01VlozeniDatumInt, p01.p01obchodsmerid As P01ObchodSmerID, Coalesce(o02.P02StavID,o01.P02StavID) As D06Stav, O01ObchodObjem As O01ObchodObjem, O01PocetCP As O01PocetCP, O01CenaKus As O01CenaKus From O01Obchod As o01 Inner Join DW_D01Date as d01_obchoddatum On O01ObchodDatum = d01_obchoddatum.d01date Inner Join DW_D01Date as d01_vlozeniint On DateDiff(day,O01VlozeniDatumInt,d01_VlozeniInt.D01Date) = 0 Inner Join DW_D01Date as d01_01vypor On O01DatumVyporadani = d01_01vypor.d01date left Join O02Vyporadani As o02 On o01.o01obchodid = o02.o01obchodid left Join DW_D01Date as d01_o02vypor On o02.o02vyporadanidatum = d01_12vypor.d01date Where O01VlozeniDatumInt > ' ' And O01VlozeniDatumInt < ' ' Pro vkládání záznamu jsem pouţíval aplikaci Oracle SQL Developer a její funkci Import Data v kontextovém menu nad objektem konkrétní tabulky. Po zvolení této volby se objeví série dialogů, které přehledně provází importním procesem dat. Nejprve je nutné zadat jméno importovaného souboru. Následuje dialog, kde je nutné nastavit parametry importu. V tomto případě hodnoty oddělené znakem ;, bez hlavičky, s textovými hodnotami bez kvantifikátoru. V druhém kroku se volí způsob importu, vybral jsem tedy vytvoření insertovacího skriptu, kvůli snazšímu případnému opakovanému importu. Ve třetí obrazovce se definují formáty dat, jako jsou datumové poloţky atd. Na čtvrté obrazovce průvodce pak dojde k validaci zadaných parametrů a samotného procesu parsování importovaného souboru. Po kliknutí na tlačítko Dokončit aplikace vytvoří skript obsahující příkazy Insert jazyka SQL, které je moţno nad databázi spustit. Viz Obrázek 18 Průvodce importem dat. Po spuštění vytvořených importovacích skriptů je datový sklad naplněn a je moţno přistoupit k dalším bodům, vedoucím k cíly. Počet insertovaných záznamů přehledně shrnuje 66

67 Tabulka č. 10. Tabulka č. 10, počet záznamů v tabulkách DW Tabulka Počet insertovaných vět DW_D01Date DW_D02Ucastnik DW_D03Emise DW_D04Trh 42 DW_D05ObchodSmer 2 DW_D06Stav 19 DW_F01Obchody

68 Obrázek 18 Průvodce importem dat (vlastní tvorba) V tomto bodě jsou struktury datového skladu naplněny a připraveny k dalšímu kroku, podstoupení OLAP serveru Vytvoření datové krychle, dimenzí a hierarchií Na platformě Oracle 11g s doplňkem OLAP option jsem pro vytvoření datové krychle a jejích dimenzí pouţil vývojový nástroj dodávaný společností Oracle, Oracle Analytic Workspace Manager ve verzi A. Oracle Analytics Workspace je volně přístupný a ke staţení na oficiálních internetových stránkách firmy Oracle. Po staţení a dekomprimaci instalačního balíčku je aplikace připravena k pouţití. Stačí pouze vytvořit patřičnou konexi za pomocí jednoduchého průvodce. 68

69 Po zadání autentifikačních údajů se objeví stromová struktura s příslušnými schématy pro přihlášeného uţivatele. V tomto stromě pomocí kontextovému menu a volby Create Analytic Workspace jsem nový workspace vytvořil. Workspace je v tomto případě chápan jako kontejner obsahující všechny multidimenzionální objekty a jejich data. Obrázek 19 Nový projekt v AWM Oracle (vlastní tvorba) Základními stavebními kameny pro vytvoření OLAP v prostředí AWM jsou dimenze a k nim patřící definice úrovní a hierarchií, které začleňují definované úrovně. Tyto volby se nabídnou po vytvoření workspace. K dispozici je i velké mnoţství reportů, obsahujících různé statistické informace, logy atd. Je k dispozici i prostředí pro nastavení bezpečnosti dat z hlediska uţivatelských přístupů. Díky tomu je Analytic Workspace Manager komplexním nástrojem pro vývoj a správu multidimenzionálního prostředí v databázi Oracle 11g. Na stránkách výrobce je dostupných několik obsáhlých dokumentů obsahujících popis a způsob práce s tímto nástrojem. Je dostupné i rozsáhlé diskusní fórum, obsahující příspěvky uţivatelů s praktickými zkušenostmi a řešením reálných implementačních a administračních problémů. Pro vytvoření navrţeného OLAP prostředí je třeba definovat dimenze a datovou krychli. Při deklaraci dimenzí jsem postupoval podle dokumentace. K vytvoření dimenze jsem pouţil volbu kontextového menu Create Dimension na objektu dimenzí. Kde jsem deklaroval především tyto hodnoty: 69

70 Jména a popisek potřebných dimenzí. Typ vytvářené dimenze. U časové dimenze jsem pouţil v parametru Dimension type volbu User Dimension namísto dostupné volby Time dimension, protoţe mnou navrţená tabulka DW_D01Date obsahující hodnoty pro definici dimenzí neobsahuje slupce TIME_SPAN a END_DATE, pro kaţdou úroveň dimenze, které jsou nativně vyţadované tímto prostředím pro časové dimenze. Na záloţce Levels úrovně dimenze s jejich názvy a popisky pro následné sestavení hierarchie. Povolení vytvoření materializovaných pohledů na záloţce Materialized Views Po vytvoření dimenzí jsem vytvořil ke kaţdé dimenzi jednu hlavní hierarchii prostřednictvím volby Create Hierarchy v kontextovém menu nad objektem Hierarchy, kde jsem specifikoval tyto parametry: Jméno a popis hierarchie Druh pouţité hierarchie jako Level Based Hierarchy (všechny mnou navrţené dimenze jsou tohoto typu) Přiřadil jsem hierarchii pro ní vytvořené úrovně a seřadil je dle navrţeného pořadí pomocí selektoru ve spodní části karty General Viz Obrázek 20 Deklarace dimenze v prostředí AWM Poslední krok k vytvoření dimenzí bylo vytvoření mapování logického schématu dimenze na skutečné objekty v relační databázi obsahující hodnoty pro naplnění multidimenzionálního kontejneru daty. Toto mapování jsem provedl prostřednictvím obrazovky pod volbou Mappings zapsáním výrazu Vše pro první úroveň hierarchie a dále pomocí přetaţením patřičného pole ze zdroje dat do patřičného logického schématu vytvářené dimenze. 70

71 Obrázek 20 Deklarace dimenze v prostředí AWM (vlastní tvorba) Po vytvoření dimenzí je moţno si prohlédnout hodnoty obsaţené v materializovaných pohledech pro úrovně dimenze a naplnění vlastních dimenzí prostřednictvím obrazovek ve volbě Views, případně zkontrolovat strukturu načtením dat do multidimenzionálního kontejneru volbou Maintain Dimension v kontextovém menu nad patřičnou dimenzí a následným zobrazením hierarchie dané dimenze prostřednictvím volby View Data v tomtéţ kontextovém menu. Viz Obrázek 21 Zobrazení hodnot vytvořené dimenze. Obrázek 21 Zobrazení hodnot vytvořené dimenze (vlastí tvorba) V tomto bodě jsou všechny potřebné dimenze vytvořeny a je třeba přistoupit k vytvoření datové krychle Obchody. Datovou krychli jsem vytvořil pomocí kontextového menu na 71

72 objektu Cubes a volby Create Cube. Při vytvoření datové krychle jsem zadal tyto hodnoty: Jméno a popisek datové krychle Za pomocí selektoru ve spodní části obrazovky jsem přiřadil krychli vytvořené dimenze Na záloţce Aggregation jsem zadal způsob agregace měr pro vyvrtávání z datové krychle jako operaci sumace a označil pro agregaci všechny dostupné dimenze. Nastavení přepočítávání datové krychle jsem nechal nastaveno na výchozí hodnotu 35 %. Na záloţce Partitioning jsem záměrně nechal tuto volbu neaktivní z důvodu dalšího porovnávání s OLAP serverem Mondrian. Na záloţce Materialized View jsem zaškrtl volbu Enable Materialized View Refresh of the Cube pro povolení vyuţití materializovaného pohledu. Následně jsem vytvořené datové krychli vytvořil míry prostřednictvím kontextového menu nad objektem Measures volbou Create Measure, kde jsem zadal všechny 3 navrhované míry s těmito parametry. Posledním krokem při tvorbě datové krychle bylo vytvoření mapování logického schématu datové krychle na tabulku faktů. Toto bylo provedeno prostřednictvím obrazovky Mappings ve stromové struktuře nabídek objektu Cubes. Viz Obrázek 22 Mapování měr a dimenzí datové krychle v prostředí AWM. Takto vytvořenou krychli je nyní třeba nechat přepočítat, tj. naplnit daty z relačních tabulek. Tato akce se provede pomocí volby Maintain Cube OBCHODY v kontextovém menu nad objektem vytvořené datové krychle. Po zvolení této volby engine Oracle Olap option provede build vytvořených objektů, generaci multidimezionálních dat a těmito daty potom vytvořené objekty naplní. Celý proces je přehledně provázen průvodcem, kde jsem zadal pro zpracování všechny dimenze a datovou krychli a způsob zpracování ihned. Pro produkční řešení je dostupná volba naplánovat tento proces na určitý datum a čas, případně nastavit maximální počet paralelních procesů tak, aby nebylo optimalizováno vyuţití dostupného výpočetního výkonu. 72

73 Obrázek 22 Mapování měr a dimenzí datové krychle v prostředí AWM (vlastní tvorba) Po spuštění se zobrazí okno Maintrance Log, kde systém informuje o průběhu buildu a plnění objektů daty. Protoţe výpočet datové krychle je náročná operace z hlediska čtení, agregace a manipulace s daty, trvá tato operace nějakou dobu. V případě výpočtu v této práci popsané krychle trvala tato operace 452 vteřin. Úspěšné dokončení je indikováno vizuálním návěštím. Celý proces je detailně popsán v logu, který proces paralelně zapisuje. Viz Obrázek 23 Dokončení výpočtu multidimenzionální datové krychle. Tímto je implementace datového skladu v podstatě dokončena. V produkčním prostředí by implementaci předcházela výrazně širší analýza skladovaných dat a jejich významu pro účely podpory rozhodování či predikce. Popis těchto oborově specifických technik by však vydal na několik diplomových prací a je nad rámec práce této. Tento proces je v reálném prostředí velmi časově i finančně nákladný. V průběhu implementace i po ní ve skutečném datovém skladu musejí probíhat procesy přidělování uţivatelských práv pro přístup do multidimenzionálních dat, optimalizace uloţených dat, konfigurace přepočítávaných agregací, participace nejvytíţenějších tabulek, analýzy zatíţení, časový plán výpočtu datových krychlí či procesu ETL atd. Těmito otázkami se tato diplomová práce nezabývá, protoţe v této případové studii nevyvstaly. Posledním bodem provedeným při implementaci OLAP serveru je ověření jeho funkčnosti. Jeho funkci jsem si ověřil jednoduše pomocí vestavěného nástroje v prostředí Analytic 73

74 Workspace Manager. Kde jsem v kontextovém menu vyvolaném nad objektem datové krychle Obchody, volbou View Data OBCHODY zobrazil okno Measure Data Viewer. Obrázek 23 Dokončení výpočtu multidimenzionální datové krychle (vlastní tvorba) Výsledkem je okno, kde jsou zobrazeny dvě osy, na které si libovolně mohu přetahovat kteroukoliv z definovaných dimenzí či měr, účastných v datové krychli. Takto přetaţený objekt se automaticky zakomponuje do zobrazovaného výsledku. Pomocí navigačních tlačítek mohu provádět základní operace zavrtávání či vyvrtávání. Výsledky jsou ihned zobrazovány na uţivatelsky nastavitelném grafu. Toto zobrazení má však pouze charakter ad-hoc vizualizace. Některé funkce pro práci s multidimenzionálními daty chybí. Pro ověření realizace potřebných objektů v jádru databáze, funkčnosti převodu dat do miltidimenzionálního formátu a vypočítání datové kostky však postačuje. Viz Obrázek 24 Interaktivní zobrazení výsledků v prostředí AWM. 74

75 Obrázek 24 Interaktivní zobrazení výsledků v prostředí AWM (vlastní tvorba) 3.3 PSM návrh architektury a řešení datového skladu Pentaho Vlastní instalace OLAP serveru Pentaho Mondrian Při instalaci produktu Mondrian společnosti Pentaho jsem postupoval podle instrukcí uvedených na oficiálních stránkách výrobce toho produktu. Jako první krok je třeba stáhnout JAR soubory se samotným jádrem aplikace. Tyto soubory jsou přehledně odkazovány na internetových stránkách společnosti Pentaho. Staţené soubory představují vlastně jakýsi interface mezi pouţitou relační databází a uţivatelským rozhraním, kde uţivatel definuje své dotazy, které jsou převedeny na SQL dotazy, spuštěny nad relační databází a výsledná výsledková sada je opět převedena do multidimezionálního formátu, který potom aplikační vrstva zobrazuje. Při downloadu těchto souborů je moţno vybrat si z několika variant připravených instalačních balíčků. Například balíček obsahující aplikace jpivot, která představuje webový framework. Všechny distribuce obsahují zdrojové soubory OLAP serveru Mondrian. 75

76 Instalační postup obecně sestává z těchto kroků: Instalace Java JDK prostředí (1.4.2 nebo vyšší) Download a dekomprimace posledního release produktu Mondrian Instalace Tomcat Nastavení a spuštění webové aplikace Pro případovou studii této diplomové práce jsem vybral distribuci produktu Mondrian bez vloţené databáze, kterou bylo moţno instalovat z jednoho z připravených instalačních balíčků. K tomuto rozhodnutí jsem se přiklonil, protoţe jiţ jedna relační databáze se strukturami datového skladu a naplněným obsahem byla k dispozici pro realizaci kapitoly č Touto prací jsem nechtěl porovnat výkonnosti jednotlivých relačních databází, ale vlastnosti jednotlivých OLAP serverů. Proto jsem se rozhodl pouţít stejnou datovou základnu pro oba OLAP produkty. HW pro instalaci jsem pouţil totoţný jako v kapitole 3.2, tedy notebook Lenovo T410 s OS Windows 7 Profesional. Po staţení a instalaci prostředí Java JDK 32bit, verze 6.26 bylo třeba instalovat aplikační server Tomcat. Pouţil jsem 32-bitovou verzi , která je volně ke staţení na stránkách výrobce. Instalace aplikačního serveru Tomcat v tomto případě spočívala pouze v umístění aplikačních souborů serveru a vytvoření dávkového souboru pro zajištění naplnění systémové proměnné JAVA_HOME a spuštění výrobcem dodaného dávkového souboru startup.bat. v adresáři \bin. Tím je příprava aplikačního serveru ukončena. Ověření funkční instalace serveru lze provést zadáním adresy kdy se načte úvodní stránka tohoto produktu. Po staţení souboru mondrian zip a jeho dekomprimaci jsou potřebné soubory obsaţeny v adresáři..\lib\. K zprovoznění Mondrian je třeba nakopírovat war soubor mondrian.war z adresáře instalačního balíčku lib\ do domovského adresáře Tomcatu..\webapps. Server Tomcat automaticky vytvoří příslušný adresář pro Mondrian a extrahuje do něj aplikační soubory. 76

77 Tímto je instalace Mondrian připravena k pouţití a funkčnost instalace je moţno ověřit na adrese odkud se načte výchozí stránka serveru s odkazy na vzorové příklady v aplikaci jpivot, základní interface pro MDX dotazy atd Konfigurace OLAP serveru a mapování modelu na SŘBD Oracle 11g Dalším krokem k cíli bylo nastavení konfiguračních souborů pro připojení k jiţ instalované relační databázi, kde je třeba doplnit parametry pouţitých driverů, adresu SŘBD, účet pro přihlášení a XML schéma OLAP databáze. Nastavení je třeba zapsat v souborech v domovském adresáři Tomcatu...\webapps\Mondrian\WEB-INF\mondrian.properties Tímto zápisem: mondrian.test.connectstring=provider=mondrian; Jdbc=jdbc:oracle:thin: user / JdbcDrivers=oracle.jdbc.driver.OracleDriver;Catalog=/WEB- INF/queries/Obchody.xml; a..\webapps\mondrian\web-inf\web.xml Tímto zápisem: <param-name>connectstring</param-name> <param-value>provider=mondrian; Jdbc=jdbc:oracle:thin: user / JdbcDrivers=oracle.jdbc.driver.OracleDriver;Catalog=/WEB- INF/queries/Obchody.xml </param-value> Pro ověření funkčnosti provedené konfigurace je třeba ještě vytvořit mapovací soubor uvedený v konfiguračních souborech, který vysvětluje vazby mezi fyzickým schématem tabulek datového skladu a definicí datové kostky, jejích dimenzí a patřičných hierarchií tak, jak je interpretována OLAP serverem. 77

78 Tabulka č. 11, nastavení a popis XML Tag <Cube> <Cube name="obchody"> <Dimension name="tradedate"> <Dimension type="timedimension" <Dimension foreignkey="d01obchoddatumid"> <Level> <Level name="year"/> <Level column="d01year"/> <Level type="numeric"/> <Level uniquemembers="true"/> <Level leveltype="timeyears"/> <Measure> <Measure name="quantiti"/> <Measure column="o01pocetcp"/> <Measure aggregator="sum" /> <Measure datatype="integer"/> Význam Deklaruje datovou krychli. Definuje jméno vytvořené datové krychle Definuje jméno dimenze Definuje druh dimenze, nutné uvádět jen pro dimenze časové. Identifikátor je použit pro optimalizace SQL dotazu a rozšířené využití analytických funkcí. Definuje cizí klíč v tabulce v tabulce faktů, který odkazuje na danou dimenzi Deklaruje hierarchii dimenze Definuje jméno úrovně Definuje jméno sloupce, který představuje hodnoty dané úrovně. Definuje datový typ úrovně tak jak jej interpretuje a zpracovává OLAP server. Definuje, zda je člen této úrovně v tabulce faktů unikátní. Pokud ano, použije se optimalizovaný způsob dotazování. Definuje úroveň časové dimenze. Deklaruje míru v tabulce faktů. Definuje jméno daného míry. Definuje sloupec představující danou míru v tabulce faktů. Definuje způsob práce s daty pro agregaci. Definuje datový typ míry tak jak ji interpretuje a zpracovává OLAP server. Tento mapovací soubor pouţívá syntaxi XML a všechny konfigurační párové i nepárové tagy jsou detailně popsány na internetových stránkách výrobce, a proto zde uvedu jen zkrácený příklad a popis jednotlivých párových značek. Viz Tabulka č. 11, nastavení a popis XML. 78

79 Obrázek 25 Část XML mapovacího souboru (vlastní tvorba) Kompletní konfigurační soubor této případové studie je k nahlédnutí v části Přílohy, viz příloha č Vlastní použití OLAP serveru Pentaho Mondrian V tomto bodě jiţ je připravený aplikační server, OLAP server nakonfigurovaný tak, aby pracoval s poţadovaným SŘBD a OLAP server ví, které tabulky obsahují které hodnoty pro vytvoření dimenzí a datové krychle. Stačí tedy spustit aplikační server a přejít na adresu Pro ověření správné konfigurace všech popsaných soborů funkční OLAP server lze provést libovolný MDX dotaz. Například: Select {[TradeDirection].[Prodej], [TradeDirection].[Nákup], 79

80 [TradeDirection].[All]} ON COLUMNS, {[TradeDate].[2008].[1].[2].Children} ON ROWS From [Obchody] Where ([Measures].[Amount]) Který vrátí výsledkovou sadu obsahující tři sloupce pro obchodní směr prodeje CP, pro obchodní směr nákupu CP a sumarizovaný sloupec pro oba obchodní směry dohromady. Na ose řádků jsou potom vypsány všechny záznamy druhého měsíce, prvního kvartálu roku V průsečíkách os řádků a sloupců jsou potom patřičné sumarizované hodnoty měr Amount (obchodní objem) z tabulky faktů. Viz Obrázek 26 Výsledek MDX dotazu. Tento MDX dotaz je však velmi jednoduchý a dostatečně nedemonstruje celou sílu OLAP serveru a vypovídacích hodnot multidimenzionálních dat. Také je třeba k jeho konstrukci znát hodnoty dimenzních tabulek a pojmenování měr v tabulce faktů, jména dimenzí atd. Celkově je zadávání MDX dotazů pro uţivatele velmi nekomfortní a prezentace dotázaných dat v tabulce nemusí být vţdy optimální. Z tohoto důvodu jsem se rozhodl zprovoznit aplikaci jpivot, která přináší větší komfort při definici poţadovaného dotazu prostřednictvím grafického rozhraní a nabízí nepoměrně větší moţnosti prezentace dotázaných dat. K zprovoznění aplikace jpivot, která je součástí výše popsaného instalačního balíčku postačí konfigurace JSP souboru modrian.jsp umístěného v cestě:..\webapps\mondrian\web-inf\queries Tímto zápisem: <jp:mondrianquery id="query01" jdbcdriver="oracle.jdbc.driver.oracledriver" jdbcurl="jdbc:oracle:thin: user / cataloguri="/web-inf/queries/obchody.xml" jdbcuser= user jdbcpassword= pass connectionpooling="false"> 80

81 A doplněním MDX dotazu, který bude pouţit jako výchozí. V případě této případové studie tedy výše citovaného. Obrázek 26 Výsledek MDX dotazu (vlastní tvorba) Aplikace jpivot se opět spouští zadáním adresy do internetového prohlíţeče. Na zobrazení MDX dotazu nad databází nakonfigurovanou v souboru mondrian.jsp stačí kliknout na volbu JPivot pivot table. Po kliknutí na tuto volbu se zobrazí podobná tabulka, jako ukazuje Obrázek 26 Výsledek MDX dotazu. Viz Obrázek 27 Zobrazení MDX dotazu pomocí aplikace jpivot. Je ovšem lépe graficky vyvedená a interaktivní. To znamená, ţe je moţné v ní pomocí ovládacích prvků 81

82 (červených šipek) měnit úroveň zobrazovaných hierarchií a provádět tak operace zavrtávání (Drill Down) či vyvrtávání (Drill Up). Obrázek 27 Zobrazení MDX dotazu pomocí aplikace jpivot (vlastní tvorba) Aplikace jpivot potom na základě takto zvoleného detailu pohledu automaticky vytvoří MDX dotaz a pošle jej prostřednictvím OLAP serveru Mondrian do relační databáze. Výsledek potom znova zobrazí uţivateli, viz Obrázek 28 Změněná úroveň detailu a nový MDX dotaz. Obrázek 28 Změněná úroveň detailu a nový MDX dotaz (vlastní tvorba) 82

83 Změna definice výběrových podmínek, dalších dimenzí na jednotlivých osách atd., je díky rozbalovacím seznamům velmi komfortní, rychlá a přehledná. Viz Obrázek 29 Interaktivní definice MDX dotazu aplikací jpivot. Obrázek 29 Interaktivní definice MDX dotazu aplikací jpivot (vlastní tvorba) Pro potřeby uţivatele je moţné generovat i různé grafy podle úrovně zvoleného detailu. Viz Obrázek 30 Ukázka grafu na základě multidimenzionálních dat. 83

84 Obrázek 30 Ukázka grafu na základě multidimenzionálních dat (vlastní tvorba) 84

RELAČNÍ DATABÁZOVÉ SYSTÉMY

RELAČNÍ DATABÁZOVÉ SYSTÉMY RELAČNÍ DATABÁZOVÉ SYSTÉMY VÝPIS KONTROLNÍCH OTÁZEK S ODPOVĚDMI: Základní pojmy databázové technologie: 1. Uveďte základní aspekty pro vymezení jednotlivých přístupů ke zpracování hromadných dat: Pro vymezení

Více

Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz

Databázové systémy. Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Databázové systémy Doc.Ing.Miloš Koch,CSc. koch@fbm.vutbr.cz Vývoj databázových systémů Ukládání dat Aktualizace dat Vyhledávání dat Třídění dat Výpočty a agregace 60.-70. léta Program Komunikace Výpočty

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází 1 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Požadavky kreditového systému. Relační datový model, relace, atributy,

Více

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE 2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE Studijní cíl Tento blok je věnován základní syntaxi příkazu SELECT, pojmům projekce a restrikce. Stručně zde budou představeny příkazy

Více

4IT218 Databáze. 4IT218 Databáze

4IT218 Databáze. 4IT218 Databáze 4IT218 Databáze Osmá přednáška Dušan Chlapek (katedra informačních technologií, VŠE Praha) 4IT218 Databáze Osmá přednáška Normalizace dat - dokončení Transakce v databázovém zpracování Program přednášek

Více

8.2 Používání a tvorba databází

8.2 Používání a tvorba databází 8.2 Používání a tvorba databází Slide 1 8.2.1 Základní pojmy z oblasti relačních databází Slide 2 Databáze ~ Evidence lidí peněz věcí... výběry, výpisy, početní úkony Slide 3 Pojmy tabulka, pole, záznam

Více

Základní informace o co se jedná a k čemu to slouží

Základní informace o co se jedná a k čemu to slouží Základní informace o co se jedná a k čemu to slouží založené na relačních databází transakční systémy, které jsou určeny pro pořizování a ukládání dat v reálném čase (ERP, účetní, ekonomické a další podnikové

Více

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23 Stručný obsah 1. Stručný úvod do relačních databází 13 2. Platforma 10g 23 3. Instalace, první přihlášení, start a zastavení databázového serveru 33 4. Nástroje pro administraci a práci s daty 69 5. Úvod

Více

Databázové systémy Cvičení 5.2

Databázové systémy Cvičení 5.2 Databázové systémy Cvičení 5.2 SQL jako jazyk pro definici dat Detaily zápisu integritních omezení tabulek Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako

Více

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc. 1 Kurz Databáze Zpracování dat Doc. Ing. Radim Farana, CSc. Obsah Druhy dotazů, tvorba dotazu, prostředí QBE (Query by Example). Realizace základních relačních operací selekce, projekce a spojení. Agregace

Více

Databázové systémy. Cvičení 6: SQL

Databázové systémy. Cvičení 6: SQL Databázové systémy Cvičení 6: SQL Co je SQL? SQL = Structured Query Language SQL je standardním (ANSI, ISO) textovým počítačovým jazykem SQL umožňuje jednoduchým způsobem přistupovat k datům v databázi

Více

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů. Modely datové Existují různé úrovně pohledu na data. Nejvyšší úroveň je úroveň, která zachycuje pouze vztahy a struktury dat samotných. Konceptuální model - E-R model. Další úrovní je logická úroveň Databázové

Více

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph) Marketingová komunikace Kombinované studium Skupina N9KMK3PH (vm3aph) 2. a 3. soustředění Mgr. Pavel Vávra 9103@mail.vsfs.cz http://vavra.webzdarma.cz/home/index.htm Co nás čeká: 2. soustředění 16.1.2009

Více

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče. Primární a cizí klíč Kandidát primárního klíče (KPK) Je taková množina atributů, která splňuje podmínky: Unikátnosti Minimálnosti (neredukovatelnosti) Primární klíč (Primary Key - PK) Je právě jedna množina

Více

Analýza a modelování dat 3. přednáška. Helena Palovská

Analýza a modelování dat 3. přednáška. Helena Palovská Analýza a modelování dat 3. přednáška Helena Palovská Historie databázových modelů Relační model dat Codd, E.F. (1970). "A Relational Model of Data for Large Shared Data Banks". Communications of the ACM

Více

AdventureWorksDW2014 SQL Server Data Tools Multidimenziona lnı model Tabula rnı model Multidimenziona lnı mo d Tabula rnı mo d MS SQL Server 2016 Tabula rnı mo d Azure Analysis Services 16 3.2 Dimenzionální

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 8 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování Entita Entitní typ

Více

Obsah přednášky. Databázové systémy. Normalizace relací. Normalizace relací. Normalizace relací. Normalizace relací

Obsah přednášky. Databázové systémy. Normalizace relací. Normalizace relací. Normalizace relací. Normalizace relací Obsah přednášky Databázové systémy Logický model databáze normalizace relací normální formy tabulek 0NF, 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, DNF denormalizace zápis tabulek relační algebra klasické operace

Více

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal Databázové systémy - SQL * definice dat * aktualizace * pohledy Tomáš Skopal Osnova přednášky definice dat definice (schémat) tabulek a integritních omezení CREATE TABLE změna definice schématu ALTER TABLE

Více

Databáze Bc. Veronika Tomsová

Databáze Bc. Veronika Tomsová Databáze Bc. Veronika Tomsová Databázové schéma Mapování konceptuálního modelu do (relačního) databázového schématu. 2/21 Fyzické ik schéma databáze Určuje č jakým způsobem ů jsou data v databázi ukládána

Více

Hierarchický databázový model

Hierarchický databázový model 12. Základy relačních databází Když před desítkami let doktor E. F. Codd zavedl pojem relační databáze, pohlíželo se na tabulky jako na relace, se kterými se daly provádět různé operace. Z matematického

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování 4 fáze vytváření

Více

10. Datové sklady (Data Warehouses) Datový sklad

10. Datové sklady (Data Warehouses) Datový sklad 10. Datové sklady (Data Warehouses) Datový sklad komplexní data uložená ve struktuře, která umožňuje efektivní analýzu a dotazování data čerpána z primárních informačních systémů a dalších zdrojů OLAP

Více

Operátory ROLLUP a CUBE

Operátory ROLLUP a CUBE Operátory ROLLUP a CUBE Dotazovací jazyky, 2009 Marek Polák Martin Chytil Osnova přednášky o Analýza dat o Agregační funkce o GROUP BY a jeho problémy o Speciální hodnotový typ ALL o Operátor CUBE o Operátor

Více

Datové sklady. Ing. Jan Přichystal, Ph.D. 1. listopadu 2011. PEF MZLU v Brně

Datové sklady. Ing. Jan Přichystal, Ph.D. 1. listopadu 2011. PEF MZLU v Brně PEF MZLU v Brně 1. listopadu 2011 Úvod Intenzivní nasazení informačních technologií způsobuje hromadění obrovské spousty nejrůznějších údajů. Příkladem mohou být informace z obchodování s cennými papíry

Více

Databáze I. 5. přednáška. Helena Palovská

Databáze I. 5. přednáška. Helena Palovská Databáze I 5. přednáška Helena Palovská palovska@vse.cz SQL jazyk definice dat - - DDL (data definition language) Základní databáze, schemata, tabulky, indexy, constraints, views DATA Databáze/schéma

Více

Databáze I. Přednáška 4

Databáze I. Přednáška 4 Databáze I Přednáška 4 Definice dat v SQL Definice tabulek CREATE TABLE jméno_tab (jm_atributu typ [integr. omez.], jm_atributu typ [integr. omez.], ); integritní omezení lze dodefinovat později Definice

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL 4 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, datové typy, klauzule SELECT, WHERE, a ORDER BY. Doporučená

Více

5. Formalizace návrhu databáze

5. Formalizace návrhu databáze 5. Formalizace návrhu databáze 5.1. Úvod do teorie závislostí... 2 5.1.1. Funkční závislost... 2 5.1.2. Vícehodnotová závislost (multizávislost)... 7 5.1.3. Závislosti na spojení... 9 5.2. Využití teorie

Více

Marketingová komunikace. 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3bph)

Marketingová komunikace. 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3bph) Marketingová komunikace Kombinované studium Skupina N9KMK3PH (vm3bph) 3. soustředění Mgr. Pavel Vávra 9103@mail.vsfs.cz http://vavra.webzdarma.cz/home/index.htm Zdroje Studijní materiály Heleny Palovské

Více

Databáze. Logický model DB. David Hoksza

Databáze. Logický model DB. David Hoksza Databáze Logický model DB David Hoksza http://siret.cz/hoksza Osnova Relační model dat Převod konceptuálního schématu do logického Funkční závislosti Normalizace schématu Cvičení převod do relačního modelu

Více

5. Formalizace návrhu databáze

5. Formalizace návrhu databáze 5. Formalizace návrhu databáze 5.1. Úvod do teorie závislostí... 2 5.1.1. Funkční závislost... 2 5.1.2. Vícehodnotová závislost (multizávislost)... 7 5.1.3. Závislosti na spojení... 9 5.2. Využití teorie

Více

Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace

Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace Téma 2.2 Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace Obecný postup: Každá tabulka databáze by měla obsahovat pole (případně sadu polí), které jednoznačně identifikuje každý

Více

Úvod do databázových systémů. Ing. Jan Šudřich

Úvod do databázových systémů. Ing. Jan Šudřich Ing. Jan Šudřich jan.sudrich@mail.vsfs.cz 1. Cíl předmětu: Úvod do databázových systémů Poskytnutí informací o vývoji databázových systémů Seznámení s nejčastějšími databázovými systémy Vysvětlení používaných

Více

Informační systémy 2006/2007

Informační systémy 2006/2007 13 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení Informační systémy 2006/2007 Ivan Kedroň 1 Obsah Analytické nástroje SQL serveru. OLAP analýza

Více

Dotazovací jazyky I. Datová krychle. Soběslav Benda

Dotazovací jazyky I. Datová krychle. Soběslav Benda Dotazovací jazyky I Datová krychle Soběslav Benda Obsah Úvod do problematiky Varianty přístupu uživatelů ke zdrojům dat OLTP vs. OLAP Datová analýza Motivace Vytvoření křížové tabulky Datová krychle Teorie

Více

Analýza a modelování dat. Přednáška 8

Analýza a modelování dat. Přednáška 8 Analýza a modelování dat Přednáška 8 OLAP, datová kostka, dotazování nad kostkou Motivace většina DB relační zaznamenání vztahů pomocí logicky provázaných tabulek jakou mají velmi často vztahy povahu vztah

Více

3 zdroje dat. Relační databáze EIS OLAP

3 zdroje dat. Relační databáze EIS OLAP Zdroje dat 3 zdroje dat Relační databáze EIS OLAP Relační databáze plochá dvourozměrná tabulková data OLTP (Online Transaction Processing) operace selekce projekce spojení průnik, sjednocení, rozdíl dotazování

Více

Databáze SQL SELECT. David Hoksza http://siret.cz/hoksza

Databáze SQL SELECT. David Hoksza http://siret.cz/hoksza Databáze SQL SELECT David Hoksza http://siret.cz/hoksza Osnova Úvod do SQL Základní dotazování v SQL Cvičení základní dotazování v SQL Structured Query Language (SQL) SQL napodobuje jednoduché anglické

Více

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR): Mezi příkazy pro manipulaci s daty (DML) patří : 1. SELECT 2. ALTER 3. DELETE 4. REVOKE Jaké vlastnosti má identifikující relace: 1. Je relace, která se využívá pouze v případě modelovaní odvozených entit

Více

Databáze v MS ACCESS

Databáze v MS ACCESS 1 z 14 19.1.2014 18:43 Databáze v MS ACCESS Úvod do databází, návrh databáze, formuláře, dotazy, relace 1. Pojem databáze Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele,

Více

Databáze. datum jmeno prijmeni adresa_ulice adresa_mesto cislo_uctu platba zustatek

Databáze. datum jmeno prijmeni adresa_ulice adresa_mesto cislo_uctu platba zustatek Databáze datum jmeno prijmeni adresa_ulice adresa_mesto cislo_uctu platba zustatek 980103 Jan Novak Dlouha 5 Praha 1 9945371 100.00 100.00 980105 Jan Novak Dlouha 5 Praha 1 9945371 1500.00 1600.00 980106

Více

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev Úvod do databází Modelování v řízení Ing. Petr Kalčev Co je databáze? Množina záznamů a souborů, které jsou organizovány za určitým účelem. Jaké má mít přínosy? Rychlost Spolehlivost Přesnost Bezpečnost

Více

Obsah. Úvod do problematiky. Datový sklad. Proces ETL. Analýza OLAP

Obsah. Úvod do problematiky. Datový sklad. Proces ETL. Analýza OLAP Petr Jaša Obsah Úvod do problematiky Data vs. informace Operační vs. analytická databáze Relační vs. multidimenzionální model Datový sklad Důvody pro budování datových skladů Definice, znaky Schéma vazeb

Více

Analýza a modelování dat. Přednáška 9

Analýza a modelování dat. Přednáška 9 Analýza a modelování dat Přednáška 9 Další dotazování nad kostkou Rozšíření SQL99 rozšíření SQL99 (minulá přednáška): seskupovací operátory za GROUP BY CUBE statistiky dle řezů ROLLUP statistiky dle rolování

Více

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Návrh a tvorba WWW stránek 1/14. PHP a databáze Návrh a tvorba WWW stránek 1/14 PHP a databáze nejčastěji MySQL součástí balíčků PHP navíc podporuje standard ODBC PHP nemá žádné šablony pro práci s databází princip práce s databází je stále stejný opakované

Více

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Úvod 9

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Úvod 9 Obsah Úvod 9 Kapitola 1 Business Intelligence, datové sklady 11 Přechod od transakčních databází k analytickým..................... 13 Kvalita údajů pro analýzy................................................

Více

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška Databázové systémy Datová integrita + základy relační algebry 4.přednáška Datová integrita Datová integrita = popisuje pravidla, pomocí nichž hotový db. systém zajistí, že skutečná fyzická data v něm uložená

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Database Research Group Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz

Více

Databáze II. 1. přednáška. Helena Palovská palovska@vse.cz

Databáze II. 1. přednáška. Helena Palovská palovska@vse.cz Databáze II 1. přednáška Helena Palovská palovska@vse.cz Program přednášky Úvod Třívrstvá architektura a O-R mapování Zabezpečení dat Role a přístupová práva Úvod Co je databáze Mnoho dat Organizovaných

Více

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19 3 Obsah Novinky v tomto vydání 10 Význam základních principů 11 Výuka principů nezávisle na databázových produktech 12 Klíčové pojmy, kontrolní otázky, cvičení, případové studie a projekty 12 Software,

Více

Databáze I. 1. přednáška. Helena Palovská

Databáze I. 1. přednáška. Helena Palovská Databáze I 1. přednáška Helena Palovská palovska@vse.cz Co je databáze Mnoho dat Organizovaných používá se model uspořádání Řízený přístup k datům přijímá požadavky v jazyce modelu umožňuje sdílení dat

Více

Informační systémy ve zdravotnictví. 6. cvičení

Informační systémy ve zdravotnictví. 6. cvičení Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Informační systémy ve zdravotnictví 6. cvičení Ing. Petr Lukáš petr.lukas@nativa.cz Ostrava, 2014 Opakování Relace

Více

Databázové a informační systémy

Databázové a informační systémy Databázové a informační systémy doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Jak ukládat a efektivně zpracovávat

Více

kapitola 2 Datové sklady, OLAP

kapitola 2 Datové sklady, OLAP Tomáš Burger, burger@fit.vutbr.cz kapitola 2 Datové sklady, OLAP Získávání znalostí z databází IT-DR-3 / ZZD Co je to datový sklad A data warehouse is a subjectoriented, integrated, time-variant and nonvolatile

Více

Business Intelligence

Business Intelligence Business Intelligence Josef Mlnařík ISSS Hradec Králové 7.4.2008 Obsah Co je Oracle Business Intelligence? Definice, Od dat k informacím, Nástroj pro operativní řízení, Integrace informací, Jednotná platforma

Více

Databázové systémy trocha teorie

Databázové systémy trocha teorie Databázové systémy trocha teorie Základní pojmy Historie vývoje zpracování dat: 50. Léta vše v programu nevýhody poměrně jasné Aplikace1 alg.1 Aplikace2 alg.2 typy1 data1 typy2 data2 vytvoření systémů

Více

Databázové systémy úvod

Databázové systémy úvod Databázové systémy úvod Michal Valenta Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze c Michal Valenta, 2016 BI-DBS, LS 2015/16 https://edux.fit.cvut.cz/courses/bi-dbs/

Více

6. blok část C Množinové operátory

6. blok část C Množinové operátory 6. blok část C Množinové operátory Studijní cíl Tento blok je věnován problematice množinových operátorů a práce s množinovými operátory v jazyce SQL. Čtenáři se seznámí s operátory, UNION, a INTERSECT.

Více

DUM 12 téma: Příkazy pro tvorbu databáze

DUM 12 téma: Příkazy pro tvorbu databáze DUM 12 téma: Příkazy pro tvorbu databáze ze sady: 3 tematický okruh sady: III. Databáze ze šablony: 7 Kancelářský software určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie vzdělávací

Více

KIV/ZIS cvičení 5. Tomáš Potužák

KIV/ZIS cvičení 5. Tomáš Potužák KIV/ZIS cvičení 5 Tomáš Potužák Úvod do SQL (1) SQL (Structured Query Language) je standardizovaný strukturovaný dotazovací jazyk pro práci s databází Veškeré operace v databázi se dají provádět pomocí

Více

Relační datový model. Integritní omezení. Normální formy Návrh IS. funkční závislosti multizávislosti inkluzní závislosti

Relační datový model. Integritní omezení. Normální formy Návrh IS. funkční závislosti multizávislosti inkluzní závislosti Relační datový model Integritní omezení funkční závislosti multizávislosti inkluzní závislosti Normální formy Návrh IS Funkční závislosti funkční závislost elementární redundantní redukovaná částečná pokrytí

Více

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph) Marketingová komunikace Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph) 2. soustředění Mgr. Pavel Vávra 9103@mail.vsfs.cz http://vavra.webzdarma.cz/home/index.htm Minulé soustředění úvod

Více

Úvod do databázových systémů

Úvod do databázových systémů Úvod do databázových systémů Databáze je dnes velmi často skloňovaným slovem. Co se pod tímto termínem skrývá si vysvětlíme na několika následujících stranách a cvičeních. Databáze se využívají k ukládání

Více

Ing. Roman Danel, Ph.D. 2010

Ing. Roman Danel, Ph.D. 2010 Datový sklad Ing. Roman Danel, Ph.D. 2010 Co je to datový sklad a kdy se používá? Pojmem datový sklad (anglicky Data Warehouse) označujeme zvláštní typ databáze, určený primárně pro analýzy dat v rámci

Více

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS 7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13

Více

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS 7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13

Více

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS Relační databázový model Databázové (datové) modely základní dělení klasické databázové modely relační databázový model relační databázový model Základní konstrukt - relace relace, schéma relace atribut,

Více

SQL - trigger, Databázové modelování

SQL - trigger, Databázové modelování 6. přednáška z předmětu Datové struktury a databáze (DSD) Ústav nových technologií a aplikované informatiky Fakulta mechatroniky, informatiky a mezioborových studií Technická univerzita v Liberci jan.lisal@tul.cz

Více

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou: Relační databáze Pojem databáze, druhy databází Databází se myslí uložiště dat. V době začátků využívání databází byly tyto členěny hlavně hierarchicky, případně síťově (rozšíření hierarchického modelu).

Více

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky Otázka 20 A7B36DBS Zadání... 1 Slovníček pojmů... 1 Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky... 1 Zadání Relační DB struktury sloužící k optimalizaci

Více

Multi-dimensional expressions

Multi-dimensional expressions Multi-dimensional expressions Query sent to cube / returned from cube jazyk pro multidimenzionální dotazy ekvivalent SQL pro multidimenzionální databáze je jen prostředkem pro přístup k datům jako SQL

Více

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen 18.5.1974

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen 18.5.1974 základní informace Databázové systémy Úvodní přednáška předměty: KI/DSY (B1801 Informatika - dvouoborová) KI/P502 (B1802 Aplikovaná informatika) ukončení: Zápočet + Zkouška / 5kb ki.ujep.cz termínovník,

Více

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12 Jazyk SQL 1 Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal Valenta (FIT

Více

Michal Krátký, Miroslav Beneš

Michal Krátký, Miroslav Beneš Databázové a informační systémy Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava 5.12.2005 2005 Michal Krátký, Miroslav Beneš Databázové a informační systémy 1/24 Obsah

Více

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice) - 7.1 - Kapitola 7: Návrh relačních databází Nástrahy návrhu relačních databází Dekompozice (rozklad) Normalizace použitím funkčních závislostí Nástrahy relačního návrhu Návrh relačních databází vyžaduje

Více

Databázové systémy Cvičení 5.3

Databázové systémy Cvičení 5.3 Databázové systémy Cvičení 5.3 SQL jako jazyk pro manipulaci s daty SQL jako jazyk pro manipulaci s daty Aktualizace dat v SQL úprava záznamů v relacích (tabulkách) vložení záznamu INSERT INTO oprava záznamu

Více

POKROČILÉ POUŽITÍ DATABÁZÍ

POKROČILÉ POUŽITÍ DATABÁZÍ POKROČILÉ POUŽITÍ DATABÁZÍ Barbora Tesařová Cíle kurzu Po ukončení tohoto kurzu budete schopni pochopit podstatu koncepce databází, navrhnout relační databázi s využitím pokročilých metod, navrhovat a

Více

Kapitola 6: Omezení integrity. Omezení domény

Kapitola 6: Omezení integrity. Omezení domény - 6.1 - Omezení domény Referenční integrita Aserce Spouštěče (Triggers) Funkční závislosti Kapitola 6: Omezení integrity Omezení domény Omezení integrity zabraňují poškození databáze; zajišťují, že autorizované

Více

6. blok část B Vnořené dotazy

6. blok část B Vnořené dotazy 6. blok část B Vnořené dotazy Studijní cíl Tento blok je věnován práci s vnořenými dotazy. Popisuje rozdíl mezi korelovanými a nekorelovanými vnořenými dotazy a zobrazuje jejich použití. Doba nutná k nastudování

Více

J. Zendulka: Databázové systémy 4 Relační model dat 1

J. Zendulka: Databázové systémy 4 Relační model dat 1 4. Relační model dat 4.1. Relační struktura dat... 3 4.2. Integritní pravidla v relačním modelu... 9 4.2.1. Primární klíč... 9 4.2.2. Cizí klíč... 11 4.2.3. Relační schéma databáze... 13 4.3. Relační algebra...

Více

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D.

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D. VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ Ing. Lukáš OTTE, Ph.D. Ostrava 2013 Tento studijní materiál vznikl za finanční podpory

Více

Databázové a informační systémy Jana Šarmanová

Databázové a informační systémy Jana Šarmanová Databázové a informační systémy Jana Šarmanová Obsah Úloha evidence údajů, způsoby evidování Databázové technologie datové modely, dotazovací jazyky. Informační systémy Datové sklady Metody analýzy dat

Více

Databáze I. Přednáška 3

Databáze I. Přednáška 3 Databáze I Přednáška 3 Normální formy relací normální formy relací definují určité vlastnosti relací, aby výsledná databáze měla dobré vlastnosti, např. omezena redundance dat snažíme se převést navržené

Více

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel Obsah přednášky Databázové systémy Konceptuální model databáze Codd a návrh relační databáze fáze návrhu pojem konceptuální model základní pojmy entity, relace, atributy, IO kardinalita, 2 historie: RDBMS

Více

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Otázka č. 1 Datový model 1. Správně navržený ERD model dle zadání max. 40 bodů teoretické znalosti konceptuálního modelování správné

Více

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Kritéria hodnocení praktické maturitní zkoušky z databázových systémů Otázka č. 1 Datový model 1. Správně navržený ERD model dle zadání max. 40 bodů teoretické znalosti konceptuálního modelování správné

Více

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Základy informatiky. 08 Databázové systémy. Daniela Szturcová Základy informatiky 08 Databázové systémy Daniela Szturcová Problém zpracování dat Důvodem je potřeba zpracovat velké množství dat - evidovat údaje o nějaké skutečnosti. o skupině lidí (zaměstnanců, studentů,

Více

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů - 1.1 - Kapitola 1: Úvod Účel databázových systémů Pohled na data Modely dat Jazyk pro definici dat (Data Definition Language; DDL) Jazyk pro manipulaci s daty (Data Manipulation Language; DML) Správa

Více

Základy business intelligence. Jaroslav Šmarda

Základy business intelligence. Jaroslav Šmarda Základy business intelligence Jaroslav Šmarda Základy business intelligence Business intelligence Datový sklad On-line Analytical Processing (OLAP) Kontingenční tabulky v MS Excelu jako příklad OLAP Dolování

Více

Databázové systémy. Cvičení 3

Databázové systémy. Cvičení 3 Databázové systémy Cvičení 3 Normální formy relací normální formy relací definují určité vlastnosti relací, aby výsledná databáze měla dobré vlastnosti, např. omezena redundance dat snažíme se převést

Více

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1 Metodický list č. 1 Cíl: Cílem předmětu je získat přehled o možnostech a principech databázového zpracování, získat v tomto směru znalosti potřebné pro informačního manažera. Databázové systémy, databázové

Více

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek 5 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, Spojení tabulek, agregační dotazy, jednoduché a složené

Více

U Úvod do modelování a simulace systémů

U Úvod do modelování a simulace systémů U Úvod do modelování a simulace systémů Vyšetřování rozsáhlých soustav mnohdy nelze provádět analytickým výpočtem.často je nutné zkoumat chování zařízení v mezních situacích, do kterých se skutečné zařízení

Více

Distanční opora předmětu: Databázové systémy Tématický blok č. 3: OLAP, operátory CUBE a ROLLUP Autor: RNDr. Jan Lánský, Ph.D.

Distanční opora předmětu: Databázové systémy Tématický blok č. 3: OLAP, operátory CUBE a ROLLUP Autor: RNDr. Jan Lánský, Ph.D. Distanční opora předmětu: Databázové systémy Tématický blok č. 3: OLAP, operátory CUBE a ROLLUP Autor: RNDr. Jan Lánský, Ph.D. Obsah kapitoly 1 OLTP a OLAP 1.1 Datový sklad 1.2 Datová kostka 2 OLAP dotazy

Více

Databáze 2013/2014. Konceptuální model DB. RNDr. David Hoksza, Ph.D.

Databáze 2013/2014. Konceptuální model DB. RNDr. David Hoksza, Ph.D. Databáze 2013/2014 Konceptuální model DB RNDr. David Hoksza, Ph.D. http://siret.cz/hoksza Osnova Organizace Stručný úvod do DB a DB modelování Konceptuální modelování Cvičení - ER modelování Náplň přednášky

Více

Materiál byl vytvořen v rámci projektu Nové výzvy, nové příležitosti, nová škola

Materiál byl vytvořen v rámci projektu Nové výzvy, nové příležitosti, nová škola Materiál byl vytvořen v rámci projektu Nové výzvy, nové příležitosti, nová škola Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Co je to databáze? Jaké

Více

Databázové systémy. Ing. Radek Holý

Databázové systémy. Ing. Radek Holý Databázové systémy Ing. Radek Holý holy@cvut.cz Literatura: Skripta: Jeřábek, Kaliková, Krčál, Krčálová, Kalika: Databázové systémy pro dopravní aplikace Vydavatelství ČVUT, 09/2010 Co je relační databáze?

Více

Databázové systémy. 10. přednáška

Databázové systémy. 10. přednáška Databázové systémy 10. přednáška Business Intelligence Poprvé byl termín BI použit Gartnerem a dále pak popularizován Howardem Dresnerem jako: proces zkoumání doménově strukturovaných informací za účelem

Více

Profilová část maturitní zkoušky 2017/2018

Profilová část maturitní zkoušky 2017/2018 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2017/2018 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více