UNICORN COLLEGE Katedra informačních technologií
BAKALÁŘSKÁ PRÁCE Výstavba datového skladu s použitím open source technologií
Autor: Alexandr Sevrjukov Vedoucí práce: Ing. Miroslav Ždárský 2013, Praha
Čestné prohlášení Prohlašuji, že jsem svou bakalářskou práci na téma „Výstavba datového skladu s použitím open source technologií“ vypracoval samostatně pod vedením vedoucího bakalářské práce a s použitím výhradně odborné literatury a dalších informačních zdrojů, které jsou v práci citovány a jsou také uvedeny v seznamu literatury a použitých zdrojů. Jako autor této bakalářské práce dále prohlašuji, že v souvislosti s jejím vytvořením jsem neporušil autorská práva třetích osob a jsem si plně vědom následků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb.
V Praze dne
……………..
…….……………………………
Poděkování Děkuji vedoucímu bakalářské práce Ing. Miroslavovi Žďárskému za pomoc s výběrem tématu a rady při zpracování mé bakalářské práce.
Výstavba datového skladu s použitím open source technologií Building data warehouse using open source technologies
6
Abstrakt Práce se zabývá využitím open source a bezplatného software pro vybudování datového skladu. Motivací je navrhnout implementací datového skladu při malou či střední firmu bez nutnosti pořízení komerčního software. Práce stručně rozebírá význam datového skladu a identifikuje jeho základní komponenty. Druhá část práce je věnována výběru technologií a posouzení jejích kvalit a vhodnosti pro splnění stanoveného cíle. Závěrečná část pak popisuje ukázkovou implementaci datového skladu s použitím zvolených softwarových produktů, včetně ukázky reportingu.
Klíčová slova: open source, svobodný software, datový sklad, business intelligence, databáze, ETL, reporting
Abstract This bachelor thesis discusses usage of open source and free software for building a data warehouse. The goal is to design a data warehouse implementation for a small or medium business without necessity of purchasing commercial software. The thesis briefly explains data warehouse purpose and identifies its basic components. The second part is dedicated to choice of the concrete technologies and evaluation of their properties in order to achieve the defined goal. The last part describes a referential implementation of data warehouse, using the selected software products, also including reporting examples.
Keywords: open source, free software, data warehouse, business intelligence, databáze, ETL, reporting
7
Obsah 1.
Úvod ................................................................................................................................. 10
2.
Význam datového skladu a jeho struktura ....................................................................... 12
3.
2.1
Účel a význam datového skladu............................................................................... 12
2.2
Základní struktura datového skladu ......................................................................... 13
2.3
Softwarové komponenty .......................................................................................... 15
Výběr technologií pro implementaci................................................................................ 16 3.1 3.1.1
Scriptella ETL .................................................................................................. 17
3.1.2
Pentaho Data Integration (Kettle) .................................................................... 19
3.1.3
CloverETL........................................................................................................ 22
3.1.4
Talend Data Integration.................................................................................... 25
3.2
Relační databáze....................................................................................................... 29
3.2.1
MySQL............................................................................................................. 30
3.2.2
PostgreSQL ...................................................................................................... 34
3.2.3
Oracle Database Express Edition ..................................................................... 37
3.2.4
Firebird ............................................................................................................. 38
3.2.5
Microsoft SQL Express Edition ....................................................................... 41
3.3
Reportingový software ............................................................................................. 42
3.3.1
JasperReports ................................................................................................... 43
3.3.2
BIRT................................................................................................................. 46
3.3.3
Pentaho Reporting ............................................................................................ 48
3.4 4.
ETL........................................................................................................................... 16
Závěr teoretické části ............................................................................................... 50
Praktická část – implementace ukázkového datového skladu.......................................... 52 4.1
Ukázkové řešení – popis problematiky .................................................................... 52
4.2
Ukázkové řešení – implementace............................................................................. 53
4.2.1
Architektura řešení ........................................................................................... 53
4.2.2
Datový sklad – ETL a databáze........................................................................ 54
4.2.3
Reporting .......................................................................................................... 62
5.
Závěr................................................................................................................................. 67
6.
Seznam použitých zdrojů ................................................................................................. 69
7.
Seznam obrázků ............................................................................................................... 76
8
8.
Seznam příloh................................................................................................................... 77 8.1
CD s výstupy z praktické části ................................................................................. 78
8.2
Paměťová karta SD s výstupy z praktické části ....................................................... 79
9
1. Úvod S rostoucím množstvím podnikových dat přestává být doména BI (Business Intelligence) záležitostí pouze velkých korporací. I manažeři malých a středních firem mohou opřít svoje rozhodování nejen o svoje zkušenosti a cítění, ale i o reálná data z provozních systémů. V dnešní době je již téměř nemyslitelné, aby společnost fungovala bez podpory informačních technologií, a v každé firmě existuje množství dat, ať už uložených v relačních databázích nebo jiných datových zdrojích, které mohou obsahovat cenné informace pro řízení a operativní i strategické rozhodování. Velké podniky obvykle provozují celá specializovaná oddělení, která řeší problematiku Business Intelligence. Tato oddělení mají na starosti budování a správu datových skladů a reportovacích nástrojů, tvorbu a distribuci reportů konečným konzumentům aj. Pořízení a provoz komerční nástrojů, určených pro BI doménu, bývají však dost nákladné a firmy střední či menší velikosti si nemohou dovolit do těchto komerčních nástrojů investovat. Řešením v této situaci je vybudovat podnikovou Business Intelligence za pomocí nástrojů a technologií, které jsou k dispozici zadarmo. V současné době (rok 2013) jich existuje již celá řada a jsou kvalitní a propracované natolik, že umožňují postavit plnohodnotné řešení, dostačující potřebám menších a středních firem. Základem každé implementace BI v podniku je datový sklad (Data Warehouse, DWH – i v česky mluvícím prostředí se často používá anglická terminologie). Tato práce si klade za cíl provést průzkum dostupných open source nástrojů a technologií, posoudit jejich vlastnosti, kvality a vhodnost použití pro výstavbu námi uvažovaného datového skladu pro potřeby střední či malé firmy. Pro účely této práce budeme zkoumat nejen „open source“ software, ale i „svobodný“ software s uzavřeným zdrojovým kódem. V hledáčku bude tedy veškerý software, jehož licenční podmínky umožňují získání a použití softwaru zadarmo1. Práce je rozdělena na tři části. První část se věnuje krátkému objasnění základních teoretických principů, rozebírá strukturu datového skladu a identifikuje komponenty potřebné k jeho vytvoření. Druhá část rozebírá vlastnosti dostupných nástrojů a technologií, porovnává
1
Pojmy „open source“ a „svobodný software“ se v běžném vyjadřování často zaměňují. Bližší informace po-
skytne například článek Proč je užívání pojmu ,,Free Software'' (svobodný software) lepší než ,,Open Source'' (otevřený zdrojový kód). FREE SOFTWARE FOUNDATION, Inc. Operační systém GNU [online]. [cit. 201212-20]. Dostupné z:
10
je a zkoumá jejich vhodnost pro vybudování datového skladu. Poslední – praktická – část obsahuje ukázkovou implementaci řešení, kdy jsou vybrané produkty nakonfigurovány a propojeny spolu tak, aby tvořily ač malý, ale zcela funkční datový sklad.
11
2. Význam datového skladu a jeho struktura Tato kapitola se zabývá stručným teoretickým úvodem do problematiky DWH, vysvětluje strukturu typického datového skladu a identifikuje jeho komponenty, jejíchž implementací konkrétními produkty se zabývá následující kapitola.
2.1 Účel a význam datového skladu Datový sklad (anglicky Data Warehouse, zkráceně DWH) je specializována databáze, která obsahuje data ve formátu vhodném pro reportování a analýzu. Pod pojmem „data“ v této definici máme na mysli data z celé řady informačních systémů v podniku, která jsou sdružena a integrována na jednom centrálním místě – datovém skladu. Před vložením do datového skladu jsou data očištěna a transformována tak, aby byla konzistentní, uniformní, srozumitelná a snadno analyzovatelná. Existence datového skladu poskytuje řadu výhod. Díky centralizovanému řešení umožňuje snadný přístup k datům všem uživatelům. Odstiňuje uživatele od potřeby rozumět databázím jednotlivých zdrojových systémů a vlastnit přístupová práva ke každému z nich. Díky počáteční transformaci jsou data různých systémů upravena tak, aby byla v jednotném formátu a všeobecně srozumitelná, což zjednodušuje úlohu jak vytváření, tak interpretace reportů. A nakonec, data jsou v datovém skladu prezentována konečnému uživateli v takové podobě, která je výhodná pro analytické dotazování.2 V provozních systémech jsou databáze obvykle navrženy a optimalizovány tak, aby poskytovaly rychlou odezvu na dotazy modifikující data – insert, update nebo delete, a aby umožňovala provádění transakcí při současném přístupu mnoha uživatelů najednou. V kontextu datových skladů se těmto systémům proto někdy říká transakční systémy. Databáze transakčních systémů jsou většinou normalizované a nejsou připraveny pro exekuci rozsáhlých analytických a agregačních dotazů nad velkými množinami dat. Oproti tomu databáze datového skladu je optimalizována tak, aby provedení takto náročných dotazů bylo snadnější. Toho lze dosáhnout mimo jiné i částečnou denormalizací dat a použití některého se specializovaných schémat pro prezentaci dat (dimenzionální přístup – 2
KIMBALL, Ralph a Margy ROSS. The data warehouse toolkit: the complete guide to dimensional modeling.
2nd ed. New York: Wiley, c2002. ISBN 978-0471200246. str. 3-4
12
tabulky fakt, tabulky dimenzí, OLAP kostky aj.).3 Spouštění analytických dotazů nad oddělenou DWH databází přináší rovněž tu výhodu, že „šetříme“ provozní systémy a nezpůsobujeme jejich zpomalení během vykonávání těchto dotazů. Datový sklad tedy slouží jako zdroj dat pro vytváření reportů (jak ad-hoc, tak pravidelných), pro analytické aplikace, pro data mining, modelovací nástroje aj. Tyto aplikace, konzumující data z DWH databáze, označujeme souhrnným pojmem Data Access Tools. Někdy se logicky řadí ještě do datového skladu samotného, jindy se považují naopak za externí aplikace, které již do datového skladu nepatří. Nyní se pojďme podívat trochu podrobněji, jak je typický datový sklad implementován.
2.2 Základní struktura datového skladu Datový sklad je tvořen řadou spolupracujících komponent. Následující obrázek ukazuje jeho základní strukturu.4
Obrázek 1 - Struktura datového skladu
Zdroj: vlastní zpracování
Provozní systémy slouží jako zdroj dat pro datový sklad. Nejsou součástí datového skladu samotného, v diagramu jsou zastoupeny pro větší názornost. Zdrojová data z provozních sys3
Detailní popis datových schémat datového skladu přesahuje rámec této práce.
4
KIMBALL, Ralph a Margy ROSS. The data warehouse toolkit: the complete guide to dimensional modeling.
2nd ed. New York: Wiley, c2002. ISBN 978-0471200246. str. 6-15
13
témů jsou obvykle poskytována transakčními RDBMS databázemi, nemusí tomu být však vždy. Jako vstup mohou posloužit i textové či CSV soubory, sešity ve formátu MS Excel a jiná data generovaná provozními systémy, či dokonce vystavené webové nebo ESB služby. Úkolem datového skladu je tato data nejprve ze všech zdrojů získat (Extract). Technologie použité v DWH si v tomto kroku musí umět poradit i s velmi heterogenním aplikačním prostředím - musí umět pracovat s rozlišnými typy databázi, disponovat nástroji pro parsování textových i jiných souborů, připojovat se na sdílená disková úložiště a v případě potřeby komunikovat i speciálními aplikačními rozhraními. Data načtená ze zdrojových systémů se nazývají surová data (raw data). Surová data je následně potřeba podrobit čištění, unifikaci, deduplikaci a reformátování, kombinování z různých zdrojů atd. Tyto manipulace jsou prováděny v části datového skladu, který se nazývá Data Staging Area. Data Staging Area má svojí vlastní databázi, která slouží k dočasnému uložení dat procházejících transformací. Poté, co jsou data takto připravena, následuje jejich načtení (Load) do Data Presentation Area. Data presentation Area je část datového skladu, která je již vystavena konečným konzumentům pro spouštění analytických dotazů, tvorbu reportu aj. Jedná se o samostatnou databázi, případně vícero databází nebo schémat. Data v této části datového skladu jsou obvykle uspořádána do tzv. Data Martů. Data Mart je množina dat relevantních pro konkrétní oddělení v podniku (např. Finance, Prodej, Marketing), případně odrážejících některý z business procesů. Data Marty, na rozdíl od běžných aplikačních databází, neužívají normalizovaného schématu pro prezentaci dat, ale místo toho ukládají data v tzv. dimenzionálním schématu. V dimenzionálním schématu mohou být data záměrně částečně redundantní, za účelem výrazného zjednodušení a zrychlení analytických dotazů nad masivním množstvím dat díky zmenšení počtu spojení tabulek (JOIN). Poslední vrstvou DWH jsou Data Access Tools, které přistupují k dimenzionálním datům v datamartech. Někdy jsou Data Access Tools považovány za samostatnou vrstvu, již nepatřící do DWH. Nástroje v této vrstvě slouží k přípravě informací pro konečné konzumenty – jedná se reporty, analýzy a modely a další formy finální prezentace dat.
14
2.3 Softwarové komponenty Pojďme nyní identifikovat, které softwarové komponenty jsou potřeba, chceme-li vybudovat nový datový sklad.
ETL (Extract–Transform–Load) ETL engine má za úkol načtení dat, jejich transformaci a uložení do cílové destinace. Získává surová data ze zdrojových systémů, nahrává je do Data Staging Area, provádí nad nimi potřebné operace a dále je ukládá do data martů v Data Presentation Area. ETL musí umět načítat data z heterogenních zdrojů, podporovat v případě potřeby i komplexní transformační definice a postupy, dále musí umožnit spouštět pravidelné automatické úlohy a nejlépe i disponovat přehledným návrhovým rozhraním.
Relační databáze Relační databáze tvoří základ datového skladu. Slouží jako dočasné úložiště dat v Data Staging Area a zároveň jako trvalé úložiště pro datamarty v Data Presentation Area. Nakonec slouží jako úložiště metadat (datových zdrojů, definic transformací, popisů tabulek) a jako základ pro ETL a reportovací nástroje, které do ní ukládají data potřebná ke svému běhu. Databáze musí být dostatečně výkonná, robustní a musí umožnit použití optimalizačních technik pro zrychlení práce se záznamy. Ve velkých robustních řešeních nelze vylučovat použití vícero instancí pro každý z výše popsaných účelů, či dokonce jiný, specializovaný typ databáze pro Data Presentation Area, navržený s ohledem na velký nápor čtecích operací.
Analytická / reportovací platforma Ačkoli někdy již nejsou Data Access Tools zařazovány do datového skladu, budeme v našem řešení pro malou či střední firmu uvažovat i nástroj pro tvorbu a správu reportů pro koncové uživatele. Po reportovacím nástroji budeme požadovat možnost snadné tvorby ad-hoc i pravidelných reportů, pokročilé možnosti konfigurace, možnost nastavovat přístupová práva uživatelů k reportům, definici pravidelných úloh pro spouštění reportů a přehledné a přívětivé uživatelské rozhraní.
V následující kapitole budeme již zkoumat konkrétní implementace těchto komponent proto, abychom mohli funkční datový sklad implementovat.
15
3. Výběr technologií pro implementaci V této kapitole se budeme zabývat konkrétním výběrem a porovnáním technologií, které využijeme jako základní prvky při budování datového skladu. Technologie rozdělíme do tří kategorií, které jsou popsány v předchozí kapitole: ETL nástroje, relační databáze a reportingové nástroje. Každou z kategorií budeme pak zkoumat v jednotlivých subkapitolách. Na závěr z každé kategorie vybereme jeden konkrétní nástroj, který použijeme při sestavení funkčního ukázkového řešení.
3.1 ETL V této subkapitole budeme hodnotit volně dostupné ETL (Extract-Transform-Load) nástroje. ETL můžeme označit za „mozek“ celého DWH řešení, protože je to právě ta komponenta, která data – ve výsledku to, co konečné konzumenty hlavně zajímá - připravuje. Úkolem ETL komponenty je především extrakce a transformace dat. Při hodnocení jednotlivých produktů se budeme dívat na různá kritéria: jaké datové zdroje (relační databáze i jiné typy vstupů) jsou podporovány, nakolik složitá je tvorba a správa transformačních skriptů a definic, zda nástroj disponuje uživatelským rozhraním pro návrh transformací či pouze zpracovává ručně psané skripty, zda podporuje načasování pravidelně spouštěných úloh a na to, nakolik je nástroj výkonný a efektivní. Dále také budeme posuzovat kvalitu dokumentace a možnosti získání dodatečných informací o produktu (komunita, fóra, newslettery aj). Jako „kandidáty“ pro hodnocení bylo vybráno sedm následujících ETL technologií: Scriptella ETL, Pentaho Data Integration (Kettle), CloverETL, Talend Data Integration, Jaspersoft ETL, Apatar a KETL. Při bližším zkoumání však bylo záhy zjištěno, že skutečná nabídka produktů není bohužel tak široká. Apatar skončil s vývojem svého software v roce 2011,5 KETL dokonce o tři roky dříve, tedy v roce 2008.6 Přesto, že poslední stabilní verze obou produktů jsou dostupné ke stažení i nadále, není dle mého názoru vhodné stavět řešení na „mrtvém“ softwaru, který již nebude nikdy v budoucnu rozvíjen. Portfolio open source ETL nástrojů se dále zmenšuje o to, že Jaspersoft ETL je postaven na platformě Talend Data
5
Apatar
Data
Integration/ETL.
SourceForge
[online].
2013
[cit.
2013-04-20].
Dostupné
z:
6
KETL. SourceForge [online]. 2013 [cit. 2013-04-20]. Dostupné z:
16
Integration a jedná se v podstatě o totožný produkt.7 Tyto dva produkty proto nebudeme zkoumat zvlášť a podrobně se podíváme jen na Talend Data Integration.
3.1.1 Scriptella ETL Scriptella je lightweight, open source ETL nástroj napsaný v jazyce Java. Scriptella je distribuována pod licencí Apache License 2.0.8 Poslední stabilní verze produktu je 1.1, zveřejněná v prosinci 2012. Produkt si zakládá na jednoduchosti, k dispozici je jediná edice, ve formě JAR (Java Archive) souboru. Kromě binární distribuce je možno rovněž stáhnout i zdrojové kódy včetně potřebných knihoven a produkt zkompilovat vlastnoručně.
Technické detaily
Nástroj, jak název trochu napovídá, je určen pro spouštění transformačních skriptů. Skripty pro nástroj jsou psány v jazyce XML. Struktura skriptu je dost jednoduchá. Nejprve jsou definovány datové zdroje, které slouží jako vstupy a výstupy transformace. Dále jsou definovány dotazy pro načtení dat, a pro každý z dotazů je definována výkonná část, která typicky data někam zapíše. Syntaxe jak dotazu, tak výkonné části záleží na typu datového zdroje, se kterým se pracuje. Typicky je to SQL dotaz, ale může to být i regulární výraz v případě textového/CSV souboru, LDAP query nebo i Java kód. Podporováno je i vyhodnocování výrazů v syntaxi JEXL (Apache Commons Java Expression Language).9 Datové zdroje jsou realizovány skrze vrstvu tzv. „drivers“, které slouží jako adaptery pro standardní Java JDBC drivers a dále pro práci s ne-databázovými zdroji dat. Kromě řady nejrozšířenějších relačních databází jsou podporovány i textové/CSV soubory, sešity ve formátu MS Excel, XPath, Velocity šablony, LDAP, odesílání emailů skrze SMTP a JEXL. Je
7
Jaspersoft ETL Resources. Jaspersoft ETL: The Open Source Data Integration Platform [online]. 2013 [cit.
2013-04-20]. Dostupné z: 8
Scriptella
ETL
Project
License.
Scriptella
[online].
2013
[cit.
2013-04-15].
Dostupné
z:
9
Scripts Syntax. Scriptella ETL Reference Documentation [online]. 2013 [cit. 2013-04-15]. Dostupné z:
17
přítomen i generický JDBC adaptér, umožňující použití libovolné databáze, ke které existuje JDBC driver.10 Scriptella je spouštěna voláním z příkazové řádky s parametrem specifikujícím umístění souboru s transformačním skriptem. Pro běh programu je nutné nainstalovat Java Runtime Environment ve verzi 5 nebo vyšší. Scriptella neumožňuje naplánování automatických úloh. Může být integrována s nástrojem Apache Ant, kde transformace může být spouštěna jako task s potřebnými parametry.
Grafické uživatelské rozhraní
Kvůli své jednoduchosti Scriptella nedisponuje žádným grafickým uživatelským rozhraním, a to ani jak pro administraci, tak ani pro tvorbu skriptů.
Dokumentace, komunita a podpora
Referenční dokumentace je dostupná na oficiálních stránkách produktu. Dokumentace není příliš objemná, nicméně vzhledem k povaze produktu je vyčerpávající. Kromě uživatelské příručky je k dispozici JavaDocs API, které poslouží hlavně vývojářům, a dále DTD reference popisující strukturu transformačního XML souboru. Komunita není příliš velká, oficiální stránky doporučují případné otázky pokládat na webu Stackoverflow nebo v Google User Group „Scriptella ETL“.
Celkové hodnocení
Scriptella je minimalistický, nicméně zajímavý ETL nástroj, který i přes svojí jednoduchost nabízí vcelku široké možnosti interoperability mezi rozdílnými datovými zdroji. Své místo najde však spíše v méně náročných aplikacích a řešeních, kde potřebná datová konverze není příliš komplikovaná. Proti použití Scriptelly jako ETL komponenty v datovém skladu mluví hodně argumentů – velké množství ručního práce při tvorbě a psaní skriptů, obtížná a pracná definice náročnějších transformačních úloh, absence plánování úloh, prakticky neexistující
10
Scriptella ETL Drivers Matrix. Scriptella ETL Reference Documentation [online]. 2013 [cit. 2013-04-15].
Dostupné z:
18
přístup pro centrální správu datových zdrojů a transformací a chybějící uspokojivé logování a monitoring.
3.1.2 Pentaho Data Integration (Kettle) Pentaho Data Integration (zkráceně PDI) je produktový balíček (souhrn aplikací) vyvíjený společností Pentaho, určený pro návrh a vykonávání ETL transformací. Balíček také nese neoficiální název „Kettle“ a je součástí širší produktové rodiny Pentaho Business Analytics. Data Integration je nabízeno jak v komerční, tak v bezplatné komunitní edici. Komunitní edice je ochuzená o některé funkcionality a komponenty, například plnohodnotný server pro správu a běh transformací. Komunitní edice je distribuována pod licencí Apache License 2.0 11, poslední stabilní release byl zveřejněn v listopadu roku 2012 a nese číslování 4.4. Dále v textu se budeme zabývat právě touto bezplatnou edicí.
Technické detaily
Balíček Kettle se skládá z několika komponent. Ústředním programem balíčku je grafický designer, který je pojmenován Spoon (jak uvidíme i dále, všechny názvy komponent v rámci balíčku nesou kuchyňskou tématiku). Spoon je implementován v jazyce Java, nevychází přitom předem ze žádné hotové platformy (například Eclipse), i když určitá podobnost s Eclipse je patrná. Díky Javě je program multiplatformní a je možno jej používat na jakémkoli počítači s nainstalovaným prostředím JRE. Aplikace umožňuje graficky navrhovat transformační skripty. Pro svojí práci potřebuje program předem vytvořit repository, do které ukláda veškeré skripty i metadata. Repository může být uložena buď v relační databázi (podporována je široká řada RDBMS) nebo v souborovém systému. Přístup k repository v databázi je řízen uživatelským jménem heslem, teoreticky to tedy umožňuje práci více uživatelů současně. Synchronizace však není řešena dostatečně uspokojivě, při pokusech uložit ten samý skript současně dvěma různými uživateli program generoval chybová hlášení a „zamrzal“. ETL Skripty jsou v Pentahu jsou rozděleny na dva typy – Joby a Transformace. Transformace jsou skripty nízké úrovně, jejichž účelem by měla být pouhá technická manipulace
11
PDI
license.
Pentaho
Data
Integration
[online].
19
2013
[cit.
2013-04-21].
Dostupné
z:
s daty. Joby jsou úlohy stojící o jednu úroveň výše. Úlohou jobů je zajistit vše proto, aby transformace mohly pracovat správně – ověřit existenci tabulek nebo souborů, spustit požadované skripty, ověřit validitu XML vstupů, přenést soubory přes FTP, odeslat emailovou zprávu aj. Joby mohou také pouštět jiné joby, čímž můžeme řídit a modelovat běh složitějších ETL procesů.12 Při návrhu transformací lze využít skutečně široké palety komponent. Kromě běžných datových zdrojů a adaptérů pro relační databáze, textové soubory, XML a sešity MS Excel jsou podporovány i některé komerční informační systémy (např. SAS, SAP, Salesforce) a dále užitečné adaptéry pro formáty jako Yaml, RSS a emailové zprávy. Podporována jsou i některá „BigData“ a NoSQL řešení – například Hadoop, Cassandra, HBase a MongoDb. Nabídka samotných transformačních komponent je standardní, máme na výběr ze široké řady funkcí pro třídění, vyhledávání, mapování dat, práci s textovými řetězci, rozdělení a spojení sloupců, normalizaci, denormalizaci aj. Pro ulehčení práce s naplněním datamartů datových skladů je v nabídce i speciální komponenta pro pohodlný update tabulek dimenzí. Slabou stránkou návrhového prostředí je ovšem to, že chybí možnost definovat uživatelské customizované transformační kroky nebo alespoň utilitní funkce v některém ze skriptovacích jazyků či přímo v Javě.13 Podpora metadat sdílených komponentami v rámci jednoho repozitáře není příliš rozsáhlá, omezuje se v podstatě jen na definici databázových spojení a možnost definice uživatelských proměnných, které pak lze využít při konfiguraci komponent. Navržené joby a transformace je možné spouštět jak z přímo ze Spoon editoru, tak externě. Pro externí spouštění slouží programy Kitchen a Pan. Kitchen slouží ke spouštění jobů, Pan ke spuštění transformací. Oba programy jsou napsány v Javě, jedná se o utility bez grafického rozhraní, ovládané pomocí parametrů předávaných z příkazové řádky. Programy umožňují spouštět skripty jak přímo z repozitáře (ať už databázového nebo založeného na souborech), tak samostatné skripty exportované ze Spoonu do XML formátu. V základním komunitní balíčku je dále nabízen malý webový server pod názvem Carte, který poslouží ke vzdáleném spouštění jobů a transformací. Server nedisponuje žádným
12
Job
Entry
Reference.
Pentaho
Infocenter
[online].
2013
[cit.
2013-04-22].
Dostupné
z:
http://infocenter.pentaho.com/help/index.jsp?topic=%2Fpdi_user_guide%2Ftopic_pdi_usr_job_reference.html 13
Transformation Step Reference. Pentaho Infocenter [online]. 2013 [cit. 2013-04-22]. Dostupné z:
20
uživatelským administračním rozhraním, nepodporuje ani načasování pravidelných úloh. Jeho jedinou funkcí je přijímat definice skriptů skrze HTTP protokol a vykonávat je. Carte se však stává silným nástrojem ve chvíli, kdy použijeme několik jeho instancí na různých serverech a transformaci navrhneme tak, aby využívala několika Carte instancí v clusteru. Pokud je transformace správně navržena, můžeme její vykonávání rozložit na vícero fyzických uzlů.14
Dokumentace, komunita a podpora
Komunitní edice platformy sice disponuje poměrně velkým množstvím dokumentace, její kvalita je však bohužel není vždy zcela uspokojivá. Mezi dva hlavní zdroje informací patří Pentaho Infocenter a Pentaho Wiki. Účelem Infocentra je poskytnout především instalační a uživatelské návody pro všechny produkty nabízené společností Pentaho (tedy nejenom Data Integration). Jsou zde sdruženy manuály jak ke komunitním, tak se komerčně dostupným verzím produktů, což poněkud stěžuje úlohu hledání potřebných informací. Stejné návody jako v Infocentru jsou částečně duplikovány ve Wiki (postavené na technologii Confluence), avšak v o něco horší kvalitě. Wiki nabízí, stejně jako Infocenter, například uživatelský manuál k editoru Spoon, některé stránky jsou však buď zastaralé (popisují předchozí release aplikace) nebo jsou nedokončené. Orientace ve Wiki je poměrně obtížná, mnohdy je problematické najít stránku s požadovaným tématem a není jisté, zda uvedené informace jsou správné a platné. K dalším zdrojům informací patří aktivní Pentaho Community Forums, Pentaho User Groups, kde je díky dost aktivní komunitě možno dostat odpovědi na otázky, které se nám nepodařilo dohledat, což může částečně kompenzovat absenci kvalitnější dokumentace.
Celkové hodnocení
Pentaho Data Integration je solidní ETL platforma, která i v Community edici nabízí dostatečné nástroje pro tvorbu a provádění komplexních ETL úloh. Oproti Enterprise verzi je ochuzena především o plnohodnotný server pro plánování a vykonávání skriptů a o funkční repozitář, který by umožnil současnou práci nad transformacemi a joby více lidem. Tyto ne-
14
Running
a
Transformation.
Pentaho
Wiki
[online].
2013
21
[cit.
2013-04-22].
Dostupné
z:
dostatky však jsou rozhodující spíše pro nasazení ve větším řešení, než o kterém uvažujeme. Díky možnosti spouštění skriptů v rámci jiných skriptů lze vybudovat i „master“ scénáře například pro denního load dat do datového skladu, a pak tento hlavní skript nechat automaticky spouštět Cronem nebo Plánovačem úloh ve Windows. Hlavním nedostatkem community platformy je především zhoršená kvalita dokumentace, přesto však o využití Kettle jako ETL platformy v open source datovém skladu lze určitě uvažovat.
3.1.3 CloverETL CloverETL je označení pro sadu produktů vyvíjených společností Javlin. Základ balíku tvoří tři produkty: Designer, Server a Engine které mohou být dále rozšířený o doplňky jako Data Profiler, Cluster nebo Event Analyzer. Designer je grafická desktopová aplikace určená pro tvorbu transformačních skriptů. Server je serverová aplikace postavená na platformě Java EE, určená pro vykonávání skriptů, správu naplánovaných úloh, paralelní zpracování a integraci s dalšími podnikovými aplikacemi.15 Javlin svojí produktovou rodinu v souhrnu popisuje jako „Platformu pro agilní datovou integraci“.16 Základní nabídka společnosti je komerčního charakteru, nicméně existuje i komunitní produktová edice, v rámci které jsou nabízeny pouze Designer a Engine, Designer bohužel oproti komerční verzi s omezenou množinou funkcionalit. Tato komunitní verze Designeru je distribuována pod proprietární EULA licencí, která umožňuje bezplatné použití programu.17 Ústředním modulem podporujícím celou platformu je CloverETL Engine. Nejedná se o samostatnou aplikaci, nýbrž o knihovnu napsanou v jazyce Java. Engine slouží ke spouštění (provádění) transformačních skriptů navržených v Designeru. Je interní součástí jak Designeru, tak Serveru a může být zabudován i do vlastních aplikací. Engine je open source software, binární a zdrojové balíčky jsou k dispozici volně ke stažení na webu Sourceforge a jeho použití je řízeno licencí LGPLv2. V následujícím textu se podrobněji podíváme na Designer Community Edition a na otevřený Engine a posoudíme, nakolik nám jejich funkcionality při budování datového skladu vystačí. 15
CloverETL Server. Family of CloverETL Products [online]. 2013 [cit. 2013-04-18]. Dostupné z:
16
CloverETL Products. Data Integration Products [online]. 2013 [cit. 2013-04-16]. Dostupné z:
17
Text licence se zobrazuje při instalaci programu, není dostupný online
22
Technické detaily
CloverETL Designer Community Edition (dále jen „Designer“) je aplikace postavená na open source platformě Eclipse. Eclipse je známý především jako vývojová platforma (IDE) pro řadu programovacích jazyků, nicméně modularita aplikace umožňuje budovat na její základech zcela nová vývojová prostředí. Platforma ke svému běhu požaduje pouze lokální instalaci Java Runtime Environment, je tudíž multiplatformní. Designer slouží ke grafickému návrhu transformačních skriptů. Community edice je bohužel oproti placené edici ochuzena o některé transformační prvky, konektory a další funkcionality, nicméně základní komponenty zůstávají návrhářům skriptů k dispozici.18 Transformační skripty, v terminologii CloverETL nazývané „grafy“, jsou vytvářeny přetahováním jednotlivých komponent z palety do hlavního okna aplikace a jsou spojovány přechody. Komponenty jsou rozděleny do několika skupin. Najdeme tu Readers, které umožňují čtení a parsování dat z různých zdrojů (databáze, textový soubor, XML, MS Excel), Writers, které naopak data zapisují, dále Transformers, které s daty nějakým způsobem manipulují, a několik dalších komponent (DB Execute pro spouštění SQL příkazů, SystemExecute pro spouštění systémových procesů a HTTP Connector). Podporována je většina rozšířených relačních databází (Oracle, MS SQL, MySQL, PostgreSQL, Firebird, MS Access, Sybase a další) a generický JDBC driver.19 Mezi transformační nástroje patří například Aggregate, Deduplicate, Filter, Sort, SimpleCopy. Zajímavou komponentou je pak Reformat, která umožňuje definici vlastní uživatelské transformace. Definovat transformaci je možné pomocí CloverETL skriptovacího jazyka CTL (CloverETL Transformation Language), který již nabízí řadu zabudovaných funkcí. Další možností je napsat vlastní třídu v jazyce Java, která transformaci provede. Tato třída musí implementovat speciální rozhraní (a tudíž i příslušné metody). Vzhledem k tomu, že Designer
18
CloverETL Designer. CloverETL Documentation [online]. 2013 [cit. 2013-04-19]. Dostupné z:
19
Part VII. Components Overview. CloverETL Designer [online]. 2013 [cit. 2013-04-19]. Dostupné z:
23
je postaven na platformě Eclipse, implementaci je možno vytvořit přímo v prostředí Designeru, bez nutnosti využívat externí nástroj pro kódování a kompilaci.20 Množina podporovaných komponent je bohužel v Community edici značně omezena. Oproti komerční edici chybí mnohé užitečné funkcionality pro čtení z různých datových zdrojů, FTP složek, dále nativní konektory pro rychlý zápis do databází, některé transformační komponenty a další užitečné funkce, například rychlá tvorba Dimension tabulek pro datamarty, nebo XSL transformery. Skripty vytvořené v Designeru jsou interpretovány pomocí základní komponenty celé CloverETL platformy – CloverETL Engine. Engine je realizován jako aplikace napsaná v jazyce Java. Nemá vlastní uživatelské rozhraní a je spouštěn z příkazové řádky s řadou parametrů. Engine je distribuován jako JAR (Java Archive) knihovna, což jej umožňuje zabudovat do vlastních aplikací napsaných v jazyce Java.
Dokumentace, komunita, podpora
K celé produktové rodině existuje podrobná a přehledná online dokumentace, dostupná z hlavních stránek CloverETL. Kromě toho je začínajícím uživatelům k dispozici Quick Start Guide, který pomůže rychle se zorientovat v základních pojmech a vytvořit svoje první transformační grafy. Dokumentace celkově budí dobrý dojem, je srozumitelná a dobře strukturovaná, učení z ní je velice rychlé. Nevýhodou bohužel je skutečnost, že jsou zdokumentovány plné (komerční) verze aplikací, tudíž při práci s komunitní edicí může uživatel hledat v programu některé komponenty zcela marně. Ten samý nedostatek platí i pro ukázkové ETL projekty, jež jsou volně k dispozici ke stažení – pokud je v některém z projektů použita komerční komponenta, odmítne Designer projekt vůbec otevřít. Mezi další oficiální zdroje informací patří aktivní CloverETL Forum, kam může uživatel v případě potíží vznést svůj dotaz, a dále CloverETL Blog, kde je zhruba jednou měsíčně publikován nový článek týkající se platformy. Oficiální podpora je nabízena pouze pro placené distribuce.21
20
Chapter 55. Transformers. CloverETL Designer [online]. 2013 [cit. 2013-04-19]. Dostupné z:
21
CloverCARE
Support.
CloverETL
Services
[online].
24
2013
[cit.
2013-04-19].
Dostupné
z:
Celkové hodnocení
CloverETL je funkční a kvalitní ETL platforma, komunitní edice je však bohužel natolik omezena o moduly a funkcionality, že ji to pro datový sklad činí prakticky nepoužitelnou. Postrádáme možnost centralizované správy transformací a jejich automatické spouštění (což jsou funkce podporované Serverem), také Designer je ochuzen o mnohé užitečné komponenty. Community Edition je tedy spíše vhodná pro skutečně jednoduché projekty s malým počtem jednoduchých transformací. Zájemcům o CloverETL platformu by se nejspíše vyplatilo investovat alespoň do komerční verze Designeru (bez Serveru), jež poskytuje plnou paletu funkcionalit, nicméně předmětem této práce je free nebo open source software, tuto variantu proto nebereme v úvahu.
3.1.4 Talend Data Integration Talend Open Studio For for Data Integration (které dále v textu budeme nazývat také zkráceně „Studio“) je open source produkt společnosti Talend, distribuovaný pod licencí GPLv2.22 Poslední stabilní release produktu nese označení 5.2.2 a byl uvolněn v březnu roku 2013. Studio je grafický nástroj sloužící k návrhu skriptů pro přístup k datům, jejich transformaci, kombinaci a integraci mezi různými zdroji a systémy. Studio je součástí širší rodiny produktů, mezi něž patří například nástroje pro kontrolu kvality dat (Data Quality), správu metadat (MetaData Management), řízení business procesů a další. Studio je nabízeno zdarma jako samostatná aplikace či pak v rámci rozšířených komerčních balíčků Enterprise Data Integration a Platform for Data Management. Balíčky obsahují kromě Studia navíc i serverové komponenty pro centralizovanou správu skriptů, jejich vzdálené nasazování a spouštění, load balancing, failover a jiné funkcionality podporující celý životní cyklus procesů pro datovou integraci. Avšak i v bezplatné edici je Studio zcela plnohodnotné a není ochuzeno o žádné funkcionality pro přístup k datům a manipulaci s nimi.23 Pojďme se tedy blíže podívat, co nám tento software umožňuje.
22
Data
Integration.
TALEND.
Download
[online].
2013
[cit.
2013-04-20].
Dostupné
z:
23
Data Integration Features Comparison Matrix. TALEND. Data Integration [online]. 2013 [cit. 2013-04-20].
Dostupné z:
25
Technické detaily
Open Studio for Data Integration je - podobně jako CloverETL Designer - postaveno na platformě Eclipse, a tudíž ke svému běhu potřebuje lokální instalaci JRE nebo JDK (Java Development Kit). Z Eclipse je také převzata základní filozofie práce, která je vždy rozdělena na jednotlivé projekty. V rámci projektů pak vytváříme transformační skripty (které jsou nazývány „jobs“), definujeme metadata jako například databázová spojení, vstupy, výstupy a píšeme vlastní funkce, SQL dotazy a Java kód. Veškerá data jsou v rámci projektu viditelná pro všechny joby, naopak mezi projekty tato viditelnost neexistuje a pro znovuvyužití v jiném projektu se musí data ručně exportovat a pak importovat. ETL skripty (jobs) vytváříme graficky, metodou přetahování komponent z palety, nastavením jejich vlastností a spojením přechody. Nabídka komponent je skutečně velmi široká. Dokumentace uvádí, že k dispozici je přes 450 komponent a konektorů 24, což umožňuje číst a zapisovat data z/do téměř jakéhokoli zdroje. Kromě možnosti napojení na klasické relačních databáze máme tu i řadu konektorů do rozšířených komerčních DWH/BI databází a produktů (Netezza, Teradata, SaS) a samozřejmě spoustu adapterů pro práci se soubory. Podporovány jsou mimo jiné textové a CSV soubory, MS Excel, práce se ZIP archivy a XML. Mezi poněkud méně obvyklé komponenty patří možnost připojování na FTP, MQ (Message Queue) servery, zasílání HTTP requestů, volání SOAP a RESTful webových služeb (včetně zabezpečených), LDAP a dokonce parsování souborů, jejichž obsahem je emailová zpráva.25 Transformační komponenty nabízí standardní operace – filtrování, agregaci, filtrování, řazení, normalizaci/denormalizaci (užitečné při výpočtu tabulek faktů), operace nad řetězci (replace, concat, regexp a další) a jiné. Je možná definice vlastních rutin a procedur používaných v transformacích, kód se píše v jazyce Java. Žádný proprietární skriptovací jazyk není podporován. Mezi velmi užitečné komponenty patří tzv. Orchestration komponenty, které umožňují řídit běh jobu. V rámci jednoho můžeme zavolat jiné joby, či dokonce běh paralelizovat. Podporovány jsou dále dva speciální eventy – Prejob a PostJob, které umožní například provést před spuštěním jobu určitá iniciální nastavení nebo naopak po doběhnutí po sobě „uklidit“.
24
Data
Integration.
TALEND.
Download
[online].
2013
[cit.
2013-04-20].
Dostupné
z:
25
Reference Guide. Talend Open Studio Components v5.2.2 [online]. 2013 [cit. 2013-04-20]. Dostupné z:
ps://help.talend.com/display/TALENDOPENSTUDIOCOMPONENTSREFERENCEGUIDE52EN/Home>
26
Nabídka komponent není konečná. Uživatelé mohou vytvářet své vlastní komponenty v jazyce Java přímo v prostředí Studia. Kromě toho, na komunitních webových stránkách talendforge.org jsou k dispozici stovky volně dostupných custom komponent vyvinutých uživateli a rozšiřujících standardní paletu Studia. Studio podporuje verzování jobů a metadat v rámci projektu. Můžeme uchovávat vícero verzí té samé entity a v případě potřeby vrátit se ke dřívějším verzím. Do prostředí je také zabudována funkcionalita „Recycle Bin“, kdy odstraněné položky (joby a metadata) se nejprve přesouvají do koše a teprve potom mohou být odstraněny trvale. Navržené joby můžeme spouštět přímo ve Studiu či je exportovat do několika různých formátů a spouštět je samostatně. Každý job je ve Studiu překládán do samostatné Java třídy, uživatel si může nechat zobrazit generovaný zdrojový kód. Ve studiu můžeme proto spouštět joby i v Debug a Trace modech a sledovat velmi podrobně krok po kroku vykovávání jobu. Takto těsná integrace s Javou umožňuje realizovat i mechanismus exportování jobů pro jejich spouštění vně Studia.26 První variantou je export pro samostatné spouštění jobu v jakémkoli prostředí, kde je nainstalováno prostředí JRE (Java Runtime Environment). V této variantě vygeneruje Studio ZIP archiv obsahující .jar archív se samotným jobem, složku s potřebnými knihovnami (například rutiny pro práci s Excel soubory a JDBC konektory), složku s metadata, zdrojové kódy a nakonec .bat a .sh skripty pro pohodlné spouštění jobu ve Windows nebo Linux. Získáváme tak zcela samostatný spustitelný balíček bez potřeby cokoli dále konfigurovat nebo instalovat. Další možností je exportovat job jako webovou službu (Web Service), kterou je možno nasadit na libovolný z Java EE serverů. Studio v tomto případě připraví standardní .war balíček (Java Web Application Archive), jež je možno rovnou nasazovat. Pro nasazení je vyžadován pouze servlet containter (například Apache Tomcat), SOAP protokol je implementován pomocí knihovny Apache Axis, plný Java EE serverový profil tudíž není vyžadován. Archív obsahuje pochopitelně všechny potřebné knihovny (včetně Axisu), dále zdrojové kódy a soubory konfigurující webovou službu (.wsdl, .wsdd).
26
How to run a Job. Talend Open Studio for Data Integration v5.2.2 - User Guide (EN) [online]. 2013 [cit.
2013-04-21].
Dostupné
z:
ps://help.talend.com/display/TALENDOPENSTUDIOFORDATAINTEGRATIONUSERGUIDE52EN/4.2.7+H ow+to+run+a+Job>
27
Poslední variantou pro export jsou balíčky pro nasazení jobu jako služby do ESB (Enterprise Servis Bus) platformy. Podporovány jsou JBoss ESB, Petals ESB a dále generický OSGI formát. V případě nasazení jobu jako enteprise služby bude tento job dostupný všem dalším aplikacím využívajícím služeb centrální integrační platformy.27
Integrace se SpagoBI serverem
Zajímavou funkcionalitou, kterou Studio nabízí, je export a nasazení jobu na SpagoBI server. SpagoBI je open-source Business Intelligence platforma, jejíž součástí je Java EE server pro management a spouštění různých typů analytických a reportingových úloh. Spago disponuje mimo jiné i podporou pro Talend Open Studio, a z druhé strany Studio umožňuje rychlý deployment jobu přímo z návrhového prostředí. 28 V rámci SpagoBI serveru je možné vytvářet rozvrhy pro pravidelná spouštění rozlišných úloh, server nám proto může částečně posloužit jako náhrada za Talend Jobserver, dostupný pouze v některé z komerčních edicí.
Dokumentace, komunita, podpora
Celá platforma, pochopitelně včetně Studia, disponuje podrobnou dokumentací. Přístup k dokumentaci je možný po bezplatné registraci. Dokumentace je rozdělena na několik hlavních částí – Knowledge Base s odpověďmi na nejčastější otázky a dále samostatné portály pro každý z produktů, odděleně pro bezplatné a komerční edice. Pro Talend Open Studio for Data Integration mají uživatelé k nahlédnutí Installation & Upgrade Guide, User Guide a Components Reference Guide. Všechny příručky jsou zpracovány pěkně a dostatečně přehledně, včetně screenshotů a praktických ukázek. Začínající uživatelé si mohou projít tutoriály pokrývající některé základní úlohy a stáhnout si k těmto tutoriálům ukázkové projekty do Studia, včetně vzorků zkušebních dat.
27
How to export Jobs. Talend Open Studio for Data Integration v5.2.2 - User Guide (EN) [online]. 2013 [cit.
2013-04-21].
Dostupné
z:
ps://help.talend.com/display/TALENDOPENSTUDIOFORDATAINTEGRATIONUSERGUIDE52EN/5.2.2+H ow+to+export+Jobs> 28
How to deploy a Job on SpagoBI server. Talend Open Studio for Data Integration v5.2.2 - User Guide (EN)
[online].
2013
[cit.
2013-04-21].
Dostupné
z:
ps://help.talend.com/display/TALENDOPENSTUDIOFORDATAINTEGRATIONUSERGUIDE52EN/5.7.1+H ow+to+deploy+a+Job+on+SpagoBI+server>
28
Mezi oficiální zdroje informací dále patří aktivní Talend Community Forum s desítkami tisíc témat a příspěvků.29 Témata ve fóru pokrývají širokou škálu témat, od instalace, přes návrh jobů po vytváření vlastních komponent.
Celkové hodnocení
Talend Open Studio for Data Integration je velmi výkonný nástroj pro tvorbu komplexních transformačních úloh. Disponuje širokou paletou funkcionalit, je výborně ovladatelný a intuitivní. Projektově orientovaný přístup k práci a dostupnost verzování skriptů a metadat zjednodušuje správu rozsáhlejších projektů a přináší pořádek. Nevýhodou v tomto pohledu je pouze absence možnosti ukládat projekty do centrálního repozitáře a umožnit tím současnou práci více lidí (tato funkce je dostupná až v některé z placených edicí). Komunitní produktová edice bohužel nenabízí žádný server pro plánování a spuštění úloh, tento nedostatek však je částečně vyvážen možností exportovat joby jako samostatně spustitelné programy nebo jako Java EE komponenty (Webové služby, ESB služby). Díky podpoře vnořených jobů (tedy spouštění jobů v rámci jiných jobů) je možné vybudovat například workaround pro celou denní ETL úlohu v podobě jednoho parent jobu a ten pak spouštět v požadovaném čase pomocí Cron skriptu nebo Plánovaných úloh ve Windows. Rovněž máme možnost využití podporované integrace se SpagoBI serverem a přenechat plánování a spuštění úloh na něj. Produkt dále disponuje kvalitní dokumentací a aktivní uživatelskou základnou, k dispozici jsou i dodatečné výukové materiály. Celkově vzato, produkt splňuje požadavky pro využití jako ETL komponenty v datovém skladu a pro tyto účely jej doporučit lze.
3.2 Relační databáze Databáze tvoří jádro celého datového skladu. Dá se říct, že je jeho nejdůležitější součástí. V datovém skladu plní databáze hned několik úloh. Za prvé, slouží jako úložiště pro Data Staging Area (viz první kapitola) – tedy místo pro dočasné uložení surových dat pro účely jejich transformace a očištění. Dále funguje jako úložiště již transformovaných dat, ve formě
29
Talend
Community
Forum.
Talendforge
[online].
29
2013
[cit.
2013-04-21].
Dostupné
z:
datamartů, v některém ze vhodných schémat (vločkové, hvězdicové schéma). Této části databáze říkáme Data Presentation Area. V neposlední řadě pak také obsahuje metadata ukládaná samotnými aktivními SW komponentami řešení – ETL a reportingovými nástroji. Příkladem těchto dat jsou definice datových transformací, datové zdroje, naplánované automatické úlohy, logy, definice reportů, uživatelské účty, seznam oprávnění k jednotlivým reportům aj. V případě komplexních řešení, implementovaných ve velkých firmách, je velmi pravděpodobné, že databáze pro každý z těchto účelů budou oddělené a dedikované. Námi hledané řešení pro malé a střední podniky je však jednodušší, budeme proto uvažovat jednu databázovou instanci, která bude rozdělena na jednotlivá schémata, zajišťující výše popsané funkcionality. Relačních databází je na trhu velmi mnoho, a to i těch, které patří do kategorie open source nebo free software. Je nad rámec jakékoli práce obsáhnout je všechny, bylo tedy nutné provést předvýběr vhodných „kandidátů“. Volba padla na takové produkty, které jsou široce známe a rozšířené, s existujícími referencemi, aktivní komunitou a nadějí na další rozvoj v budoucnu. Dalším kritériem byla robustnost, vhodnost práce s velkými objemy dat a snadná administrace databáze, což z výběru vyřadilo lightweight a embedded řešení, například Apache Derby nebo SQLite. Při finálním posouzení databázového SW za zaměříme především na jeho volnou dostupnost, stabilitu, rychlost, licenční omezení pro podporovaný objem dat a maximální míru využití HW prostředků, dále pak i kvalitu dokumentace, uživatelskou komunitu a samozřejmě i na podporu dané technologie ze strany samotných ETL a reportingových nástrojů.
3.2.1 MySQL MySQL patří k nejznámějším a nejrozšířenějším open source databázovým enginům.30 První verze databáze vznikla koncem devadesátých let jako projekt vývojáře Michaela Wideniuse, spoluzakladatele společnosti MySQL AB. Společnost byla v roce 2008 odkoupena firmou Sun Microsystems. V současné době patří MySQL společnosti Oracle, po její akvizici společnosti Sun Microsystems v roce 2010.31
30
DB-Engines Ranking. SOLID IT. DB-engines: Knowledge Base of Relational and NoSQL Database Manage-
ment Systems [online]. [cit. 2013-04-07]. Dostupné z: 31
Hardware and Software. Engineered to Work Together. ORACLE. Oracle corporation [online]. 2010 [cit.
2013-04-07]. Dostupné z:
30
MySQL databáze je distribuována v několika placených edicích – Standard Edition, Enteprise Edition a Cluster Carrier Grade edition – a dále v bezplatné Community edici, distribuované pod licencí GPL.32 Nás bude zajímat především tato volně dostupná Community edice. V době vzniku této práce poslední stabilní verze nesla označení 5.6.10. Dále v tomto textu budeme hovořit pouze o této edici a budeme jí zkráceně nazývat „MySQL“. Pokud budeme hovořit o některé z placených verzí, explicitně tuto skutečnost upřesníme. Databáze je multiplatformní, podporuje jak prostředí Windows, tak i celou řadu Linuxových a Unixových operačních systémů.33 Samozřejmostí jsou dostupné zdrojové kódy pro vlastnoruční kompilaci. Pojďme se nyní blíže podívat na některé detaily, které nás zajímají z pohledu případného využití této databáze jako základny pro datový sklad.
Technické detaily, HW a SW omezení
MySQL nabízí několik mechanismů ukládání dat (tzv. storage engine), které jsou distribuovány ve standardním instalačním balíčku. Pro účely DWH jsou zajímavé především tři hlavní mechanismy: MyISAM, InnoDB a Memory. Výhodou je možnost míchání různých mechanismů v rámci jednoho DB schématu (různé tabulky mohou používat rozdílné mechanismy) a dokonce i v rámci jednoho SQL dotazu.34 InnoDB je primárním doporučovaných mechanismem. Jedná se o plnohodnotný storage engine podporující ACID transakce, cizí klíče, indexy (B-tree, T-tree, hash, fulltext) a zamykání na úrovni řádků. Maximální objem uložených dat je omezen na 64 TB. Tento engine je vhodný především na manipulaci s daty v normalizovaném schématu. MyISAM je historicky starší storage engine, který nepodporuje transakce ani cizí klíče. Dále nepodporuje některé typy indexů (např. T-tree a hash). Zamykání probíhá na úrovni celé tabulky. Výhodou MyISAM je však podpora až 256 TB uložených dat a za některých okolností rychlejší čtení z velkých tabulek, což může být užitečné pro Data presentation area datového skladu, která je vystavena především velkému náporu SELECT dotazů oproti INSERT/UDPATE dotazům. Rozdíl ve výkonnosti proti InnoDB ale není jednoznačně jasný a 32
MySQL Editions. MYSQL. MySQL: The world's most popular open source database [online]. 2013 [cit.
2013-04-07]. Dostupné z:< http://www.mysql.com/products/> 33
Installing and Upgrading MySQL. MYSQL. MySQL 5.6 Reference Manual [online]. 2013 [cit. 2013-04-07].
Dostupné z: 34
Storage Engines. MYSQL. MySQL 5.6 Reference Manual [online]. 2013 [cit. 2013-04-07]. Dostupné z:
31
je diskutován. Performance benchmark, vydaný společností Oracle v roce 2011, srovnávající MyISAM a InnoDB engines doporučuje primárně využívat InnoDB a zároveň uvádí, že MyISAM „zůstává důležitým storage engine pro specifické aplikace vyžadující intenzivní čtení dat“.35 Memory je speciální storage engine, který, jak název vypovídá, používá pro uložení dat RAM paměť. Výhodou je vetší rychlost manipulace s daty, kterou lze využít například pro náročné datové transformace. Na druhou stranu je zde řada nevýhod – server musí disponovat dostatečným množstvím fyzické RAM paměti, v případě výpadku systému se data ztratí. Memory engine dále nepodporuje transakce ani cizí klíče. Zamykání probíhá na úrovni celé tabulky. MySQL neomezuje uměle maximální objem využité RAM ani počet CPU / jader, to znamená, že v případě potřeby budou využity všechny dostupné HW prostředky, v závislosti na konfiguraci. MySQL podporuje multithreading.36 Databáze nabízí možnost partitioningu, k dispozici je několik druhů, dle rozdělovacího kritéria: Range, List, Columns (využití více sloupců pro rozhodovací pravidlo), Hash a Key. Je nabízen pouze horizontální partitioning (rozdělení skupin řádků), vertikální (rozdělení podle sloupců) není podporován. Použití partitioningu nad tabulkou s sebou přináší některá omezení, například nemožnost používat cizí klíče nebo omezené použití vnořených dotazů a SQL funkcí.37
Dokumentace a komunita
MySQL nabízí na svých stránkách volně přístupnou, rozsáhlou referenční dokumentaci. Kromě hlavní části, podrobně popisující SQL syntaxi včetně její rozšíření a doplnění příkazy specifickými pro MySQL, nechybí zde ani velké množství doplňující informace o storage engi-
35
MySQL 5.5: Storage Engine Performance Benchmark for MyISAM and InnoDB: A MySQL® Technical
White
Paper.
[online].
2011,
s.13
[cit.
2013-04-07].
Dostupné
z:
36
MySQL 5.6 FAQ: General. MYSQL. MySQL 5.6 Reference Manual [online]. 2013 [cit. 2013-04-07]. Dostup-
né z: 37
Chapter 17. Partitioning. MYSQL. MySQL 5.6 Reference Manual [online]. 2013 [cit. 2013-04-08]. Dostupné
z:
32
nech, instalaci a administraci serveru, zálohování, bezpečnosti, partitioningu a optimalizaci a nativních konektorech pro programovací jazyky.38 Vzhledem k velké popularitě databáze na internetu existuje velmi rozsáhlá komunita uživatelů a vývojářů. Na oficiální doméně mysql.com je provozována tzv. Developer zone s velkým množstvím informací, aktivním fórem čítajícím desítky tisíc témat, články a white papery.
Administrační rozhraní a utility
Volitelnou součástí instalačního balíčku je sada administračních a utility aplikací. Aplikace je rovněž možno zadarmo stáhnout a nainstalovat dodatečně. MySQL Workbench je aplikace s grafickým uživatelským rozhraním, umožňující modelování, návrh databáze, administraci a vývoj SQL skriptů.39 Aplikace existuje ve verzích pro různé operační systémy, podporovány jsou mj. MS Windows, Mac OS X, a některé linuxové distribuce. MySQL Utilities je sada programů ovládaných skrze příkazovou řádku. Umožňují provádět operace nad auditními logy, kopírování a zálohování databáze, porovnávání dat, nastavení replikace, klonování serveru a vykonávat některé administrační úlohy. Utilies jsou nabízeny pro operační systémy MS Windows a Oracle a Red Hat Linux. K dispozici jsou rovněž i zdrojové kódy, pomocí kterých lze zkompilovat vlastní verzi programů pro vybraný operační systém.
Celkové hodnocení
MySQL je vyzrálý open source databázový systém s dlouhou historií, prověřený velkým množstvím uživatelů, s kvalitní dokumentací a rozsáhlou komunitou. Po technické stránce vyhovující, s dostatečnou rychlostí, nabízí rovněž nástroje pro optimalizaci výkonu. Určitou nevýhodou může být například vlastnictví velkou komerční společností (Oracle), kdy není jisté, jak bude s databází nakládáno budoucnu a zda nebudou budoucí komunitní verze chudší o funkcionality, jež budou přesouvány do placených distribucí.
38
MySQL 5.6 Reference Manual: Table of contents. MYSQL. MySQL 5.6 Reference Manual [online]. 2013 [cit.
2013-04-08]. Dostupné z: 39
Chapter 1. MySQL Workbench Introduction. MYSQL. MySQL Workbench: Reference Manual [online]. 2013
[cit. 2013-04-08]. Dostupné z:
33
3.2.2 PostgreSQL PostgreSQL je open source databázový systém. Jeho historie sahá do roku 1986, kdy vznikl jako projekt pod názvem POSTGRES na kalifornské univerzitě Berkeley. V současné době není projekt vlastněn žádnou konkrétní firmou, na vývoji se podílí skupina dobrovolníků pod jménem „PostgreSQL Development Group“. Poslední dostupná stabilní verze databáze je 9.2.4. Software je distribuován pouze v jedné edici, pod vlastní licencí PostgreSQL License, která vychází z BSD a MIT licencí.40 Není možné zakoupit žádný oficiální support, nicméně celosvětově existuje řada firem, které nabízí profesionální služby spojené s užíváním a administrací PostgreSQL.
Technické detaily, HW a SW omezení
PostgreSQL je multiplatformní, instalační balíčky jsou dostupné pro operační systémy Windows, BSD, MacOS, Solária a řadu Linuxových distribucí. Zdrojový kód je možno stáhnout z GIT repository, součástí dokumentace je pak kapitola podrobně popisující komplikační proceduru pro příslušný operační systém. Databáze je vyvíjena s důrazem na stabilitu a podporu standardů ISO/IEC, které specifikují jazyk SQL. Poslední z těchto standardů byl vydán v roce 2011 pod názvem ISO/IEC 9075:2011. PostgreSQL implementuje většinu z částí popisovaných v této specifikaci, s výjimkou Persistent Stored Modules a Object Language Bindings.41 Díky velké konformitě s SQL standardy je PostgreSQL často vývojáři považováno za „open-source Oracle“. PostgreSQL implementuje svůj vlastní procedurální jazyk PL/pgSQL, podobný Oracle PL/SQL. K dispozici je navíc řada dalších modulů vyvinutých třetími stranami, které umožňují psát funkce a procedury v Javě, PHP, Pythonu a dalších jazycích.42 Databázový engine nemá žádná omezení, co se týče maxima využité paměti nebo počtu procesorů/jader. Není však podporován multithreading, místo toho je implementován procesní přístup – pro každé databázové spojení je vytvořen separátní proces v operačním systé-
40
License. PostgreSQL:
About [online].
2013
[cit.
2013-04-10].
Dostupné
z:
41
Appendix D. SQL Conformance. PostgreSQL 9.2.4 Documentation [online]. 2013 [cit. 2013-04-10]. Dostupné
z: 42
H.3. Procedural Languages. PostgreSQL 9.2.4 Documentation: Appendix H. External Projects [online]. 2013
[cit. 2013-04-10]. Dostupné z:
34
mu. Každý takovýto proces využívá maximálně jedno procesorové jádro, tudíž i náročné dotazy jsou zpracovávány vždy pouze v jednom jádře.43 Databáze podporuje základní tabulkový partitioning. K dispozici jsou dva typy rozdělovacích kritérií: Range a List.44 Je možné využít jen horizontálního partitioningu, rozdělení tabulek podle sloupců není podporováno. Přímo na úrovni SQL jsou podporovány rovněž tablespaces, což umožňuje rozložit databázové objekty (tabulky, indexy i celá schémata) na různá fyzická úložiště a tím dosáhnout větší efektivity čtení a zápisu. Při vytváření nového objektu je možné specifikovat tablespace, ve kterém bude objekt uložen, jinak bude použit výchozí tablespace. Technika partitioningu dovolí implementovat různé optimalizace, například umístit indexy na separátní rychlý SSD disk. Samozřejmostí je podpora indexování. K dispozici jsou B-Tree, hash, GiST, SP-GiST a GIN indexy.45 GiST a SP-GiST představují rozhraní pro implementaci indexovací strategie založené na vyhledávacím stromu (GiST – Generalized Search Tree). Standardní distribuce obsahuje implementace několika druhů indexování včetně fulltextu, jednorozměrných polí a víceprvkových indexů. Je možná implementace svých vlastních indexovacích algoritmů jako rozšíření standardní množiny. Z hlediska výkonu při provádění SELECT dotazů nabízí PostgreSQL zajímavou funkcionalitu zvanou Window functions. Ta spočívá v aplikaci agregačních funkcí pouze nad podmnožinou dat vracených dotazem. Podmnožina („window“) může být specifikována dle různých kritérií. Tato funkcionalita může značně zjednodušit psaní analytických dotazů nad Data presentation area, kde často potřebujeme provést statistické výpočty a aplikovat agregační funkce. Window functions umožňují získat potřebná data už v rámci jednoho dotazu tam, kde bychom tradičně museli použít vícero dotazů a spojit je pomocí JOINů.
43
PostgreSQL Hardware Performance Tuning. MOMJIAN, Bruce. UNIVERSITY OF LEEDS. PostgreSQL
Hardware
Performance
Tuning
[online].
2008
[cit.
2013-04-10].
Dostupné
z:
44
5.9. Partitioning. PostgreSQL 9.2.4 Documentation: Chapter 5. Data Definition [online]. 2013 [cit. 2013-04-
10]. Dostupné z: 45
11.2. Index Types. PostgreSQL 9.2.4 Documentation: Chapter 11. Indexes [online]. 2013 [cit. 2013-04-11].
Dostupné z:
35
Dokumentace a komunita
Oficiální dokumentace je kvalitní, rozsáhlá, podrobná a přehledná. K dispozici jsou jak online webová verze, tak PDF pro tisk a offline prohlížení. Tištěná verze dokumentace, včetně příloh, by čítala přes dva a půl tisíce stránek. K nahlédnutí je rovněž i kompletní dokumentace k předchozím releasům, zpětně až k verzi 6.3. Dokumentace popisuje všechny aspekty spojené s instalací, administrací a používáním PostgreSQL. Nechybí informace o API rozhraní, zálohování a monitorování databáze, PL/pgSQL jazyku, informačním schématu a dalších technických podrobnostech.46 Kromě oficiální dokumentace existuje celé množství komunitních zdrojů informací. Na doméně postgresql.org je provozována velká skupina mailing listů, rozdělených do mnoha kategorií (administrace, preformace, SQL, vývoj aj). Listy jsou velmi aktivní – nové dotazy i odpovědi přibývají každý den ve všech kategoriích. Jako další informační zdroj může posloužit PostgreSQL Wiki přeložená do několika světových jazyků a webové stránky Planet PostgreSQL, které slouží jako blog pro publikaci článků o databázi. Kromě výše popsaných zdrojů provozovaných na hlavní doméně postgresql.org existují ještě i nezávislé komunitní zdroje podporované uživateli v různých zemích. Z českých zdrojů můžeme například uvést wiki na adrese postgres.cz, spravovanou Sdružením českých a slovenských uživatelů PostgreSQL.
Administrační rozhraní a utility
Ve standardním instalačním balíčku je distribuován program pgAdmin, který slouží jako standardní administrační nástroj pro PostgreSQL. Program je licencován pod licencí PostgreSQL, stejně jako samotná databáze. PgAdmin je grafický nástroj. Umožňuje správu databázových instancí, tablespaců, práci s databázovými objekty (vytváření, úpravy), spouštění SQL dotazů, zobrazuje podrobné informace, statistiky aj. Nástroj obsahuje rovněž grafický query analyzer, který pomáhá při optimalizaci SQL dotazů.47
46
Table of Contents. PostgreSQL 9.2.4 Documentation [online]. 2013 [cit. 2013-04-11]. Dostupné z: <
http://www.postgresql.org/docs/9.2/interactive/> 47
Features.
PgAdmin:
PostgreSQL
Tools
[online].
36
2013
[cit.
2013-04-11].
Dostupné
z:
PgAdmin je určen pro operační systémy MacOS a Windows, ke stažení je i zdrojový kód pro kompilaci pro jiné platformy. Programu je věnován samostatný web pgadmin.org, kde se kromě instalačních balíčků nachází i online dokumentace. Kromě PgAdminu lze využít ještě celou řadu aplikací pro účely administrace, vývoje SQL a PL/pgSQL, migrace dat, zálohování, provozního reportování a analýzy logů. Aplikace jsou vyvíjeny třetími stranami. Mnoho z těchto aplikací je doporučeno na oficiálním webu PostgreSQL v sekci Software Catalogue. Některé z aplikací patří do kategorie svobodného software, jiné jsou komerční nástroje.
Celkové hodnocení
PostgreSQL je solidní open source databáze s mnohaletou tradicí. K její přednostem patří úsilí o co nejkompletnější implementaci SQL standardů, široká paleta užitečných funkcionalit a stabilita. K softwaru existuje kvalitní dokumentace a široká podpora aktivní komunity. Administrační rozhraní je vynikající, existuje i široká řada utilit pro správu databáze i dat samotných.
3.2.3 Oracle Database Express Edition Oracle Database Express Edition (zkráceně Oracle XE) je volně dostupná edice široce známé relační databáze Oracle. Aktuální verze nabízená společností Oracle je 11g Release 2, což odpovídá také verzi plných (Standard, Standard One a Enteprise) edicí. Oracle XE je distribuován pod vlastní licencí "OTN Developer License Terms for Oracle Database Express Edition terms". Licence povoluje libovolné využití databáze pro účely vývoje a provozování aplikací a distribuci spolu s vlastními aplikacemi. Je však nutno poznamenat, že se nejedná o open source software – zdrojové kódy nejsou volně dostupné a licence výslovně zakazuje dekompilaci a reverse-engineering binárního kódu.48 Instalační balíčky jsou nabízeny pro platformy Windows (pouze 32-bitová verze) a Linux (pouze 64-bitová verze).
48
Oracle Technology Network Developer License Terms for Oracle Database Express Edition. Oracle Techno-
logy
Network:
Licenses
[online].
2013
[cit.
2013-04-14].
37
Dostupné
z:
Technické detaily, HW a SW omezení
Express edice nejznámějšího databázového software bohužel trpí mnoha omezeními. Nejzásadnější omezení se týkají vyžití systémových prostředků a maximálního množství dat uložených v databázi. Oracle XE využije maximálně jeden procesor, nezávisle na tom, kolik procesorů je fyzicky v systému nainstalováno. Maximální množství paměti, které databáze využije, je jeden GB. A nakonec, objem dat perzistovaných v databázi nesmí překročit 11 GB, včetně systémových dat a metadat databáze samotné.49
Celkové hodnocení
Omezení zabudovaná v Oracle Express Edition jsou natolik limitující, že bohužel vylučují možnost použití databáze v datovém skladu. Další vlastnosti databáze jsme proto již nezkoumali. Oracle XE zajisté najde své uplatnění při vývoji a testování, stejně jako v nenáročných aplikacích bez potřeby pracovat s velkými objemy dat, pro které nabídne vysoce stabilní datovou základnu. V datovém skladu však není myslitelné pracovat s horním limitem 11 GB pro data, stejně jako omezit HW výpočetní prostředky na 1 CPU a 1 GB operační paměti.
3.2.4 Firebird Firebird je další z open source relačních databázových systémů. Vznik jako fork zdrojového kódu databáze Borland InterBase v roce 2000. V současné době poslední stabilní release je označen 2.5.2. Software je distribuován poněkud neobvykle pod dvěma licencemi zároveň. První, InterBase Public License, se vztahuje na části zdrojového kódu převzaté z původní InterBase. Druhá, Initial Developer’s License, pokrývá změny provedené v projektu Firebird samotném. Obě licence umožňují použití databáze zdarma, provádění změn v kódu a rekompilaci, případně distribuci databáze jako součásti většího projektu.50
49
Installation Guide: 3 Licensing Restrictions. Oracle® Database Express Edition [online]. 2013 [cit. 2013-04-
14]. Dostupné z: 50
The Firebird licenses. Firebird: Reference Manual [online]. 2013 [cit. 2013-04-14]. Dostupné z:
38
Technické detaily, HW a SW omezení
Firebird je multiplatformní, podporovány jsou OS Windows, Linux, MacOS X. Dále jsou k dispozici i zdrojové kódy určené pro vlastní kompilaci. Zdrojové kódy i binární instalační balíčky jsou hostovány na serveru Sourceforge. Databázový server je nabízen ve třech edicích, ve Firebird terminologii nazývaných „architektury“ – Classic Server, SuperClassic a Superserver. Edice se liší především ve způsobu zacházení se systémovými prostředky. Kdežto Classic vytváří pro každé spojení nový proces v operačním systému, SuperClassic a Superserver běží v rámci jediné procesní instance.51 Zajímavostí je výchozí konfigurační nastavení Superserver edice pro Windows, kdy databáze použije pouze jedno procesorové jádro. V případě, že administrátor při instalaci přehlédl tuto informaci v dokumentaci, může to zpočátku způsobit výkonnostní problémy. Nastavení ovšem lze snadno změnit tak, aby bylo využito maximum systémových prostředků. Všechny edice jsou nabízeny jak v 32-bitové, tak 64-bitové verzi. Databáze implementuje standard ISO/IEC SQL-92 Entry Level a částečně SQL:1999. K dispozici je podpora uložených procedur prostřednictvím jazyka PSQL (FireBird Procedural SQL). Podporovány jsou rovněž triggery.52 Standardní množinu funkcí lze rozšířit skrze externí moduly napsané v jazyce C/C++ nebo Delphi (Object Pascal). Firebird podporuje ACID transakce, včetně dvoufázového commitu a vytváření transaction savepoints. Databáze využívá tzv. „Multi-Generational Architecture“, kdy pro různé současně běžící transakce existují různé verze téhož záznamu. To umožňuje transakcím, které čtou data, neblokovat jiné transakce, které stejná data ve stejný okamžik zapisují. Pro optimalizaci čtení jsou k dispozici možnost tvorby jednoduchých indexů. Typ (algoritmus) indexu nelze v DDL explicitně specifikovat, z podrobné technické dokumentace je patrné, že se jedná o B-Tree indexování. Podporována je konstrukce „COMPUTED BY“, ve které lze specifikovat výraz, návratová hodnota kterého je použita při výpočtu indexu. Tento
51
Classic, SuperClassic or Superserver?. Firebird: Reference Manual [online]. 2013 [cit. 2013-04-14]. Dostupné
z:
super.html> 52
Overview of Features: Summary of features. Firebird: Reference Manual [online]. 2013 [cit. 2013-04-14].
Dostupné z:
39
způsob indexování je vhodný, pokud dopředu přesně víme, jaké SELECT dotazy budeme nad tabulkou spouštět, a můžeme index pro tyto dotazy optimalizovat.53 Databáze nenabízí žádnou možnost partitioningu.54
Dokumentace a komunita
Oficiální webové stránky firebirdsql.org poskytují množství dokumentace k databázi, včetně řady minulých releasů. Některé dokumenty jsou dostupné i v jiných jazycích než anglicky, včetně češtiny. Většina dokumentace je však psána v anglickém jazyce. Dokumentace je rozdělena do několika kategorií (Release Notes, Reference Manuals, White Papers a další). Navzdory tomu je členění v jednotlivých kategoriích poněkud nepřehledné, míchají se různé release a různé jazykové verze na jednom místě a ne vždy se podaří najit požadovanou informaci či dokument na první pokus. Celková úroveň hlavních referenčních příruček je vyhovující, místy možná poněkud chybí hlubší technický vhled do problematiky. Tento nedostatek se snaží pokrýt separátní příručka „Firebird Internals“, která je však vytvářena hlavně extrakcí ze zdrojových kódů a stále není dokončena.55 Kromě oficiální dokumentace existuje řada dalších informačních zdrojů odkazovaných z hlavního webu. Jedná se o externí webové stránky, blogy a články, věnující se povětšině nějakému konkrétnímu implementačnímu problému s využitím Firebird. Uživatelská a vývojářská komunita je aktivní. Dotaz je možno vznést v některém z mailing listů, jak v anglickém, tak i dalších jazycích, včetně češtiny, nebo na IRC kanálu #firebird na serveru freenote.net. Placený support je možno zakoupit od některé z komerčních společností, zabývajících se poskytováním profesionální podpory pro databázi.
53
INDEX. Firebird 2.5 Language Reference: DDL statements [online]. 2013 [cit. 2013-04-14]. Dostupné z:
54
Partitioning System (Like Oracle). Firebird Tracker: Firebird Core [online]. 2009 [cit. 2013-04-14]. Dostupné
z: 55
Introduction.
Firebird
Internals
[online].
2009
[cit.
2013-04-14].
Dostupné
40
z:
Administrační rozhraní a utility
K Firebirdu neexistuje žádný oficiální grafický administrační nástroj. Uživatelé mají na výběr z řady volně dostupných i placených programů pro správu databáze. Doporučovaným nástrojem je FlameRobin.56 FlameRobin je dedikovaný multiplatformní nástroj pro správu Firebirdu, distribuovaný pod BSD licencí. Poslední stabilní build nese označení 0.9.2.1, z čehož lze usuzovat, že se zatím ještě nejedná o zcela vyzrálý produkt. Součástí standardního distribučního balíčku je řada command-line utilit, které umožňují provádět spouštění SQL příkazů, zálohování, administraci uživatelů, výpočet statistik, opravu poškozených databází a rozdělení souborů na více částí (nejedná se o nástroj umožňující partitioning, ale o metodu, jak zacházet se velkými soubory, které vzniknou při zálohování databáze).
Celkové hodnocení
Firebird je volně dostupná databáze, která zajisté najde řadu uplatnění tam, kde například z nějakých důvodů není možno použít některou z „vyzrálejších“ open source alternativ. Pro použití v datovém skladu však se nejeví jako vhodná. Kritickým bodem je absence partitioningu a pokročilých indexovacích technik. Ke slabinám rovněž patří slabá konformita s SQL standardy nebo absence plnohodnotného administračního nástroje. Rovněž v kvalitě dokumentace prohrává Firebird konkurenci v podobě MySQL nebo PostgreSQL.
3.2.5 Microsoft SQL Express Edition Podobně jako Oracle, i společnost Microsoft nabízí jednu z edicí svého SQL Serveru pro využití zdarma. Edice se jmenuje Microsoft SQL Server 2012 Express Edition a je dostupná k použití pod vlastní EULA (End User License Agreement) licencí.57 Licence povoluje použití databáze ve vlastních aplikacích a distribuci v balíčku s vlastními aplikacemi. Zajímavostmi v licenčním ujednání jsou zákaz provozování produktu na jiné platformě než Windows (což 56
Third-party
Tools.
Firebird
Downloads
[online].
2013
[cit.
2013-04-14].
Dostupné
z:
57
Licenční ujednání není dostupné online, je součástí instalačního balíčku, zobrazuje se v průběhu instalace a po
dokončení instalace je nakopírováno na pevný disk.
41
by bylo stejně dosti obtížné) a zákaz publikace jakýchkoli benchmark testů databáze bez předchozího souhlasu společnosti Microsoft. SQL Server 2012 Express je nabízen ke stažení v několika instalačních baličkách, které se liší podle obsahu. Lze vybrat pouze samotný SQL Server, nebo balíček s rozšiřujícími nástroji jako Management Studio, Express Tools a Reporting Services. Všechny balíčky jsou dostupné pouze pro platformu Windows.
Technické detaily, HW a SW omezení
Edice Express s sebou přináší velká omezení, která jsou velmi podobná omezením obdobného produktu Oracle XE. Databázový stroj využije výpočetní kapacitu maximálně jednoho procesoru, a i to pouze do čtyř jader, a alokuje maximálně jeden gigabajt operační paměti. Objem dat, které můžeme do databáze uložit, je limitován 10 GB.58 Tato omezení jsou natolik zásadní, že bohužel činí zkoumání dalších vlastností produktu zbytečnými.
Celkové hodnocení
Microsoft SQL Server 2012 Express Edition je obdobou databáze Oracle Express Edition a nahradí jí pravděpodobně v případech, kdy existuje těsnější integrace na Microsoft prostředí a aplikace napsané na platformě .NET. Databáze je výrazně limitována, co se týče využití HW prostředků a množství perzistovaných dat, což vylučuje její nasazení v datovém skladu.
3.3 Reportingový software Reporting patří k poslední logické komponentě celkového uvažovaného BI řešení. Často však již není považován za součást datového skladu samotného, nýbrž za separátní modul, který z Presentation Area datového skladu čerpá data pro naplnění reportů. Cílem této práce není navrhnout plnohodnotnou reportovací/analytickou vrstvu, nebudeme se zde proto zabývat komplexními OLAP a Data Mining nástroji a omezíme se na zkoumání dostupných reportingových technologií, kterých využijeme v praktické ukázce pro demonstraci způsobu prezentace dat konečným uživatelům – konzumentům reportů.
58
Features Supported by the Editions of SQL Server 2012. Microsoft Technet [online]. 2012 [cit. 2013-04-14].
Dostupné z:
42
Ke zkoumání byly vybrány tři open source reportovací platformy: JasperReports, BIRT a Pentaho Reporting. Kritériem výběru byla především dostupnost grafického vývojového nástroje pro vizuální návrh reportů, možnost exportovat výstupy reportů do různých formátů a dále dostupnost serverové distribuční platformy pro doručení reportů konečným uživatelům. To ze seznamu vyloučilo například JFreeReport, což je pouze knihovna interpretující XML definice reportů, nebo Open Reports a SpagoBI, které slouží pouze jako adaptéry/interpretery pro reporty definované v jiných platformách a nenabízí žádný editor reportů.
3.3.1 JasperReports JasperReports je SW platforma dodávaná společností Jaspersoft, určená pro vývoj a provozování reportů. Platforma je tvořena řadou produktů. Jaspersoft Studio a iReport Designer jsou grafická návrhová prostředí, která slouží k vývoji reportů. JasperReports Server je Java EE serverová aplikace určená ke spouštění reportů a jejich distribuci konečným uživatelům. Poslední komponentou je JasperReports Library, což je program, který umožňuje spouštět vytvořené reporty mimo Studio, Designer nebo Server. Library je napsána v Javě a lze jí využívat jak samostatně zavoláním z příkazové řádky, tak zabudovat jako knihovnu do vlastní Java nebo Java EE aplikace. Library tvoří jádro celé platformy a je interně použita pro ve všech ostatních aplikacích, včetně Serveru. Všechny výše popsané komponenty jsou dostupné v řadě komerčních a jedné komunitní edici. Komerční edice nabízí oproti komunitní řadu funkcionalit navíc, například možnost exportovat reporty do formátu Flash či možnost vytvářet Ad Hoc reporty. Předmětem našeho zájmu je však Community Edition, licencovaná pod GPL (GNU General Public Licence).59 Co se týče verzování, platforma se snaží dodržovat jednotné číslování všech produktů, aktuální major/minor verze je 5.0, jednotlivé komponenty se liší pouze číslem buildu, s výjimkou Studia, které nese označení 2.0.2. Ke stažení na serveru SourceForge jsou k dispozici jak binární/instalační, tak i zdrojové balíčky. Pro návrh a vytváření definic reportů slouží hned dvě návrhová prostředí: Jaspersoft Studio a iReport Designer. Designer je historicky starší aplikace postavená na jádře produktu NetBeans. Studio je produkt s velmi podobnou funkcionalitou, vybudovaný však na platformě Eclipse – jedná se o portování funkcí z iReport Designeru. Existence dvou produktů je však
59
Compare Editions. Jaspersoft Business Intelligence Software [online]. 2013 [cit. 2013-04-26]. Dostupné z:
43
pouze dočasný stav, společnost plánuje v budoucnu vývoj starší aplikace iReport Designer ukončit a podporovat pouze novější Studio.60 Poslední zveřejněný release Studia je 2.0.2, což nekoreluje s primárním číslováním celé platformy. Po vyzkoušení obou aplikací vzniká (možná subjektivní) dojem, že Designer je vyzrálejší a stabilní program, kdežto Studio, přesto že nabízí stejné funkcionality, je hůře ovladatelné a méně přehledné, právě možná díky kratší vývojové historii.
Technické detaily
Životní cyklus Jasper reportů se skládá ze tří fází - návrhu, kompilace a spuštění. Nejprve je report vytvořen (navržen) ve Studiu nebo Designeru. Definice reportu je XML soubor, který obsahuje dotaz nebo skript načítající data z datového zdroje, funkce aplikované na načtená data a grafickou prezentaci reportu. Obě aplikace umožňují detailní návrh podoby reportu, jak po grafické, tak po datové stránce. Kromě tabulkového výčtu hodnot je možné využít i několik typů grafů. Report je možné spustit (vyzkoušet) přímo v návrhovém prostředí. Spuštění reportu znamená jeho naplnění daty ze specifikovaného datového zdroje a vytvoření finální vizuální podoby. Je podporována celá řada výstupních formátů včetně HTML, PDF, MS Excel, XML, Doc nebo Open Office. Paleta využitelných datových zdrojů je velmi široká, kromě klasických relačních databázi jsou podporovány XML a CSV soubory, Hibernate, Mondrian OLAP, JSON, Hadoop, Hive a další. Pro spuštění reportu mimo Studio nebo Designer je potřeba jej zkompilovat do binární podoby a využit Java programu JasperReports Library pro vygenerování výstupu.61 Zajímavější alternativou je však nasazení reportu na JasperReports Server. Jedná se o webovou aplikaci napsanou v Java EE. Pro nasazení aplikace jsou podporovány aplikační servery JBoss, Tomcat a Glassfish. Server lze využít jako centrální místo pro distribuci reportů uživatelům, včetně přidělení uživatelských rolí k reportům. Rovněž je možné plánovat pravidelné generování reportů a jejich automatické odesílání konzumentům prostřednictvím emailu. Server funguje zároveň jako repozitář pro definice reportů a umožňuje Studiu i
60
Introduction to Jaspersoft Studio. Jaspersoft community [online]. 2013 [cit. 2013-04-26]. Dostupné z:
61
JasperReports Library - Tutorial. Jaspersoft community [online]. 2013 [cit. 2013-04-26]. Dostupné z:
44
Designeru ukládat definice reportů centrálně.62 Nasazení reportu na Server je možné buď přímo z návrhové aplikace, či lze nejprve report exportovat do souboru a následně ručně importovat na server skrze webové rozhraní Serveru.
Dokumentace, komunita
Hlavní dokumentace k platformě je tvořena sadou PDF souborů popisujících jednotlivé produkty. Část dokumentů je přístupná až po bezplatné registraci. Mezi dokumenty zcela chybí příručka ke Studiu, pravděpodobně z toho důvodu, že aplikace je mladá a dokumentace zatím ještě nebyla vytvořena. Pro většinu funkcionalit ale postačí velmi podrobný manuál k iReport Designeru. Kvalita dokumentů je dobrá, nicméně i online dokumentace by byla určitě plusem, například kvůli snadnějšímu hledání z Googlu. Kromě PDF příruček je uživatelům k dispozici volně přístupná Community Wiki, která obsahuje přínosné Getting Started, FAQ a Tutorial články pro počáteční seznámení se s produkty. Kromě toho si můžeme přečíst i odbornější články, pokrývající pokročilejší témata ohledně konfiguračních nastavení, řešení specifických problémů aj. Orientace ve struktuře Wiki je zpočátku trochu nepřehledná, ale po krátké chvíli je možno si na ní zvyknout. Podporu komunity zprostředkovává „Answers“ sekce, kde je možné položit jakýkoli dotaz týkající se některého z produktů a čekat na odpověď některého z vývojářů či jiných uživatelů. Zběžné projití seznamu otázek však ukazuje, že většina zůstává alespoň týden nezodpovězena, popřípadě není zodpovězena vůbec.
Celkové hodnocení
JasperReports Community je solidní open source platforma pro tvorbu rozlišných typů reportů z rozmanité škály zdrojů dat. Mezi výhody patří přítomnost report serveru a jeho snadná integrace s návrhovou aplikací (Studiem nebo Designerem). Přínosem je též možnost zabudovat Reports Library do svých vlastních aplikací, například do již existujících manažerských portálů. Nevýhodou je souběžná existence dvou návrhových prostředí - Studia a Designeru - z nichž novější Studio není zatím plně dokončené a není dostatečně zdokumentováno. Oficiální dokumentace a Community Wiki poskytují pro vývojáře a administrátory dostatek informací,
62
Getting Started with JasperReports Server. Jaspersoft community [online]. 2013 [cit. 2013-04-26]. Dostupné z:
45
na zodpovězení otázek členy komunity se však nelze velmi spoléhat. I přes tyto menší nedostatky však pro účely malých a středních firem komunitní edice JasperReports postačuje.
3.3.2 BIRT BIRT (Business Intelligence and Reporting Tools) je open source reportingový systém. Systém se skládá ze dvou komponent: grafického návrhového prostředí založeného na platformě Eclipse (Designer) a dále z programu (Engine), který umožňuje vytvořené reporty spouštět. Engine je možné využívat samostatně nebo jej zabudovat do desktop nebo serverové Java aplikace. Jak designer, tak engine jsou licencovány pod Eclipse Public License v1. Projekt BIRT byl založen společností Actuate Corporation ve spolupráci s Eclipse Foundation v roce 2004.63 Společnost Actuate nabízí rovněž i řadu komerčních produktů založených na platformě BIRT a rozšiřujících jí o nové funkcionality.64
Technické detaily
BIRT designer je grafické návrhové prostředí určené pro vyvářeni definic reportů. Designer je postaven na platformě Eclipse, s tím, že přidává do Eclipse nové funkcionality pro vývoj reportů a ponechává přitom standardní sadu funkcionalit, čímž se liší od jiných grafických nástrojů (Japsersoft Studio, Talend Open Studio), které původní množinu funkcionalit redukují či odstraňují úplně. BIRT Designer tedy funguje jako rozšíření, které je možné přidat i do již existující instalace Eclipse. BIRT reporty se skládají z datového zdroje, datových transformací, business logiky a grafické prezentace.65 Z datových zdrojů jsou podporovány relační databáze skrze sadu předdefinovaných i generická JDBC spojení, dále soubory MS Excel, CSV, XML, big data Cassanda a Hive a nakonec volání webové služby. Ze zdrojových dat vytváří uživatel datasety, které jsou základem pro naplnění reportu daty. Tvorba datasetu závisí na typu zdroje dat,
63
Eclipse BIRT: Ride the Open Source Wave of the Future. Actuate, The BIRT Company [online]. 2013 [cit.
2013-04-27]. Dostupné z: 64
ActuateOne Products for Eclipse BIRT. Eclipse And Acutate BIRT Products [online]. 2013 [cit. 2013-04-27].
Dostupné z: 65
The Anatomy of a Report. BIRT Overview [online]. 2013 [cit. 2013-04-27]. Dostupné z:
46
v případě relační databáze se jedná napříkad o vytvoření SQL dotazu namapování získaných sloupců do položek datasetu. Datasety mohou být dále dle potřeby rozšířeny o nové dopočítané sloupce, jejichž hodnotu kalkuluje BIRT, případně podrobeny dalším potřebným agregačním výpočtům a transformacím. Pro definice transformací a vyhodnocování výrazů v celém BIRTu je použit jazyk JavaScript. Datasety jsou vloženy do grafického návrhu reportu. Návrh se vytváří z tabulek, textových polí, seznamů a jiných elementů, podobně, jako se například vytváří webové stránky v HTML. Do reportu je možné vložit i graf. Lze vybrat z několika druhů grafů (sloupcový, koláčový, kombinovaný a další). Pro graf definujeme zdrojová data (která vychází z data setů definovaných v předchozím kroku), potřebné agregační výpočty, vzhled a další nastavení. Průvodce pro vytvoření grafu lze přirovnat k podobnému průvodci z aplikace MS Excel. Finální výstup spuštěného reportu je možno získat v mnoha podobách, mimo jiné HTML, MS Word, Excel, PDF a PPT, Open Office ODP, ODS a ODT, PDF či Postskript. Samotná definice každého reportu je jediný XML soubor, ve kterém jsou zapsány všechny potřebné prvky – datové zdroje, SQL dotazy, grafická prezentace, aktivní prvky aj. Designer navíc umožňuje použití tzv. libraries, do kterých je možné např. datové zdroje, SQL dotazy nebo grafické šablony externalizovat a následně sdílet mezi mnoha reporty, či dokonce jinými vývojáři. Pokud chceme report spustit vně designeru, můžeme využít Java aplikace Report Engine. Engine se pouští z příkazové řádky zavoláním s příslušnými parametry, například cestou k souboru s definicí reportu. Primárním účelem Engine je ale jeho zabudování do vlastních aplikací, už desktopových nebo serverových. Součástí Engine jsou Java EE třídy, Servlety a JSP tagy pro snadnější integraci do webové aplikace. Standardní balíček obsahuje také již připravenou malou webovou aplikaci, jež slouží k zobrazování reportů. Aplikace však nabízí pouze základní funkcionalitu zobrazování a exportu a nepodporuje například zabezpečení, uživatelské role či automatické spouštění reportů a jejich distribuci.
Dokumentace, komunita
BIRT je velmi dobře zdokumentován. Oficiální dokumentace je přehledně sdružena na oficiálních webových stránkách a obsahuje všechny potřebné informace spojené s užíváním, návrhem reportů a vývojem vlastních rozšíření nad platformou. K dispozici jsou kromě tutoriálů 47
a Getting Started článků podrobné reference jak pro návrh reportů v designeru, tak Java API všech tříd ze zdrojového kódu. Je však poněkud překvapivé, že řada dokumentů je datována rokem 2004 nebo 2005, kdy projekt teprve začínal. BIRT disponuje širokou a aktivní komunitou. Jako základna slouží webové stránky birt-exchange.com podporované společností Actuate. Na těchto stránkách najdeme rovněž sekci tutoriálů, a dále velmi aktivní fórum s tisíci témat a příspěvků, pokrývajících široké spektrum témat. Dále tu najdeme i sekci DevShare, kde uživatelé nabízí svoje vlastní rozšíření platformy, a také tipy a triky pro užití i vývoj.
Celkové hodnocení
BIRT nabízí dobrou platformu pro vývoj reportů. Designer je přehledně uspořádán, je dostatečně intuitivní a snadno ovladatelný. Celá platforma je dobře dokumentována a podporována aktivní komunitou. Ke slabým stránkám z našeho úhlu pohledu je však absence plnohodnotného serveru pro distribuci reportů uživatelům. Filozofií BIRTu je nabídnout především kvalitní designer a řešení pro distribuci a konzumaci reportů nechat vývojáře implementovat podle konkrétních potřeb projektu. Nechceme-li tedy investovat dodatečné prostředky do vývoje, není pro nás BIRT správnou volbou.
3.3.3 Pentaho Reporting Pentaho Reporting Community Edition je open source reportingová platforma distribuovaná společností Pentaho Corporation pod licencí GPL (General Public License).66 Platforma zahrnuje komponenty Pentaho Report Designer, Pentaho Reporting Engine a Pentaho BI Server. Poslední stabilní verze pod označením 3.9.1 byla zveřejněna v listopadu roku 2012. Všechny komponenty jsou implementovány v jazyce Java (v případě serveru Java EE), proto je možné provozovat je v jakémkoli operačním systému, kde je Java nainstalována.
66
Pentaho BI Platform License FAQ. Pentaho Open Source Business Intelligence [online]. 2013 [cit. 2013-04-
28]. Dostupné z:
48
Technické detaily
Pentaho Report Designer je desktopová aplikace sloužící k návrhu definic reportů. Autoři se rozhodli nevyužít žádné hotové Rich Client platformy (jako například Eclipse nebo NetBeans) a napsali celé řešení na zelené louce, což se bohužel negativně podepsalo na grafickém vzhledu a ovladatelnosti programu. O funkcionality ovšem program ochuzen není a nabízí stejnou paletu nástrojů jako konkurenční řešení (například JasperReports nebo BIRT, popisované dříve v této kapitole). Definice reportu se opět skládá z datového zdroje, jednoho či více datasetů, jež jsou prezentovány v navrženém grafickém rozložení, a transformací na daty, pokud jsou potřeba. Report akceptuje vstupní parametry, pomocí kterých jej lze učinit interaktivním – uživatel tak například může změnit období, pro které jsou data vypočtena. Jako datové zdroje slouží JDBC spojení pro relační databáze a dále Pentaho Data Integration, Pentaho Analysis (Mondrian), XLS, CSV a XML soubory a volání Java třídy. Nad načtenými daty lze spouštět uživatelem definované dodatečné skripty, na výběr jsou jazyky Groovy nebo ECMAScript (JavaScript). Tělo reportu se skládá z řady vodorovných pásem (hlavička stránky, reportu, patička a další), do kterých myší přetahujeme proměnné a sloupce z datasetů. Iterace přes řádky datasetu pak způsobí opakované vypsání určených pásem do výstupu. Do reportu je možno vložit i jeden či více grafů. Jako množina dat pro grafy opět složí uživatelem definované datasety. Pro práci s daty a psaní výrazů jsou uživateli k dispozici zabudované utility funkce. Výstup reportu je možný do formátu PDF, MS Excel, HTML, Text, RTF, XML a CSV.67 Definice reportu navrženého v Designeru je představována binárním .prpt souborem v proprietárním formátu. Výstup reportu je možno vygenerovat s využitím komponenty Reporting Engine. Engine slouží zároveň jako sada knihoven pro zabudování Pentaho Reportingu jak do desktopových, tak do serverových aplikací. Platforma také nabízí již připravený plnohodnotný Pentaho BI Server určený k nasazování a spouštění reportů. Integrace se serverem je zabudována již do Designeru a umožňuje snadnou publikaci reportu na Server. Server umožňuje definovat pro reporty uživatelská práva. Je podporována i integrace s LDAP serverem pro získání uživatelských oprávnění z centrálního místa ve firmě.68
67
Pentaho Reporting. Pentaho Reporting Project [online]. 2013 [cit. 2013-04-28]. Dostupné z:
68
Changing to the LDAP Security DAO. Pentaho Wiki [online]. 2013 [cit. 2013-04-28]. Dostupné z:
49
Dokumentace, komunita
Dokumentace, která je sdílená pro všechny produkty platformy Pentaho, byla již rozebíraná v kapitole 3.1.2 (Pentaho Data Integration). Pro dokumentaci pro Pentaho Reporting v zásadě platí ty samé výtky popsané v uváděné kapitole. Problematická je především Wiki, jejíž část věnující se Reporting platformě je dosti nekvalitní. Informace ve Wiki jsou bohužel často roztroušené, nepřehledné, chybí části článků a přítomny jsou dokonce kategorie s názvem „Seriously Outdated Texts“. Celkově Wiki působí chaoticky nedůvěryhodně, a přesto, že její účelem je poskytovat jeden z hlavních zdrojů informace pro komunitní edici Pentaho Reportingu, hledání v ní je bohužel nesnadné a není vůbec zaručeno, že uživatel dostupnou informaci nalezne.
Celkové hodnocení
Ačkoli, co se týče funkcionalit, nezaostává Pentaho za jinými obdobnými platformami, od jejího použití odrazuje poměrně nepřehledné ovládání, neergonomické rozhraní Designeru a málo kvalitní a roztroušená dokumentace. Výhodou je naopak snadná integrace s jinými produkty Pentaho, včetně Pentaho Data Integration a Pentaho Analytics. Použití Pentaho Reportingu by tedy mělo svoje odůvodnění v případě, že pro Business Intelligence v našem podniku již jiné Pentaho produkty využíváme.
3.4 Závěr teoretické části Ve teoretické části práce jsme se podrobně věnovali průzkumu jednotlivých technologií pro implementaci tří základních komponent datového skladu – ETL nástroje, relační databáze a reportovací platformy. Pro každou z kategorií jsem nakonec vybral jeden konkrétní produkt, který se pro využití v požadovaném řešení hodí svými vlastnostmi nejvíce. Jako relační databáze byl zvolen produkt MySQL 5.6 Community. Důvodem pro výběr této databáze je její vyzrálost, mnohačetná referenční nasazení, dobrá výkonnost, možnost využití různých optimalizačních technik, absence umělých HW a SW omezení a vynikající dokumentace, spolu s rozsáhlou uživatelskou komunitou. Téměř rovnocennou alternativu však nabízí i produkt PostgreSQL, rovněž velmi kvalitní software. MySQL bylo nakonec vybráno z důvodu možnosti volby storage engine pro různé typy tabulek i schémat v rámci jedné 50
databázové instance. Záměrem je především využití MyISAM tabulek pro nenormalizované datamarty, což má zrychlit SELECT dotazy nad úložištěm. Další zkoumané produkty – Oracle XE, Microsoft SQL Express Edition a Firebird se pro využití v datovém skladu nehodí ať už z důvodů značných HW a SW omezení nebo nedostatečných funkcionalit a výkonnosti. Jako ETL nástroj bylo vybráno Talend Open Studio for Data Integration. Tento nástroj nabízí oproti ostatním produktům nejširší paletu funkcionalit při vytváření transformací, podporuje verzování jobů a export hotových skriptů do několika formátů včetně samostatně spustitelných balíčků, což nakonec převážilo nedostatek v podobě absence serverové části pro nasazení a spouštění transformací. Software disponuje dobrou dokumentací, je snadno ovladatelný, přehledný a dostatečně intuitivní. Druhou platformou, která by rovněž přicházela v úvahu, je Pentaho Data Integration, která disponuje i malým serverem Carte pro běh transformací, Spoon designer je však o něco hůře ovladatelný a ergonomický, velkým mínusem je dále zhoršená kvalita dokumentace. Jako reportingová platforma v námi uvažovaném řešení bude využita sada aplikací JasperReports. Tato platforma byla zvolena díky kvalitnímu a podrobně zdokumentovanému návrháři iReport Designer a plnohodnotnému JasperReports Serveru, umožňujícímu nasazení a distribuci připravených reportů. Pentaho Reporting, ač nabízí velmi podobnou škálu funkcionalit včetně serverové části, zaostává opět v pohodlí práce a dokumentační části. Dalším případným řešením by bylo využití platformy BIRT, což by však vyžádalo dodatečný vývoj pro customizaci nabízeného velmi jednoduchého serveru, popřípadě napsání svého vlastního serverového řešení. V následující čtvrté kapitole je představena ukázková implementace datového skladu s využitím těchto vybraných produktů.
51
4. Praktická část – implementace ukázkového datového skladu Praktická část této práce přináší ukázkovou implementaci datového skladu s využitím komponent, pro které jsme se rozhodli ve druhé kapitole – tedy databáze MySQL, Talend Open Studio for Data Integration a JasperReports. Ukázkové řešení postavíme na reálném příkladu z praxe. Výsledkem bude fungující datový sklad, včetně ETL skriptů pro jeho naplnění daty ze zdrojové databáze a příkladů reportů určených pro konečné uživatele. Plně nakonfigurované řešení je součástí přílohy k práci – paměťové karty, která obsahuje operační systém Windows virtualizovaný v prostředí VMware se všemi implementovanými komponentami.
4.1 Ukázkové řešení – popis problematiky Fungování datového skladu budeme ilustrovat na příkladu fiktivní společnosti Embex s.r.o, která podniká v oboru strojního vyšívání. Společnost přijímá objednávky od zákazníků – firem i fyzických osob – a provádí výšivku na různé druhy zboží i materiálů (trička, košile, bundy, čepice, ubrusy, ručníky aj.). Vyšití provádí automatické průmyslové stroje, jež je nutné naprogramovat – to znamená, že před samotným vyšitím je potřeba na základě grafických podkladů dodaných zákazníkem vytvořit vyšívací program, který řídí práci stroje. Vyrobení programu je zákazníkovi účtováno jako jedna z položek objednávky. Společnosti eviduje zákazníky a objednávky v informačním systému Clios (Clients and Orders Information Systém). Informační systém ukládá data do relační databáze a nenabízí žádné reportingové funkcionality. Management společnosti má zájem o vytvoření základního reportingu, aby získal statistiky o objednávkách a mohl lépe přizpůsobit budoucí firemní strategii. Řešením je vytvořit jednoduchý datový sklad a postavit nad ním reportingovou vrstvu tak, aby bylo možno snadno v budoucnu vytvářet i nové typy reportů. Informační zdroje dodávající data do datového skladu je možno v budoucnu rozšířit například i o účetní systém, což umožní kombinovat data z vícero zdrojů a reportovat například zpožděné placení faktur k objednávkám, případně jiné reporty dle potřeby.
52
4.2 Ukázkové řešení – implementace 4.2.1 Architektura řešení Následující obrázek ukazuje architekturu řešení:
Obrázek 2 - Architektura řešení Apache Tomcat 7.0
MySQL Community 5.5 Talend Open Studio
Clios IS Clios generuje
vytváří JasperReports Server DWH - Data Staging reporty
ETL joby spouští
spouští DWH - Datamart
generuje Systémový plánováč úloh
Definice reportů Jaspersoft DB
Jaspersoft iReport Designer
tok dat
Řešení vychází z teoretických základů popsaných v druhé kapitole a bude obsahovat čtyři databázové instance. První z nich je operační databáze informačního systému Clios.69 V této databázi jsou uložena operační data, která se každý den mění podle toho, jak v systému vznikají nové objednávky. Další dvě DB instance jsou součástí datového skladu. Data Staging bude obsahovat tabulky pro dočasné uložení dat pro účely jejich transformace a provádění výpočtů nad nimi. Data Presentation bude představováno jedním datamartem, v němž se budou nacházet tabulky dimenzí a faktů, ze kterých bude čerpat data reportingový mechanismus.
69
Poznámka – samotný informační systém Clios není součástí nakonfigurovaného ukázkového řešení. Řešení
obsahuje pouze databázi systému se vzorkem anonymizovaných dat
53
Poslední databáze bude využívaná JasperReports Serverem. Server do ní ukládá data nutná pro svůj běh – jedná se o metadata (definice datových zdrojů a reportů) a dále technická a konfigurační data, včetně uživatelů a přístupových rolí k jednotlivým reportům. Z důvodu zjednodušení ukázkové konfigurace, jež je součástí této práce, budou všechny instance reprezentovány jedinou databází MySQL, v níž vytvoříme čtyři separátní schémata. V reálné praxi je velmi pravděpodobné, že všechny instance budou odděleny, a to i jak na úrovni instanční, tak i fyzické – DB pro datový sklad a reporting pravděpodobně poběží na jiném serveru než provozní DB. Veškeré ETL skripty pro přesun dat mezi databázemi a jejich konverzi budou implementovány v Talend Open Studio for Data Integration. Skripty (v terminologii Talendu „joby“) budou exportovány do samostatně spustitelné podoby (podrobněji viz kapitola 3.1.4). Pro pravidelné automatické spouštění jobů bude využit systémový Plánovač úloh, nakonfigurovaný tak, aby spustil ETL joby každý den v 5:00 ráno. Reporting bude implementován na platformě JasperReports. Definice reportů budou vytvořeny v návrhovém prostředí iReport Designer a nasazeny na JasperReports Server. Data pro naplnění reportů budou čerpána z datamartu datového skladu. Uživatelé budou přistupovat k reportům skrze webové rozhraní Serveru za pomocí webového prohlížeče. Konfiguraci všech komponent si nyní popíšeme podrobněji.
4.2.2 Datový sklad – ETL a databáze
Provozní databáze informačního systému Clios
Databáze Cliosu obsahuje veškerá data nutná pro chod aplikace, nicméně z pohledu zdroje dat pro reporting nás zajímají především tabulky s daty o zákaznicích, objednávkách a položkách objednávek. Následující schéma ukazuje tyto tabulky a některé jejich sloupce (výčet je neúplný, nepodstatné a technické sloupce jsou vynechány):
54
Obrázek 3 - Clios, databázové schéma CUSTOMERS CID: INT <> _________________________ FIRST_NAME: VARCHAR LAST_NAME: VARCHAR COMPANY_NAME: VARCHAR ADDRESS: VARCHAR
ORDERS ORD_ID: INT <> __________________________ CID: INT <> NOTE: VARCHAR ORDER_NAME: VARCHAR METADATA: VARCHAR CREATION_DATE: DATETIME
ORDER_ITEMS ITEM_ID: INT <> _______________________ ORD_ID: INT <> DESCRIPTION: VARCHAR ITEM_DATA: BLOB
Tabulka ORDERS obsahuje data o objednávkách, cizím klíčem odkazuje na tabulku CUSTOMERS. Tabulka ORDER_ITEMS obsahuje popis položek objednávek v XML formátu (sloupec ITEM_DATA: BLOB), opět je využit cizí klíč pro odkaz na řádek s příslušnou objednávkou. Jak je zřejmé z diagramu, data v tabulkách jsou normalizována, obsahují údaje za dlouhé časové období a data jsou formátovaná tak, aby vyhovovala potřebám informačního systému (například XML reprezentace položky objednávky). Z pohledu reportingu nás ale budou zajímat například agregované údaje o typech zákazníků nebo o produktů, jež je objednáván nejčastěji. Zdrojová data musíme tedy transformovat do podoby vhodné k dotazům tohoto typu.
Data Staging
Prvním krokem bude načtení zdrojových dat z provozní databáze Cliosu do Data Staging databáze. Načtení bude probíhat každý den (například brzo ráno) a bude prováděno inkrementálně – vždy se načtou jen nové objednávky vzniklé předešlý den. Tím zajistíme, že vždy operujeme pouze s malou množinou dat, nikoli s veškerými provozními daty, a navíc odsuneme výpočty z provozního serveru do dedikované Staging databáze. Ze zdrojových dat vezmeme nikoli všechny, ale jen potřebné sloupce, a již v tomto kroku nad nimi provedeme některé transformace: z ORDER_ITEMS.ITEM_DATA XML řetězce vyparsujeme typ položky objednávky a materiál, na který se bude vyšívat, a z přítomnosti názvu firmy v tabulce zákazníků určíme, zda se jedná o fyzickou osobu nebo firmu. Data uložíme do tří tabulek, které jsou znázorněny na následujícím diagramu:
55
Obrázek 4 - Data Staging tabulky datového skladu DWH_STAGING_ORDER_ITEMS
DWH_STAGING_CUSTOMERS
DWH_STAGING_ORDERS
CID: INT <> ___________________________
ORD_ID: INT <> __________________________
CUSTOMER_TYPE: VARCHAR ADDRESS: VARCHAR
CID: INT <> CREATION_DATE: DATETIME
ITEM_ID: INT <> ____________________________ ORD_ID: INT <> ITEM_TYPE: VARCHAR ITEM_MATERIAL: VARCHAR ITEM_PRICE: DOUBLE
Načtení a transformaci má na starosti job LoadToStaging implementovaný v Talend Open Studio:
Obrázek 5 - Job - LoadToStaging
Job provádí čtení ze zdrojových tabulek, zápis do cílových Staging tabulek, parsování XML a spouští custom Java kód, jež obsahuje logiku nutnou pro určení typu zákazníka, typu položky objednávky a materiálu. Oranžové šipky označují tok dat, zelené logickou posloupnost událostí.
56
Datamart
Poslední databází, kam data přitečou, je Data Presentation Area. Pro účely naší ukázky bude tato databáze obsahovat jeden jednoduchý datamart. Data budou uspořádaná v dimenzionálním schématu v tabulkách dimenzí a tabulkách faktů:
Obrázek 6 - Tabulky v DWH datamartu DIM_DATE DIM_MATERIAL_TYPE DIM_DATE_ID: INT <> DATE: DATETIME <> YEAR: INT MONTH: INT DAY: INT
DIM_MATERIAL_TYPE_ID: INT <> MATERIAL_TYPE: VARCHAR <>
FACT_ORDER_ITEM
FACT_ORDER ROW_ID: LONG <> ____________________________ CUSTOMER_TYPE: INT <> DATE: INT <> ITEMS_COUNT: INT TOTAL_PRICE: DOUBLE
ROW_ID: LONG <> ____________________________ CUSTOMER_TYPE: INT <> PRODUCT_TYPE: INT <> MATERIAL_TYPE: INT <> DATE: INT <> PRICE: DOUBLE
DIM_CUSTOMER_TYPE
DIM_PRODUCT_TYPE
DIM_CUSTOMER_TYPE_ID: INT <> CUSTOMER_TYPE: VARCHAR <>
DIM_PRODUCT_TYPE_ID: INT <> PRODUCT_TYPE: VARCHAR <>
Na schématu vidíme čtyři dimenze: sdílené DIM_DATE a DIM_CUSTOMER_TYPE a nesdílené DIM_MATERIAL_TYPE a DIM_PRODUCT TYPE. Dimenze nesou informace o datu vytvoření objednávky, typu objednávajícího zákazníka, typu položky a typu materiálu, na nějž bude nanesena výšivka. Každá z tabulek obsahuje kromě umělého (surrogate) primárního klíče ještě i unikátní klíč se samotnou hodnotou, což při aktualizaci tabulek dimenzí při denním loadu zabraňuje vzniku duplicit. Faktové tabulky jsou dvě: FACT_ORDER a FACT_ORDER_ITEM,
odráží
jednotlivé
objednávky
a
jejich
položky.
Tabulka
FACT_ORDER obsahuje navíc agregované údaje o celkovém počtu položek v objednávce a jejích celkové ceně. Pro tabulky faktů využijeme MySQL engine MyISAM, který vykazuje 57
větší rychlost při čtení velkých objemů dat než výchozí InnoDB (podrobněji viz kapitola 3.2.1). Načtení dat do datamartu se skládá ze dvou kroků. Nejprve je potřeba aktualizovat tabulky dimenzí (vždy nové datum, případně nový typ materiálu či zákazníka) a teprve potom vložit nové záznamy do tabulek faktů. Data pro obě operace se získávají z Data Staging Area, kde je již máme částečně přizpůsobená tak, aby operace byly snadnější. Operace jsou opět implementovány jako joby v Talend Open Studiu – UpdateDatamartDimensions pro aktualizaci dimenzí a dva joby pro plnění tabulek faktů, LoadFactOrder a LoadFactOrderItems.
Obrázek 7 - Job UpdateDatamartDimensions
V prvním kroku je z tabulky objednávek pomocí SQL operátoru DISTINCT načten seznam unikátních datumů vzniku objednávek (v případě denního každodenního běhu jobu byl měl result set obsahovat pouze jedno – včerejší – datum, nicméně nic nebrání pustit všechny joby se vstupními parametry tak, aby spočítaly data za delší časové období). Datum je převedeno 58
na řetězec a rozděleno zvlášť na den, měsíc a rok a takto uloženo do tabulky dimenze DIM_DATE. Insert operace je nastavena tak, aby ignorovala případné duplicity. Dále, opět pomocí DISTINCT, načítáme typy zákazníků a obdobným způsobem aktualizujeme tabulku DIM_CUSTOMER_TYPE. Nakonec z tabulky s položkami objednávek načítáme informace o typech položek a typech materiálu a opět aktualizujeme příslušné tabulky dimenzí. Teď, když jsou tabulky dimenzí aktualizované, přikročíme k naplnění tabulek faktů.
Obrázek 8 - Job LoadFactOrder
Načtení záznamů do faktové tabulky objednávek probíhá následovně. Nejprve se spojí údaje o objednávkách a jejich položkách, za účelem výpočtu agregovaných údajů – celkové ceny objednávky a počtu položek v každé objednávce. Tyto údaje jsou spočteny ve speciální agregační komponentě pojmenované count stats. K výsledku připojíme informaci o typu zákazníka, abychom tuto informaci mohli z tabulky faktů referencovat. Nový řádek do tabulky FACT_ORDER je nakonec spočten v mapovací komponentě, která dohledá hodnoty klíčů v příslušných tabulkách dimenzí. Vytvoření řádku do tabulky FACT_ORDER_ITEM probíhá velmi podobně, jen s tím rozdílem, že se neprovádí žádné agregované výpočty a klíče se dohledávají ze čtyř tabulek dimenzí, nikoli ze dvou:
59
Obrázek 9 - Job LoadFactOrderItems
Na závěr vytvoříme jeden orchestrační job, jehož úkolem bude spouštět dílčí joby ve správném pořadí a se správným kontextem. V našem případě kontext slouží k předání jobům dvou parametrů – dateStart a dateEnd – vymezujících období, pro které celý výpočet provádíme. Parametry jsou vhodné ve chvíli, kdy úlohu spouštíme ručně (například kvůli předchozímu výpadku systému) a chceme přepočítat období delší než jeden den. Do jobu navíc přidáme komponentu notifikující administrátora při selhání některého z dílčích jobů:
60
Obrázek 10 - DailyLoadMasterJob
Export jobů a vytvoření pravidelné systémové úlohy
Navržené joby nejprve exportujeme z Talend Open Studia do samostatně spustitelné podoby. Ta představuje balíček Java .jar knihoven, konfiguračních souborů a dále vygenerovaný skript pro spuštění (.bat v případě Windows, .sh v případě Linux/Unix) celého jobu. Vzhledem k tomu, že jsme vytvořili jeden „master“ job, který volá dílčí joby, postačí nám export pouze tohoto jobu. Talend automaticky zahrnuje všechny dílčí joby do exportovaného balíčku. Talend nenabízí v komunitní edici žádný server, na kterém by bylo možné joby spouštět a plánovat, musíme proto k pravidelnému spouštění využít prostředků operačního systému. V OS Windows slouží k tomuto účelu systémová komponenta Naplánované úlohy, v Linux a Unix systémech nástroj Cron. Použití je v obou případech stejné, nástroj nakonfigurujeme tak,
61
aby každý den v 5:00 zavolal .bat (.sh) skript, který spustí master job a provede všechny potřebné ETL úlohy.
4.2.3 Reporting Pro tuto ukázkovou implementaci datového skladu jsem definoval tři typy reportů:
Tržby podle měsíce Tento report bude ukazovat celkovou sumu tržeb z objednávek rozdělených dle měsíce. Report bude navíc pro každý měsíc zobrazovat i počet položek objednávek a dále kombinovaný graf prezentující data v grafické podobě.
Typy objednávek Report bude zobrazovat rozdělení položek objednávek dle typů. Rozlišujeme tři typy položek – nášivka, výšivka a vytvoření vyšívacího programu. Report bude obsahovat koláčový graf znázorňující tyto údaje.
Počty objednávek dle typů zákazníka Tento report bude informovat o celkovém počtu objednávek dle měsíců, rozdělených podle typu zákazníka. Rozlišujeme tři typy zákazníků – soukromé osoby, firmy a osoby-podnikatele (OSVČ).
Všechny tyto reporty budou částečně interaktivní - uživatel prostřednictvím vstupního pole zadá rok, pro který se report má vygenerovat. Data pro všechny reporty budou čerpána z databáze Clios datamart, která obsahuje tabulky dimenzí a faktů naplněných pomocí ETL skriptů.
Implementace reportů
Definice reportů jsou vytvořeny v aplikaci Jaspersoft iReport Designer. Definice využívají JDBC datový zdroj pro připojení k dwh_datamart databázi. V každém reportu je uveden SQL dotaz, který naplní daty jeden či více datasetů. Data jsou pak zobrazena v tabulkové i grafické podobě. Každý report obsahuje hlavičku s logem fiktivní firmy Embex s.r.o.
62
Obrázek 11 - Ukázka reportu Tržby dle měsíce
63
Obrázek 12 - Ukázka reportu Typy objednávek
64
Obrázek 13 - Ukázka reportu Objednávky dle typu zákazníka
JasperReports Server
Přístup uživatelů k reportům je realizován skrze webové rozhraní JasperReports Serveru. Server je Java EE aplikace nasazená na aplikační server Apache Tomcat 7.0. Na serveru jsou nakonfigurovány uživatelské účty a přístupové role, umožňující běžným uživatelům vidět pouze tyto tři reporty. Uživatelé s administračním oprávněním mají přístup také k definici metadat (např. datové zdroje) a doplňkových zdrojů k reportům (např. obrázky vkládané do reportů).
65
Spuštění reportu probíhá po kliknutí na název reportu na úvodní obrazovce po přihlášení uživatele, případně po otevření přímého odkazu na report ve webovém prohlížeči. Vzhledem k tomu, že jsou všechny reporty interaktivní a vyžadují ke svému spuštění vstup – specifikaci roku, pro který mají být data zobrazena – vyzve server před zobrazením reportu uživatele k zadání této informace.
66
5. Závěr Základní motivací této práce bylo navrhnout způsob implementace datového skladu s využitím pouze volně dostupných bezplatných technologií, ať už s otevřeným zdrojovým kódem nebo bez. Uživatelem takového datového skladu by měla být firma malé či střední velikosti, která chce vyřešit potřebu reportování a analýzy podnikových dat, nemá však prostředky na to, aby investovala do komerčních Business Intelligence řešení. Práce se zaměřila především na datový sklad samotný, analytické nástroje byly rozebrány pouze částečně v podobě reportovací platformy. V úvodní části práce byla rozebrána základní architektura typického datového skladu a identifikovány komponenty, kterými je tvořen. Druhá část pak hledala na trhu konkrétní softwarové produkty, které by mohly být v roli těchto komponent využity. Byly zkoumány tři kategorie produktů – ETL (Extract Transform Load) nástroje, relační databáze a reportingová platforma). Bylo zjištěno, že bezplatných relačních databází je mnoho, nicméně pouze malá část z nich splňuje náročné požadavky, které na ně klade využití v datovém skladu. Reálně pak obstály pouze dvě z nich - MySQL a PostrgreSQL, které jsou si kvalitou takřka ekvivalentní. Co se týče ETL nástrojů, nabídka bezplatných produktů už není zdaleka tak široká, zřejmě kvůli poměrně specifickým případům využití tohoto software oproti velmi rozšířeným relačním databázím. Nicméně i mezi open source produkty se našly takové, které by dokázaly svoji funkci v datového skladu plnohodnotně zastat. Ze zkoumání vyšel nejlépe produkt Talend Open Studio for Data Integration. Nabídka kvalitních reportingových nástrojů je ještě užší než ETL komponent. Aplikace pro vizuální návrh reportů je komplexní produkt, který se implementuje obtížně. Z dostupných platforem byla nakonec zvolena JasperReports, která kromě dobré návrhové aplikace disponuje i serverem pro distribuci reportů. Vybrané produkty byly následně využity v ukázkové implementaci datového skladu, aby se ověřila jejich vhodnost a použitelnost. Bylo zjištěno, že vybudovat datový sklad s jejich využitím je možné a že se jedná o plně funkční řešení. Tímto práce tedy splnila svůj stanovený cíl.
67
Conclusion (English) The basic motivation of this bachelor thesis was to propose a way to implement a data warehouse only using freely accessible, free of charge technologies, either with open source code or not. A user of such a warehouse would be a small-to-mid size business, which needs to resolve the urge for data analysis and reporting, but on the other hand doesn’t possess sufficient funds for purchasing a commercial Business Intelligence solution. The thesis focused mainly on data warehouse itself, touching the analytical tools area only in the form of a reporting platform. The introductory part covered basic data warehouse architecture and identified components which it typically consists of. The second part was dedicated to search on the market for concrete software products, which would fulfill the roles of these components. The following three categories were researched – ETL (Extract Transform Load) tools, relational databases and reporting platforms. It was found out that many relational databases are freely available, although only a small portion of them fulfills high demands dictated by their potential usage in a data warehouse. Finally, only two of them stood the test – MySQL and PostgreSQL, both almost equivalent in quality. With regards of ETL tools, the offer is far more limited, probably due to quite specific usage area of such tools, in comparison with widespread relational databases. Nevertheless, even among open source tools such were discovered, that would fill in their role in a data warehouse adequately. Based on the research, Talend Open Studio for Data Integration was chosen. The set of quality reporting tools is even narrower than that of the ETL tools. A visual reports designer application is a complicated piece of software, uneasy to implement. Among available products, JasperReports platform was picked, which alongside with the quality designer app offers also a reports distribution server. The chosen products were then used in a sample data warehouse implementation, to prove their qualities and suitability. It was found out that it was indeed possible to build a data warehouse using them, and that
was a fully operational solution. Therefore the thesis
achieved its stipulated goal.
68
6. Seznam použitých zdrojů KIMBALL, Ralph a Margy ROSS. The data warehouse toolkit: the complete guide to dimensional modeling. 2nd ed. New York: Wiley, c2002. ISBN 978-0471200246.
11.2. Index Types. PostgreSQL 9.2.4 Documentation: Chapter 11. Indexes [online]. 2013 [cit. 2013-04-11]. Dostupné z:
5.9. Partitioning. PostgreSQL 9.2.4 Documentation: Chapter 5. Data Definition [online]. 2013
[cit.
2013-04-10].
Dostupné
z:
partitioning.html>
ActuateOne Products for Eclipse BIRT. Eclipse And Acutate BIRT Products [online]. 2013 [cit.2013-04-27]. Dostupné z:
Apatar Data Integration/ETL. SourceForge [online]. 2013 [cit. 2013-04-20]. Dostupné z:
Appendix D. SQL Conformance. PostgreSQL 9.2.4 Documentation [online]. 2013 [cit. 201304-10]. Dostupné z:
Classic, SuperClassic or Superserver. Firebird: Reference Manual [online]. 2013 [cit. 201304-14]. Dostupné z:
CloverCARE Support. CloverETL Services [online]. 2013 [cit. 2013-04-19]. Dostupné z:
69
CloverETL Designer. CloverETL Documentation [online]. 2013 [cit. 2013-04-19]. Dostupné z:
CloverETL Products. Data Integration Products [online]. 2013 [cit. 2013-04-16]. Dostupné z:
CloverETL Server. Family of CloverETL Products [online]. 2013 [cit. 2013-04-18]. Dostupné z:
Compare Editions. Jaspersoft Business Intelligence Software [online]. 2013 [cit. 2013-04-26]. Dostupné z:
CREATE INDEX. Firebird 2.5 Language Reference: DDL statements [online]. 2013 [cit. 2013-04-14]. Dostupné z:
Data Integration. TALEND. Download [online]. 2013 [cit. 2013-04-20]. Dostupné z:
Data Integration Features Comparison Matrix. TALEND. Data Integration [online]. 2013 [cit. 2013-04-20]. Dostupné z:
DB-Engines Ranking. SOLID IT. DB-engines: Knowledge Base of Relational and NoSQL Databáze Management Systems [online]. [cit. 2013-04-07]. Dostupné z:
Eclipse BIRT: Ride the Open Source Wave of the Future. Actuate, The BIRT Company [online]. 2013 [cit. 2013-04-27]. Dostupné z:
Features. PgAdmin: PostgreSQL Tools [online]. 2013 [cit. 2013-04-11]. Dostupné z: 70
Features Supported by the Editions of SQL Server 2012. Microsoft Technet [online]. 2012 [cit.2013-04-14]. Dostupné z:
Getting Started with JasperReports Server. Jaspersoft community [online]. 2013 [cit. 201304-26]. Dostupné z:
H.3. Procedural Languages. PostgreSQL 9.2.4 Documentation: Appendix H. External Projects [online]. 2013 [cit. 2013-04-10]. Dostupné z:
Hardware and Software. Engineered to Work Together. ORACLE. Oracle corporation [online]. 2010 [cit. 2013-04-07]. Dostupné z:
How to deploy a Job on SpagoBI server. Talend Open Studio for Data Integration v5.2.2 User Guide (EN) [online]. 2013 [cit. 2013-04-21]. Dostupné z:
How to export Jobs. Talend Open Studio for Data Integration v5.2.2 - User Guide (EN) [online]. 2013 [cit. 2013-04-21]. Dostupné z:
How to run a Job. Talend Open Studio for Data Integration v5.2.2 - User Guide (EN) [online]. 2013 [cit. 2013-04-21]. Dostupné z:
Changing to the LDAP Security DAO. Pentaho Wiki [online]. 2013 [cit. 2013-04-28]. Dostupné z:
Chapter 1. MySQL Workbench Introduction. MYSQL. MySQL Workbench: Reference Manual [online]. 2013 [cit. 2013-04-08]. Dostupné z: 71
Chapter 17. Partitioning. MYSQL. MySQL 5.6 Reference Manual [online]. 2013 [cit. 201304-08]. Dostupné z:
Chapter 55. Transformers. CloverETL Designer [online]. 2013 [cit. 2013-04-19]. Dostupné z:
Installation Guide: 3 Licensing Restrictions. Oracle® Database Express Edition [online]. 2013 [cit.2013-04-14]. Dostupné z:
Installing and Upgrading MySQL. MYSQL. MySQL 5.6 Reference Manual [online]. 2013 [cit.2013-04-07]. Dostupné z:
Introduction. Firebird Internals [online]. 2009 [cit. 2013-04-14]. Dostupné z:
Introduction to Jaspersoft Studio. Jaspersoft community [online]. 2013 [cit. 2013-04-26]. Dostupné z:
JasperReports Library - Tutorial. Jaspersoft community [online]. 2013 [cit. 2013-04-26]. Dostupné z:
Jaspersoft ETL Resources. Jaspersoft ETL: The Open Source Data Integration Platform [online]. 2013 [cit. 2013-04-20]. Dostupné z:
Job Entry Reference. Pentaho Infocenter [online]. 2013 [cit. 2013-04-22]. Dostupné z:
72
KETL. SourceForge [online]. 2013 [cit. 2013-04-20]. Dostupné z:
License. PostgreSQL: About [online]. 2013 [cit. 2013-04-10]. Dostupné z:
MySQL 5.5: Storage Engine Performance Benchmark for MyISAM and InnoDB: A MySQL Technical White Paper. MySQL 5.5: Storage Engine Performance Benchmark for MyISAM and InnoDB [online].2011 [cit. 2013-04-07]. Dostupné z:
MySQL 5.6 FAQ: General. MYSQL. MySQL 5.6 Reference Manual [online]. 2013 [cit. 2013-04-07]. Dostupné z:
MySQL 5.6 Reference Manual: Table of contents. MYSQL. MySQL 5.6 Reference Manual [online]. 2013 [cit. 2013-04-08]. Dostupné z:
MySQL Editions. MYSQL. MySQL: The world's most popular open source database [online]. 2013 [cit. 2013-04-07]. Dostupné z:
Oracle Technology Network Developer License Terms for Oracle Database Express Edition. Oracle Technology Network: Licenses [online]. 2013 [cit. 2013-04-14]. Dostupné z:
Overview of Features: Summary of features. Firebird: Reference Manual [online]. 2013 [cit. 2013-04-14]. Dostupné z:
Part VII. Components Overview. CloverETL Designer [online]. 2013 [cit. 2013-04-19]. Dostupné z:
73
Partitioning System (Like Oracle). Firebird Tracker: Firebird Core [online]. 2009 [cit. 201304-14]. Dostupné z:
PDI license. Pentaho Data Integration [online]. 2013 [cit. 2013-04-21]. Dostupné z:
Pentaho BI Platform License FAQ. Pentaho Open Source Business Intelligence [online]. 2013 [cit.2013-04-28]. Dostupné z:
Pentaho Reporting. Pentaho Reporting Project [online]. 2013 [cit. 2013-04-28]. Dostupné z:
PostgreSQL Hardware Performance Tuning. MOMJIAN, Bruce. UNIVERSITY OF LEEDS. PostgreSQL Hardware Performance Tuning [online]. 2008 [cit. 2013-04-10]. Dostupné z:
Proč je užívání pojmu ,,Free Software'' (svobodný software) lepší než ,,Open Source'' (otevřený zdrojový kód). FREE SOFTWARE FOUNDATION, Inc. Operační systém GNU [online]. [cit. 2012-12-20]. Dostupné z:
Reference Guide. Talend Open Studio Components v5.2.2 [online]. 2013 [cit. 2013-04-20]. Dostupné z:
Running a Transformation. Pentaho Wiki [online]. 2013 [cit. 2013-04-22]. Dostupné z:
Scriptella ETL Drivers Matrix. Scriptella ETL Reference Documentation [online]. 2013 [cit. 2013-04-15]. Dostupné z:
Scriptella ETL Project License. Scriptella [online]. 2013 [cit. 2013-04-15]. Dostupné z:
74
Scripts Syntax. Scriptella ETL Reference Documentation [online]. 2013 [cit. 2013-04-15]. Dostupné z:
Server Packages. Firebird Downloads [online]. 2013 [cit. 2013-04-14]. Dostupné z:
Storage Engines. MYSQL. MySQL 5.6 Reference Manual [online]. 2013 [cit. 2013-04-07]. Dostupné z:
Sun to Acquire MySQL. MYSQL. MySQL Press releases: The world's most popular open source database [online]. 2008 [cit. 2013-04-07]. Dostupné z:
Table of Contents. PostgreSQL 9.2.4 Documentation [online]. 2013 [cit. 2013-04-11]. Dostupné z:
Talend Community Forum. Talendforge [online]. 2013 [cit. 2013-04-21]. Dostupné z:
The Anatomy of a Report. BIRT Overview [online]. 2013 [cit. 2013-04-27]. Dostupné z:
The Firebird licenses. Firebird: Reference Manual [online]. 2013 [cit. 2013-04-14]. Dostupné z:
Third-party Tools. Firebird Downloads [online]. 2013 [cit. 2013-04-14]. Dostupné z:
Transformation Step Reference. Pentaho Infocenter [online]. 2013 [cit. 2013-04-22]. Dostupné z:
75
7. Seznam obrázků
Obrázek 1 - Struktura datového skladu .................................................................................... 13 Obrázek 2 - Architektura řešení ............................................................................................... 53 Obrázek 3 - Clios, databázové schéma..................................................................................... 55 Obrázek 4 - Data Staging tabulky datového skladu ................................................................. 56 Obrázek 5 - Job - LoadToStaging ............................................................................................ 56 Obrázek 6 - Tabulky v DWH datamartu .................................................................................. 57 Obrázek 7 - Job UpdateDatamartDimensions .......................................................................... 58 Obrázek 8 - Job LoadFactOrder ............................................................................................... 59 Obrázek 9 - Job LoadFactOrderItems ...................................................................................... 60 Obrázek 10 - DailyLoadMasterJob .......................................................................................... 61 Obrázek 11 - Ukázka reportu Tržby dle měsíce....................................................................... 63 Obrázek 12 - Ukázka reportu Typy objednávek ...................................................................... 64 Obrázek 13 - Ukázka reportu Objednávky dle typu zákazníka................................................ 65
76
8. Seznam příloh 1. CD s výstupy z praktické části 2. Paměťová karta SD s výstupy s praktické části
77
8.1 CD s výstupy z praktické části CD obsahuje výstupy z praktické části práce. Obsah CD:
Adresář
Obsah
DB_scripts
SQL skripty pro vytvoření databázových schémat pro databázi MySQL: clios_db_content.sql – zdrojová databáze systému Clios dwh_datamart.sql – datamart s tabulkami dimenzí a faktů dwh_staging.sql – Staging area datového skladu
Jaspersoft_report_definitions
Definice reportů vytvořené v aplikaci Jaspersoft iReport Designer
Talend_ETL_Jobs
Projekt exportovaný z aplikace Talend Open Studio for Data Integration. Obsahuje definice ETL jobů pro transformaci a přesun dat mezi databázemi.
78
8.2 Paměťová karta SD s výstupy z praktické části Paměťová karta obsahuje výstupy z praktické části a image operačního systému Windows 7 Professional virtualizovanou v prostředí VMware.70 Operační systém obsahuje kompletně nakonfigurované řešení popisované ve čtvrté kapitole. Obsah paměťové karty:
Adresář / soubor
Obsah
DB_scripts
SQL skripty pro vytvoření databázových schémat pro databázi MySQL: clios_db_content.sql – zdrojová databáze systému Clios dwh_datamart.sql – datamart s tabulkami dimenzí a faktů dwh_staging.sql – Staging area datového skladu
Jaspersoft_report_definitions
Definice reportů vytvořené v aplikaci Jaspersoft iReport Designer
Talend_ETL_Jobs
Projekt exportovaný z aplikace Talend Open Studio for Data Integration. Obsahuje definice ETL jobů pro transformaci a přesun dat mezi databázemi.
VMWare_player_setup
Obsahuje instalační soubor aplikace VMware Player 5.0.2 použité pro virtualizaci.
Win7_BP
Virtuální VMware image operačního systému.
Popis virtualizovaného operačního systému
Celé ukázkové řešení je nakonfigurováno v adresáři C:\DWH. Tento adresář obsahuje: •
ApacheTomcat 7.0 – aplikační server využitý pro nasazení Jaspersoft Serveru. Nainstalován jako systémová služba.
70
Licence pro tuto kopii operačního systému byla získána v rámci programu MSDN Academic Alliance, ve
spolupráci Unicorn College a společnosti Microsoft. Licence umožňuje použití operačního systému pro akademické účely zadarmo.
79
•
ETL_Jobs – skripty vytvořené v Talend Open Studio for Data Integration, exportované do samostatně spustitelné podoby
•
Japsersoft – instalace aplikace iReport tDesigner 5.0.4
•
MySQL 5.6.11 – instalace databáze. Nainstalována jako systémová služba.
•
Report_definitions – definice reportů vytvořené v aplikaci iReport Designer
•
Talend – instalace aplikace Talend Open Studio for Data Integration
Plocha obsahuje následující soubory a odkazy: •
Zkratka do složky C:\DWH
•
Soubor hesla.txt – obsahuje hesla ke všem nainstalovaných aplikacím a serverům
•
Services – odkaz na administrační program pro služby systému Windows
•
Task Scheduler – odkaz na administrační program pro plánování úloh systému Windows
•
Talend Open Studio – spustí aplikaci
•
HeidiSQL – spustí aplikaci HeidiSQL využívanou pro administraci databáze MySQL
•
iReport Designer – spustí aplikaci
•
Odkaz JasperSoft Server – otevře v prohlížeči přihlašovací dialog JapserSoft Server webové aplikace
•
Odkaz Report – Trzby – otevře v prohlížeči příslušný report (je vyžadován přihlášení, viz soubor hesla.txt)
•
Odkaz Report – Objednavky - otevře v prohlížeči příslušný report (je vyžadován přihlášení, viz soubor hesla.txt)
•
Odkaz Report – Polozky Objednavek - otevře v prohlížeči příslušný report (je vyžadován přihlášení, viz soubor hesla.txt)
80