Adattárházak 2011.11.26. Láng András
Business Intelligence (BI) Üzleti Intelligencia Cél: Jó minőségű adat Helyesen felhasznált információ + tudás profit Üzleti Intelligencia Business Intelligence (BI)
Üzleti Intelligencia Adatvagyon menedzsment Adatminőség konszolidáció, adattisztítás Adatleltár adatkatalógusok, metaadat-kezelés Törzsadatok MDM, egyéb törzsadat nyilvántartások Központi riportfejlesztés és riportmenedzsment Adattárházból integrált, historikus forrásból Más rendszerekből forrásrendszerből, adatbázis linken keresztül Törzsadat mulplikátumok felderítése, számuk csökkentése Adatpótlás, helyesbítés érvényes adatokkal Zajok kiszűrése Technikai és üzleti metaadatok nyilvántartása Off-line, on-line metaadat karbantartás Törzsadat-kezelés (Master Data Management) Pl. Központ Ügyféltörzs Pl. címadatszótárak, cégnyilvántartások
Adattárházak létjogosultsága Egymástól elszigetelt rendszerek Lekérdezés csak az adott rendszer adataira készíthető Operatív rendszerek Általában csak aktuális adatok Normalizált struktúrák Adattárház Integrált Historikus Denormalizált adatszerkezet
Az adattárházak jellemzői Az adattárházak olyan adatbázisok, amelyek az elemzésre szánt adatokat integráltan: több forrásrendszer bevonásával historikusan: nem csak aktuális, hanem visszamenőleges adatok is rendelkezésre állnak elemzésre optimalizált formában: denormalizáltan, OLAP struktúrában tartalmazzák.
OLTP OLAP OLTP OLAP szerkezet normalizált denormalizált orientáció tranzakciók lekérdezések időszak aktuális historikus felhasználók számának nagyságrendje 100 – 1000 1 – 10 jellemző műveletek DQL, DML DQL, ETL tárhely igény nagyságrendje MB – GB GB – TB elvárt rendelkezésre állás folyamatos időszakos
Az idő dimenzió Az OLAP rendszerekből kinyert információk szinte mindig valamilyen időszakra/időszakokra vonatkoznak. időszakokat tartalmazó dimenzió szükségessége Az idő dimenzió tartalma előre meghatározható, üzemeltetésszerű, rendszeres töltése nem szükséges. Természetesen ez alól kivétel, amikor új időszakot kell nyitni. Például amikor az idő dimenzió a 2005-2010 évi időszakot tartalmazza, és tudjuk, hogy nemsokára szükség lesz a 2011 évi időszakokra, kiegészítjük azt ezzel az intervallummal. Az idő dimenzió általában az alábbi szintekkel rendelkezik: év > negyedév > hónap (> nap) és/vagy év > hét (> nap)
ROLAP MOLAP HOLAP ROLAP MOLAP Adatbázis típusa Relációs Multidimenzionális Építőelemek Ténytáblák, dimenziótáblák Adatkockák, dimenziók Adatok szemcsézettsége Gyakran elemi is Jellemzően csak aggregált Tárhely igény Kisebb Nagyobb (az adatkocka üres cellái is helyet foglalnak) Műveletek SQL műveletek: csoportfüggvények, analitikus függvények Lefúrás, felgörgetés, szeletelés, részkocka képzése A HOLAP (Hibrid OLAP) rendszerek a ROLAP és a MOLAP rendszerek ötvözete: A kis szemcsézettségű (alacsony szinten lévő) adatokhoz a MOLAP struktúrából a ROLAP struktúrába történő átfúrással juthatunk el.
Normalizáltság Az OLTP rendszerekben az adatok normalizált állapotban tárolódnak, így biztosítva az adatok integritását illetve az adatbázis anomáliák (beszúrási, módosítási, törlési) megelőzését. COUNTRY_ID COUNTRY_ISO_CODE COUNTRY_NAME COUNTRY_NAME_HIST COUNTRY_SUBREGION_ID 52790 US United States of America 52797 52776 DE Germany 52799 52789 GB United Kingdom 52784 NL The Netherlands 52780 IE Ireland 52777 DK Denmark 52779 FR France 52778 ES Spain 52788 TR Turkey 52786 PL Poland 52795 52775 BR Brazil 52798 52773 AR Argentina 52783 MY Malaysia 52793 52782 JP Japan 52781 IN India 52774 AU Australia 52794 52785 NZ New Zealand 52791 ZA South Africa 52792 52787 SA Saudi Arabia 52796 52772 CA Canada 52771 CN China 52769 SG Singapore 52770 IT Italy COUNTRY_SUBREGION_ID COUNTRY_SUBREGION COUNTRY_REGION_ID 52799 Western Europe 52803 52797 Northern America 52801 52798 Southern America 52792 Africa 52800 52795 Eastern Europe 52794 Australia 52805 52796 Middle East 52804 COUNTRY_REGION_ID COUNTRY_REGION 52803 Europe 52801 Americas 52804 Middle East 52802 Asia 52805 Oceania 52800 Africa
Normalizáltság Az OLAP rendszerekben az adatok denormalizált állapotban tárolódnak, ezáltal az adatok tárolása redundáns lesz. COUNTRY_ID COUNTRY_ISO_CODE COUNTRY_NAME COUNTRY_NAME_HIST COUNTRY_SUBREGION_ID COUNTRY_SUBREGION COUNTRY_REGION_ID COUNTRY_REGION 52790 US United States of America 52797 Northern America 52801 Americas 52776 DE Germany 52799 Western Europe 52803 Europe 52789 GB United Kingdom 52784 NL The Netherlands 52780 IE Ireland 52777 DK Denmark 52779 FR France 52778 ES Spain 52788 TR Turkey 52786 PL Poland 52795 Eastern Europe 52775 BR Brazil 52798 Southern America 52773 AR Argentina 52783 MY Malaysia 52793 Asia 52802 52782 JP Japan 52781 IN India 52774 AU Australia 52794 52805 Oceania 52785 NZ New Zealand 52791 ZA South Africa 52792 Africa 52800 52787 SA Saudi Arabia 52796 Middle East 52804 52772 CA Canada 52771 CN China 52769 SG Singapore 52770 IT Italy
ROLAP rendszerek felépítése A tény- illetve dimenziótáblák háromféle struktúrába rendeződhetnek, azaz egy ROLAP rendszer felépítését tekintve háromféle lehet: csillag (Star): egy ténytábla van és ahhoz közvetlenül kapcsolódnak a dimenziótáblák hópehely (Snowflake): egy ténytábla van, de van olyan dimenziótábla, ami egy másik dimenziótáblához kapcsolódik csillagkép (Galaxy): több ténytábla van és a dimenziótáblák egyszerre több ténytáblához ténytáblához kapcsolódhatnak Csillag séma Hópehely séma Csillagkép séma Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Tény-tábla Tény-tábla Tény-tábla Tény-tábla Tény-tábla Tény-tábla Tény-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla Dimenzió-tábla
ROLAP rendszerek felépítése A ROLAP rendszerek építőelemei: Dimenziótáblák: egy vagy több hierarchiát tartalmaznak, amelyek szintekre bontódnak (A legalsó szint minden hierarchiában ugyanazokból az elemekből áll. Amennyiben a legfelső szint minden hierarchiánál a teljes összegzettség, úgy (értelemszerűen) ez is azonos és csak egy elemből áll.) Ténytáblák: dimenzióazonosítókból és tényadatokból épülnek fel A végfelhasználó amit lát, nem más, mint a dimenziókombinációk és a hozzájuk tartozó tényadatok. dimenzió-azonosító: elsődleges kulcs (egyedi) Dimenziótábla Ténytábla dimenzió-azonosító hierarchia 1 szint n … szint 1 hierarchia 2 szint m hierarchia p szint o hierarchiák: legalább egy, de lehet több is (pl.: ügyfél dimenzió esetén: típus, életkor, cím) dimenzió-azonosítók: idegen kulcsok, kapcsolómezők a dimenziókhoz dimenzió-azonosító 1 … dimenzió-azonosító q tényadat 1 tényadat r tényadatok: más szóval mértékek, mérőszámok, ezek maguk a megjelenítendő mennyiségek (minden esetben valamilyen aggregátum, például: összeg, átlag, minimum, maximum, szórás, számosság.) szintek: minden hierarchia szintekből épül fel, az elemi szinttől akár a teljes összegzettségig (pl.: ügyfél dimenzió cím hierarchia esetén: ügyfél > település > megye > ország > összes)
Normalizáltság Az OLTP – OLAP struktúraváltás szkriptje az alábbi: select c.*, csr.country_subregion, cr.* from country c, country_subregion csr, country_region cr where c.country_subregion_id = csr.country_subregion_id and csr.country_region_id = cr.country_region_id; Az OLAP – OLTP transzformációé pedig ez: create table country as select c.country_id, c.country_iso_code, c.country_name, c.country_name_hist, c.country_subregion_id from countries c; create table country_subregion as select distinct c.country_subregion_id, c.country_subregion, c.country_region_id create table country_region as select distinct c.country_region_id, c.country_region
ROLAP rendszerek felépítése ROLAP dimenziótábla ROLAP ténytábla (dimenzióként megjelenítve) (adatkockaként megjelenítve)
ROLAP műveletek Csoportosítások (csoportfüggvények alkalmazásával): select t.CALENDAR_YEAR, t.CALENDAR_QUARTER_DESC, t.CALENDAR_MONTH_NAME, sum(c.UNIT_COST) from costs c, times t where c.TIME_ID = t.TIME_ID group by t.CALENDAR_YEAR, t.CALENDAR_QUARTER_DESC, t.CALENDAR_MONTH_NAME order by 1,2,3; CALENDAR_YEAR_NAME QUARTER_OF_YEAR MONTH_OF_YEAR SUM(C.UNIT_COST) 1998 1 267075,27 2 223557,36 3 168231,81 4 139356,61 5 151632,71 … 2001 8 375737,07 9 298819,95 10 305243,79 11 290580,86 12 450160,26
ROLAP műveletek Szűrések (feltételek alkalmazásával): select t.CALENDAR_YEAR, t.CALENDAR_QUARTER_DESC, t.CALENDAR_MONTH_NAME, sum(c.UNIT_COST) from costs c, times t where c.TIME_ID = t.TIME_ID and t.CALENDAR_YEAR = 1999 group by t.CALENDAR_YEAR, t.CALENDAR_QUARTER_DESC, t.CALENDAR_MONTH_NAME order by 1,2,3; CALENDAR_YEAR_NAME QUARTER_OF_YEAR MONTH_OF_YEAR SUM(C.UNIT_COST) 1999 1 218920,74 2 214401,62 3 133037,95 4 113051,94 5 123442,13 6 116762,91 7 130807,69 8 130646,56 9 125848,42 10 107763,99 11 106420,43 12 226298,69
ROLAP műveletek Dimenzió(k) elhagyása: Tételezzük fel, hogy a következő dimenziók léteznek: PRODUCTS, PROMOTIONS, TIMES, CHANNELS Amennyiben így van, az előbbi oldalakon bemutatott lekérdezések dimenziószűkítést alkalmaznak. Az összes dimenziót tartalmazó lekérdezés a következőképpen festene: select p.PROD_CATEGORY_DESC, pm.PROMO_CATEGORY, t.CALENDAR_QUARTER_DESC, ch.CHANNEL_CLASS, sum(c.UNIT_COST) from costs c, products p, promotions pm, times t, channels ch where c.TIME_ID = t.TIME_ID and c.PROD_ID = p.PROD_ID and c.PROMO_ID = pm.PROMO_ID and c.CHANNEL_ID = ch.CHANNEL_ID group by p.PROD_CATEGORY_DESC, pm.PROMO_CATEGORY, t.CALENDAR_QUARTER_DESC, ch.CHANNEL_CLASS order by 1,2,3;
ROLAP műveletek További lehetőségek: rollup cube analitikus függvények Példa a rollup-ra: select t.CALENDAR_QUARTER_DESC, t.CALENDAR_MONTH_NAME, sum(c.UNIT_COST) from costs c, times t where c.TIME_ID = t.TIME_ID and t.CALENDAR_YEAR = 1999 group by rollup(t.CALENDAR_QUARTER_DESC, t.CALENDAR_MONTH_NAME) order by 1,2; Példa a cube-ra: group by cube(t.CALENDAR_QUARTER_DESC, t.CALENDAR_MONTH_NAME)
MOLAP rendszerek felépítése adatkocka tényadat 2500 dimenzió aggregáltság szintek dimenzió dimenzió
MOLAP műveletek felgörgetés felgörgetés lefúrás lefúrás részkocka képzése szeletelés dimenzió elhagyása
MOLAP műveletek – ROLAP műveletek lefúrás – csoportosítás finomítása felgörgetés – összevontabb csoportosítás szeletelés – szűrés egy dimenziónál egy konkrét értékre részkocka képzése – szűrés dimenzió elhagyása – dimenziók szűkítése
Az adattárház helye PS: Operatív rendszer (Production System) ED (TS) IS (TS) IS (TS) IS (TS,SS) ED PS: Operatív rendszer (Production System) SS: Forrásrendszer (Source System) TS: Célrendszer (Target System) IS: Információs rendszer (Information System) ED: Elektronikus dokumentum (Electronic Document) IS PS DWH PS ED (PS) PS OS (PS) OS (PS) OS (PS) OS (PS) ED
Az adattárház típusai adatpiac réteg transzformációs réteg Célrendszerek információs rendszerek adatpiac réteg transzformációs réteg háromrétegű staging réteg Adattárház adattisztítás, historizálás, struktúraváltás, kalkulációk, szűrés adatpiac réteg kétrétegű staging réteg Forrásrendszerek operatív és egyéb rendszerek
Az adattárház egy lehetséges felépítése Információs rendszerek … IS1 IS2 IS3 IS4 ISn Információ kinyerése Adatpiacok (ROLAP vagy MOLAP struktúrában) Kocka- generálás, Adatpiacosítás Historikus adatok (ROLAP struktúrában) Delta-képzés (historizálás) Metaadat-kezelő rendszer Adattárház Integrált előző napi adatok (ROLAP struktúrában) Struktúraváltás, tisztítás, transzformálás Forrásrendszerek előző napi lenyomata (OLTP struktúrában) Szűrés, közös platformra hozás Forrásrend-szerek … PS1 PS2 PS3 PS4 PSn
Komplexitás, erőforrás igény Sokrétű felhasználás Adatbányászat Rejtett összefüggések algoritmus segítségével vagy manuálisan történő feltérképezése, számszerűsítése. Mutatószámok képzése Kulcsfontosságú (KPI) mutatószámok előállítása és prezentálása közérthetó, esztétikus formában. Elemzések készítése Nagy mennyiségű információ megjelenítése úgy, hogy az szükség szerint szűrhető, kategorizálható legyen. Riportok, jelentések készítése Táblázatos vagy azzá alakítható formátumú, rögzített adattartalommal rendelkező lekérdezések eredménytáblái. Operatív/front-end rendszerek ellátása adatokkal Jellemzően tételes, könnyen származtatható adatok előállítása és továbbítása. Általában kiemelt fontosságú a rendelkezésre állás. Komplexitás, erőforrás igény ID Name Type Relevant 324 Szabó C y 321 Hajnal B n
Az adattárházak felhasználási területei (példák) A kinyert információ felhasználása Végfelhasználó Rövid- és hosszútávú stratégiai döntések meghozatalához szükséges jelentések Felső- és középvezetők, a menedzsment Jelentésszolgálat a felügyeleti szervek felé A jelentéseket szolgáltató területek dolgozói (illetve később természetesen az érintett felügyeleti szerv dolgozói) Multinacionális vállalatok esetén adatszolgáltatás az anyavállalat felé Az anyavállalatnál dolgozó elemzők illetve a csoportszintű menedzsment tagjai A szervezet normális működéséhez szükséges elemzések például egy bankban a hitelkockázat-elemzési területen dolgozók
Az adattárházak fejlesztése Kétféle fejlesztési metódus: Big Bang A Big Bang fejlesztés során felmérik a szervezek különböző egységeiben az aktuális és lehetséges (releváns) igényeket, majd felépítik az adattárházat, beleértve az adatpiacokat is. Inkrementális Az inkrementális fejlesztés alkalmazásánál egy igény jelentkezése során felépítenek egy (esetleg több) adatpiacot. Az igénynek nyilvánvalóan olyannak, kell lennie, amely kielégítése adattárház igénybe vételével lenne célszerű. Az előbbi értelemszerűen hosszabb átfutási idejű ás költségesebb fejlesztést igényel, mint az utóbbi. (Természetesen a változáskövetéssel elkészülő újabb adatpiac verziók is fejlesztés révén valósulnak meg.)
Az adattárházak fejlesztése Az inkrementális fejlesztés ábráján az egy nem egy adatforrást jelez, hanem a fejlesztéshez felhasznált forrásrendszerek halmazát. 1. fejlesztés 2. fejlesztés 3. fejlesztés DM DM DM DM DM DM DWH DWH PS PS PS PS PS PS Inkrementális Big Bang PS
Az adattárházak fejlesztése A fejlesztés menete (mindkét esetben): Igények felmérése, követelmények meghatározása Logikai adatmodell elkészítése (az igények lefordítása) Forrásadatok megkeresése, forrásrendszerek feltérképezése Fizikai adatmodell elkészítése (platformfüggően valamennyi objektumra) Megvalósítás Tesztelés (felhasználói – adattartalmi, performanciális, regressziós) Ősfeltöltés (az adattárház feltöltése a régebbi adatokkal pl. archív adatbázisokból) A két legalapvetőbb különbség a hagyományos és az adattárház fejlesztés között a fenti 3. és 7. pont. A 3. pont a forrásrendszerek integrálásából , a 7. pont az adatok historikus mivoltából adódik.
Az adattárházak fejlesztése Előny (+)/Hátrány (-) Big Bang Inkrementális Igények felmérése - Az egyes szervezeti egységek nem biztos, hogy szükségét érzik a fejlesztésnek, ezért az együttműködés csorbát szenvedhet. + Mivel az érintett terület nyújtotta be az igényt, bizonyosan teljes mértékben együttműködik. Többletmunka újabb igények felmerülése esetén Általában már tartalmazza az adattárház a szükséges adatokat. Gyakran nem tartalmazza még az adattárház a szükséges adatokat. Fejlesztési, üzemeltetési költségek Fejlesztés időigénye Sokszorosa az inkrementálisnak. Töredéke a Big Bang-nek. Tárhely igény Már a kezdetekkor nagy. Eleinte kevesebb, az egyes inkrementumok beépülésével nő.
Üzemeltetési sajátosságok Az adattárház adattartalma folyamatosan nő A tárhely igény folyamatosan, meglehetősen nagy léptékben növekedik Erős szerver választása, újabb diszkek hozzárendelése Az adattárház töltése történhet rendszeresen (naponta, hetente, havonta) vagy ad-hoc jelleggel A rendszeres töltések ütemezetten szoktak végbemenni Ütemezett, egymástól függő áttöltő processzek (egy processz jellemzően egy objektumot tölt
Kérdések?
Köszönöm a figyelmet!