Odtwarzanie przerwanego procesu ekstrakcji danych
Transkrypt
Odtwarzanie przerwanego procesu ekstrakcji danych
Laboratorium Hurtowni Danych Marcin Gorawski Paweł Marks Gliwice 2004 Spis tre ci 1. Wst p .............................................................................. 4 1.1. Przebieg wiczenia ............................................................................................. 4 2. Rola procesu ekstrakcji danych do hurtowni danych. 5 2.1. Hurtownie danych .............................................................................................. 5 2.2. Proces ekstrakcji danych..................................................................................... 5 2.2.1. Cel ekstrakcji danych.............................................................................. 5 2.2.2. Odtwarzanie przerwanego procesu ekstrakcji .......................................... 7 2.3. Przegl d metod odtwarzania ............................................................................... 8 2.3.1. Metoda podziału danych wej ciowych (batching) ................................... 8 2.3.2. Metoda kopii migawkowych i punktów powrotu..................................... 9 2.3.3. Metoda podziału procesu ekstrakcji (staging)........................................ 10 2.3.4. Powtarzanie procesu ekstrakcji (Redo) .................................................. 10 2.3.5. Metoda oparta o algorytm Design-Resume............................................ 11 2.3.6. Klasyfikacja metod odtwarzania ........................................................... 14 3. rodowisko ekstrakcji danych ETL-DR .................... 15 3.1. Opis grafu ekstrakcji......................................................................................... 16 3.2. Hierarchia klas i własno ci ............................................................................... 16 3.3. Własno ci obiektowe........................................................................................ 18 3.3.1. Własno input ..................................................................................... 18 3.3.2. Własno dr.......................................................................................... 18 3.3.3. Własno output ................................................................................... 18 3.3.4. Własno env ........................................................................................ 19 3.4. Własno ci klas w złów..................................................................................... 19 3.4.1. Klasy bazowe........................................................................................ 19 3.4.1.1. Klasa AbstractNode .................................................................. 19 3.4.1.2. Klasa Extractor......................................................................... 20 3.4.1.3. Klasa Transformation ............................................................... 20 3.4.1.4. Klasa Inserter ........................................................................... 20 3.4.2. Klasy ekstraktorów ............................................................................... 21 3.4.2.1. Klasa FileExtractor .................................................................. 21 Spis tre ci 3 3.4.2.2. Klasa DBExtractor ................................................................... 21 3.4.3. Klasy insertorów................................................................................... 22 3.4.3.1. Klasa FileInserter ..................................................................... 22 3.4.3.2. Klasa DBInserter...................................................................... 22 3.4.3.3. Klasa OracleDBInserter ........................................................... 23 3.4.4. Klasy transformacji............................................................................... 24 3.4.4.1. Klasa AggregationTransformation............................................ 24 3.4.4.2. Klasa GroupTransformation ..................................................... 24 3.4.4.3. Klasa GeneratorTransformation ............................................... 25 3.4.4.4. Klasa JoinTransformation ........................................................ 25 3.4.4.5. Klasa MergeTransformation ..................................................... 26 3.4.4.6. Klasa UnionTransformation ..................................................... 26 3.4.4.7. Klasa ProjectionTransformation............................................... 27 3.4.4.8. Klasa FilterTransformation ...................................................... 27 3.4.4.9. Klasa FunctionTransformation ................................................. 28 3.4.4.10. Klasa specjalna VMQueue ...................................................... 29 3.5. Atrybuty wyj ciowe w złów transformuj cych................................................. 29 3.6. Uruchomienie procesu ETL.............................................................................. 30 3.6.1. Plik stanu aplikacji................................................................................ 32 Literatura ......................................................................... 33 1. Wst p Proces ekstrakcji danych do hurtowni danych trwa zwykle do długo, mog to by godziny a nawet dni. W czasie ekstrakcji hurtownia danych jest wył czona z normalnego u ytkowania, d y si wi c do zminimalizowania czasu potrzebnego na wypełnienie hurtowni danymi. Wyst pienie awarii przerywaj cej ekstrakcj pozostawia hurtowni z niekompletnymi danymi, które nie nadaj si do wykorzystania w systemach bazuj cych na hurtowni danych (DSS, EIS). W takiej sytuacji mo na albo uruchomi całe przetwarzanie od pocz tku, co nie jest rozwi zaniem zbyt efektywnym, albo zastosowa odtwarzanie przerwanego procesu ekstrakcji i uzupełni brakuj ce dane. 1.1. Przebieg wiczenia - zapoznanie z ró nymi algorytmami odtwarzania przerwanego procesu ekstrakcji, - szczegółowe omówienie algorytmu odtwarzania Design-Resume, - zapoznanie si ze rodowiskiem ETL-DR i oferowanymi przez nie mo liwo ciami, - zrealizowanie przykładowego procesu ekstrakcji, poł czone z symulowaniem awarii i odtwarzaniem tak przerwanego procesu, - zrealizowanie procesu ekstrakcji zadanego przez prowadz cego (przygotowanie odpowiedniego skryptu konfiguracyjnego rodowiska), - wykonanie pomiarów efektywno ci odtwarzania przygotowanego procesu ekstrakcji wg wskazówek prowadz cego. 2. Rola procesu ekstrakcji danych do hurtowni danych 2.1. Hurtownie danych Hurtownia danych to analityczna baza danych wykorzystywana jako podstawa systemu wspomagania podejmowania decyzji. Hurtownie tworzy si dla du ych ilo ci danych, które mog pochodzi b d to z systemów transakcyjnych, b d ze ródeł archiwalnych. W oparciu o hurtownie, które zapewniaj dost p do zapisanych w nich danych, tworzone s systemy analityczne. Systemy analityczne mo na podzieli na dwie kategorie. Pierwsza z nich to Systemy Wspomagania Podejmowania Decyzji (ang. Decision Support Systems, DSS). Operuj one na szczegółowych informacjach biznesowych i s narz dziem przeznaczonym dla menad erów niskiego i redniego szczebla. Druga grupa to Systemy Informowania Przedsi biorstwa (ang. Executive Information Systems, EIS). Narz dzia tej grupy pozwalaj na analiz danych i ich wielowymiarow prezentacj na wy szym poziomie konsolidacji, co czyni je najbardziej przydatnymi dla menad erów wy szego szczebla. Współczesne systemy hurtowni danych dostarczaj narz dzi z obu kategorii. 2.2. Proces ekstrakcji danych 2.2.1. Cel ekstrakcji danych Aby zaprojektowana hurtownia danych mogła realizowa postawione przed ni zadania konieczne jest wypełnienie jej odpowiednimi danymi. Dane te mog pochodzi z wielu ró nych i niezale nych ródeł. Mog to by : - dane transakcyjne, - dane archiwalne, - dane zewn trzne. Nie wszystkie dane pochodz ce ze ródeł wymagaj przeniesienia do hurtowni. Potrzebne s tylko te informacje, które nios wiedz na temat modelowanych zjawisk Rola procesu ekstrakcji danych do hurtowni danych 6 biznesowych. Szacuje si , e z systemów transakcyjnych do hurtowni przenoszone jest rednio około 20% danych [5]. Pozostałe 80% to informacje nieistotne dla systemów analitycznych, wykorzystywane jedynie podczas działania systemów transakcyjnych. Poniewa ródeł jest wiele, a dane maj zosta przeniesione do jednej hurtowni danych, pojawia si problem integracji danych pochodz cych z ró nych ródeł. Dane te z reguły nie s ze sob zgodne, np.: wyst puj ró nice w formacie zapisu daty, nios informacj o transakcjach zapisane w ró nych walutach. Konieczne jest wi c dokonanie odpowiednich konwersji maj cych na celu uzyskanie spójnych danych i jednolitego ich zapisu. Nie wszystkie dane zostan poprawnie przetworzone. W ka dej bazie danych mog wyst pi dane bł dne, które nie b d mogły zosta przetransformowane. Takie bł dy mog by spowodowane przez tzw. czynnik ludzki, np.: bł dne wprowadzenie danych przez człowieka. Konieczne jest zatem odrzucenie danych bł dnych – problem czyszczenia danych. Po ujednoliceniu i oczyszczeniu danych, cz sto dokonywane s dodatkowe przekształcenia. Na tym etapie mog zosta ustalone warto ci domy lne atrybutów, mog zosta przygotowane wymagane agregaty, które pozwol zwi kszy wydajno hurtowni danych. W przypadku hurtowni typu ROLAP etap ten nie jest obligatoryjny, jest on natomiast wymagany w systemach typu MOLAP, które przewa nie zawieraj w kostce danych informacje zagregowane wg wybranych wymiarów. Po dokonaniu odpowiednich przekształce dane s gotowe do załadowania do hurtowni. Współczesne metody ekstrakcji nie dokonuj bezpo redniego przenoszenia danych ze ródeł do bazy hurtowni danych, lecz korzystaj z tzw. obszaru po redniego [6]. W obszarze tym dokonywane jest spajanie, czyszczenie i konwertowanie danych. Dopiero w kolejnym kroku nast puje ładowanie danych z obszaru po redniego. D ane po rednie: - P liki tekstow e D ane transakcyjne D ane archiw alne D ane zew n trzne - B azy danych A plikacje: - E kstrakcja w ła ciw a - In tegracja - C zyszczenie - K onw ersja - Ł adow anie do h urtow ni H urtow nia danych O bszar po redni Rys. 2.1 Zarys procesu ekstrakcji danych Rola procesu ekstrakcji danych do hurtowni danych 7 Stosowanie obszaru po redniego nie jest obowi zkowe, ale ułatwia realizacj bardziej zło onych procesów, ma du y wpływ na mo liwo zrównoleglenia całego przetwarzania. Dane mog trafia do obszaru po redniego z wielu ró nych systemów komputerowych, sam obszar równie mo e by rozproszony na ró nych komputerach. W obszarze po rednim dane mog by przechowywane w dowolny sposób, ułatwiaj cy i usprawniaj cy wykonywanie zaplanowanych przekształce ekstrakcji kluczowym czynnikiem jest czas, liczy si integralno ci lecz szybko danych. Podczas procesu wi c nie zachowanie wi zów dost pu do danych. St d najefektywniejszym cz sto okazuje si przechowywanie danych w zwykłych zbiorach sekwencyjnych. Proces ekstrakcji mo e by uruchamiany codziennie, raz na tydzie , raz na miesi c, zale y to od potrzeb i charakteru systemu analitycznego. Wa nym jest fakt, e w czasie ładowania danych do hurtowni, staje si ona niedost pna dla u ytkowników. Wynika st d ograniczenie czasu realizacji procesu ekstrakcji do tych odcinków czasu, kiedy hurtownia danych nie jest u ywana. Mo e to mie miejsce w nocy lub w czasie weekendu. Wa ne jest aby rozpocz ty proces uko czy w zało onym czasie. Niestety nie zawsze si to udaje, czego przyczyn mo e by : - du a liczba przetwarzanych informacji, co wymaga dłu szego czasu ni pierwotnie zało ono, - wyst pienie awarii. W pierwszym przypadku zmian wymaga plan, wg którego uruchamiana jest ekstrakcja. Wyst pienie awarii z reguły wi e si z konieczno ci zastosowania odtwarzania przerwanego procesu ekstrakcji. 2.2.2. Odtwarzanie przerwanego procesu ekstrakcji Wyst pienie awarii podczas ładowania danych do bazy hurtowni danych – niezale nie od przyczyny jej wyst pienia – objawia si zawsze tak samo: w miejscu docelowym ekstrakcji znajduj tylko prefiks zbioru danych, który miał by załadowany. Poniewa hurtownie danych operuj na bazach znacznych rozmiarów, w czasie pojedynczego ładowania do hurtowni trafia ogromna ilo informacji, np.: 16GB danych dziennie [1]. Załadowanie zbioru danych o rozmiarze od kilkudziesi ciu do nawet 100GB mo e trwa nawet 24 godziny. W przypadku wyst pienia awarii podczas ładowania cz sto okazuje si , e pozostały czas w wyznaczonym na ładowanie oknie czasowym jest niewystarczaj cy, aby uruchomi cały proces od pocz tku i uko czy go. Administrator hurtowni ma wtedy dwa wyj cia: Rola procesu ekstrakcji danych do hurtowni danych - pozostawi baz 8 hurtowni danych nie uaktualnion lub niekompletn , zakładaj c, e podczas nast pnego ładowania konieczne b dzie załadowanie znacznie wi kszej ilo ci danych, - zastosowa jeden z mo liwych algorytmów odtwarzania przerwanego procesu ekstrakcji. Awarie przerywaj ce proces ekstrakcji nie s czym rzadkim. Raport opublikowany przez Sagent Technologies zawiera informacj , e rednio co trzydziesty proces ładowania przerywany jest wyst pieniem bł du. Mo na wyró ni dwa typy bł dów powoduj cych przerwanie procesu ekstrakcji: bł dy logiczne i bł dy systemowe. Bł dy logiczne to bł dy zawarte w tre ci samych danych. Je li proces ekstrakcji został przerwany wyst pieniem takiego bł du, to po jego wznowieniu nast pi przerwanie procesu w tym samym miejscu (o ile dane ródłowe pozostan bez zmian). Do bł dów systemowych mo na zaliczy awari dysku, brak zasilania, bł d w RDBMS. Po wyst pieniu bł du tego typu jest mało prawdopodobne, e bł d ten wyst pi ponownie i po raz kolejny przerwie proces ładowania danych. Przedstawione w kolejnym punkcie metody odtwarzania przerwanego procesu ekstrakcji pozwalaj na prawidłowe doko czenie przerwanego procesu po wyst pieniu bł dów systemowych. 2.3. Przegl d metod odtwarzania 2.3.1. Metoda podziału danych wej ciowych (batching) Batching to metoda polegaj ca na podziale danych wej ciowych na niezale ne bloki (ang. batch), których przetwarzanie odbywa si sekwencyjnie blok po bloku. W przypadku awarii przetwarzanie wznawiane jest od bloku danych, podczas przetwarzania którego miała miejsce awaria. Bloki, których przetwarzanie zostało ju zako czone, nie wymagaj ponownego przetwarzania. Powa n wad tej metody jest to, e nawet znaj c semantyk stosowanych transformacji, bardzo trudno jest dokona podziału danych na bloki, które mog by przetwarzane niezale nie. Ogranicza to mo liwo prostych procesów ekstrakcji. Charakterystyczn wykresie przedstawiaj cym zale no stosowania tej metody do bardzo cech tej metody s „schodki” na czasu odtwarzania w funkcji stopnia uko czenia ekstrakcji. Zalet tej metody jest to, e nie wymaga adnych zmian w kodzie transformacji, które wspomagałyby odtwarzanie [1,2]. 50 90 45 80 czas przetwarzania [s] czas odtwarzania [s] Rola procesu ekstrakcji danych do hurtowni danych 40 35 30 25 20 15 10 5 0 9 70 60 50 40 30 20 10 0 0 20 40 60 80 100 1 3 % uko czenia ekstrakcji 5 7 9 11 liczba bloków Rys. 2.2 Wpływ momentu awarii na czas odtwarzania metod podziału danych wej ciowych (a) oraz wpływ liczby bloków na całkowity czas przetwarzania bezawaryjnego (b) [1] 2.3.2. Metoda kopii migawkowych i punktów powrotu Ide tej metody jest wykonywanie w czasie normalnego przetwarzania okresowych kopii migawkowych (ang. snapshots), punktów powrotu (ang. savepoints) [1] lub punktów kontrolnych (ang. savepoints, checkpoints) [8]. W przypadku awarii transformacje wznawiaj przetwarzanie od ostatniego punktu powrotu lub punktu kontrolnego (oba terminy maj to samo znaczenie), w którym został zapami tany stan aplikacji. 350 50 czas przetwarzania [s] czas odtwarzania [s] 45 40 35 30 25 20 15 10 5 0 mało selektywne przetwarzanie 300 250 200 150 100 silnie selektywne przetwarzanie 50 0 0 20 40 60 80 100 0 % uko czenia ekstrakcji 1 2 3 liczba punktów powrotu Rys. 2.3 Wpływ momentu awarii na czas odtwarzania metod kopii migawkowych (a) oraz wpływ liczby punktów powrotu na całkowity czas przetwarzania bezawaryjnego (b) [1] Implementacja odtwarzania opartego o kopie migawkowe, punkty powrotu lub punkty kontrolne wymaga dobrej znajomo ci semantyki transformacji zwłaszcza w przypadku realizacji tej metody na poziomie u ytkownika przez programistów tworz cych aplikacj . W przypadku przedstawionym w [1] gdzie implementacja została przeprowadzona wła nie na tym poziomie wykazano, e tworzenie punktów powrotu, wnosi du e dodatkowe obci enie (ponad 200%) na prawidłowo przebiegaj ce przetwarzanie, co jest spowodowane zapisywaniem znacznych ilo ci informacji na dysk. Rola procesu ekstrakcji danych do hurtowni danych 10 Ponadto dla uzyskania maksymalnej wydajno ci konieczne jest dokonanie wyboru optymalnej liczby tworzonych punktów powrotu. Ich ilo przetwarzania bezawaryjnego oraz wydajno ma wpływ na czas odtwarzania [1]. 2.3.3. Metoda podziału procesu ekstrakcji (staging) Metoda ta polega na podziale całego procesu ekstrakcji na powi zane logicznie ze sob grupy podprocesów. Dane wyj ciowe jednej grupy s zapisywane na dysku, a jednocze nie s przekazywane na wej cie nast pnej grupy. W przypadku awarii konieczne jest uruchomienie tylko tych grup podprocesów, które jeszcze nie zako czyły przetwarzania. Podczas odtwarzania wykorzystywane s dane zapisane przez poprzedni grup podprocesów, która zd yła zako czy działanie przed upadkiem. Metoda ta daje dobre wyniki odtwarzania jednak wnosi du e obci enie zwi zane z zapisywaniem danych przej ciowych. Powoduje te – co jest szczególnie niekorzystne – utrat współbie no ci przetwarzania [1,2]. 2.3.4. Powtarzanie procesu ekstrakcji (Redo) W razie wyst pienia awarii proces ekstrakcji jest wznawiany od samego pocz tku, natomiast proces ładuj cy dane do hurtowni danych filtruje przetworzone ju krotki tak, e do hurtowni nie trafiaj dane ju tam zapisane przed upadkiem. Metoda ta cechuje si prostot i nie nakłada adnego obci enia na normalnie przebiegaj cy proces ekstrakcji. Nie wykorzystuje ona jednak krotek ju zapisanych w hurtowni i wszystkie dane wej ciowe s przetwarzane jeszcze raz. Technika ta jest cz sto stosowana, mi dzy innymi w produktach firmy Informatica. 50 czas odtwarzania [s] 45 40 35 30 25 20 15 10 5 0 0 20 40 60 80 100 % uko czenia ekstrakcji Rys. 2.4 Wypływ momentu awarii na czas odtwarzania Redo Rola procesu ekstrakcji danych do hurtowni danych 11 2.3.5. Metoda oparta o algorytm Design-Resume Metoda odtwarzania oparta o algorytm Design-Resume [1] jest najbardziej skomplikowan spo ród przedstawionych metod, jest modyfikacj odtwarzania Redo i składa si z dwóch procedur: Design oraz Resume. W odró nieniu od techniki Redo, w tej metodzie dane s filtrowane ju w czasie przetwarzania tak aby nie przetwarza ponownie krotek, które i tak zostałyby odrzucone przez w zeł ładuj cy. Filtrowanie danych mo e si odbywa na dwa sposoby. W struktur grafu ekstrakcji wł czane s dodatkowe w zły filtruj ce, które usuwaj ze strumienia danych te krotki, które nie spełniaj zadanych kryteriów filtrowania. Drugi sposób – znacznie bardziej wydajny – to filtrowanie wbudowane w w zły pobieraj ce dane, tzw. ekstraktory. Filtrowanie wbudowane w w zeł ekstraktora jest wydajniejsze, gdy krotki, które nie spełniaj odpowiednich kryteriów, mog zosta pomini te nawet bez pobierania ich z miejsca ródłowego, co wpływa korzystnie na czas realizacji odtwarzania. Dobór filtrów i metod filtrowania jest zadaniem procedury Design. Dost pne s dwa typy filtrów: filtry typu prefix oraz filtry typu subset. Filtr typu prefix odfiltrowuje ze strumienia danych wszystkie krotki do momentu, gdy nie natrafi na krotk , która b dzie odpowiadała wybranym atrybutom ostatniej załadowanej przed upadkiem krotki. Wyznaczenie atrybutów odbywa si równie w procedurze Design na podstawie własno ci w złów grafu. Po zidentyfikowaniu krotki odpowiadaj cej ostatniej załadowanej krotce, filtr staje si nieaktywny, tzn. pozostałe dane przekazywane na jego wej cie, przepisuje bez zmian na swoje wyj cie. Filtr typu subset działa w oparciu o zbiór atrybutów identyfikuj cych krotki, które ju docelowego. Odfiltrowane zostan zostały załadowane do miejsca te krotki, które b d odpowiadały atrybutom przekazanym jako parametr filtru. Poniewa parametry filtrów ustalane s na podstawie danych ju załadowanych do hurtowni, to w przypadku filtrów subset rozmiar zbioru okre laj cego parametry filtrowania mo e by bardzo du y. Rys. 2.5 W zeł ródłowy X oraz w zeł docelowy Y bez filtra (a) oraz z przypisanym filtrem F (b) Rola procesu ekstrakcji danych do hurtowni danych 12 Rys. 2.6 W zeł ekstraktora z wbudowanym filtrem F Wej ciom w złów grafu przypisane s nast puj ce własno ci wykorzystywane przez procedur Design [7]: - map-to-one – opisuje stan, w którym ka da krotka sekwencji wej ciowej w zła przyczynia si do powstania co najwy ej jednak krotki w sekwencji wyj ciowej. Własno t spełniaj operacje: selekcja, projekcja, unia, agregacja oraz niektóre zł czenia, - suffix-safe – wskazuje, czy prefiks sekwencji wej ciowej mo e by bezpiecznie odfiltrowany. Własno ta jest spełniona, gdy dowolny prefiks sekwencji wyj ciowej mo e by utworzony z odpowiedniego prefiksu sekwencji wej ciowej. Inaczej, kolejno taka sama jak kolejno spełniaj ce t własno produkowania krotek sekwencji wyj ciowej jest krotek w sekwencji wej ciowej. Transformacje to: selekcja, projekcja oraz agregacja wykonana na posortowanej sekwencji wej ciowej, - set-to-seq – jest spełniona, gdy kolejno ma wpływu na kolejno krotek w sekwencji wej ciowej nie krotek w sekwencji wynikowej. Własno t spełniaj transformacje sortuj ce krotki sekwencji wej ciowej, - no-hidden-contributors – jest spełniona, gdy ka da krotka z sekwencji wyj ciowej jest utworzona z cało ci lub cz ci krotki (lub krotek dla przypadku wielu wej ) sekwencji wej ciowej. Własno spełniaj operacje: projekcja, agregacja, unia oraz niektóre typów zł cze . Oprócz własno ci przypisanych wej ciom w złów grafu, istniej równie własno ci opisuj ce same w zły [7]: - in-det-out – jest prawdziwa, gdy transformacja generuje zawsze t sam sekwencj wyj ciow przy podaniu na wej cie tej samej sekwencji wyj ciowej (sekwencje s takie same, gdy kolejno krotek równie jest taka sama w obu sekwencjach). Spełniaj ja wszystkie transformacje deterministyczne, Rola procesu ekstrakcji danych do hurtowni danych - 13 no-spurious-output – jest prawdziwa, gdy na ka d krotk z sekwencji wyj ciowej składa si przynajmniej jednak krotka (lub krotki). Jedynie unia nie spełnia tej własno ci, - same-set – jest spełniona, gdy transformacja daje ten sam zbiór krotek wyj ciowych przy podaniu na wej cie (lub wej cia) tego samego zbioru (zbiorów) krotek wej ciowych. Spełnia j wi kszo transformacji. W oparciu o przedstawione własno ci procedura Design dokonuje przypisania odpowiednich filtrów lub procedur reekstrakcji (w przypadku filtrowania wbudowanego w w zeł ekstraktora). Drugim etapem odtwarzania jest uruchomienie procedury Resume. Jej zadaniem jest – w oparciu o przypisania dokonane przez procedur Design – zainicjowanie dodatkowych w złów filtruj cych oraz procedur reekstrakcji. Filtrom typu prefix przekazywane s atrybuty ostatniej zapisanej do hurtowni krotki, natomiast filtrom typu subset przekazywany jest zbiór wybranych atrybutów krotek załadowanych do hurtowni. Po zainicjowaniu filtrów rozpoczyna si normalne przetwarzanie. Najwa niejsz cech tej metody jest fakt, e nie wnosi ona adnego dodatkowego obci enia na prawidłowo przebiegaj cy proces ekstrakcji. Swe działanie opiera na własno ciach przypisanych w złom transformuj cym i ich wej ciom projektowania grafu ekstrakcji. Zbiór krotek, które nale y odfiltrowa podczas w czasie przetwarzania, ustalany jest na podstawie krotek, które zostały załadowane do hurtowni przed upadkiem. 50 czas odtwarzania [s] 45 40 35 30 25 20 15 10 5 0 0 20 40 60 80 100 % uko czenia ekstrakcji Rys. 2.7 Wpływ momentu awarii na czas odtwarzania metod opart o algorytm Design-Resume Wad tej metody jest to, e w szczególnych przypadkach odtwarzanie mo e trwa dłu ej ni ponowne uruchomienie procesu ekstrakcji od pocz tku. Przyczyn takiego stanu rzeczy jest słabo filtrów typu subset wykazana w testach przedstawionych w [2]. W Rola procesu ekstrakcji danych do hurtowni danych 14 zale no ci od zaistniałej sytuacji nale y wi c bada , czy odtwarzanie oparte o algorytm Design-Resume pozwoli skróci czas odtwarzania. 2.3.6. Klasyfikacja metod odtwarzania Przedstawione metody odtwarzania cechuj si ró n zło ono ci procesu ekstrakcji oraz obci eniem wnoszonym na prawidłowo przebiegaj cy proces ekstrakcji. Spo ród przedstawionych metod najmniejsze dodatkowe obci enie wnosi algorytm Design-Resume. Jest to jednak okupione wysok jego zło ono ci . Jednak tam, gdzie liczy si wydajno przetwarzania i istnieje wysokie ryzyko wyst pienia awarii w czasie procesu ekstrakcji, algorytm ten jest bardzo dobrym rozwi zaniem. Lepszym okazuj si jedynie rozwi zania stosowane w specyficznych aplikacjach takie jak sortowanie dyskowe lub masowe ładowanie stosowane w produktach DB2 i Teradaty [2]. Rys. 2.8 Porównanie metod odtwarzania [2] 3. rodowisko ekstrakcji danych ETL-DR rodowisko ETL-DR to biblioteka j zyka Java zawieraj ca zestaw klas, z których mo na zbudowa kompletn aplikacj ekstrakcji danych. rodowisko to, oprócz uruchamiania normalnego procesu ekstrakcji pozwala równie na wykonywanie odtwarzania procesu ETL, który nie został poprawnie zako czony z powodu wyst pienia awarii. rodowisko oferuje trzy algorytmy odtwarzania: a) algorytm Design-Resume (DR) b) algorytm Staging c) algorytm hybrydowy (poł czenie DR oraz Staging’u) Proces ETL opisywany jest przy pomocy tzw. grafu ekstrakcji. W w złach grafu wykonywane jest przetwarzanie danych, natomiast kraw dzie opisuj kierunki przepływu danych. Ze wzgl du na pełnione funkcje w zły mo na podzieli na trzy grupy: - ekstraktory, - transformacje, - insertory. Ekstraktory pobieraj dane ze wskazanego przez projektanta ródła danych i przekazuj je na wej cie poł czonych z nimi w złów. Transformacje pobieraj dane z w złów poprzedzaj cych, wykonuj pewne operacje na zbiorach krotek, po czym generuj zbiory wynikowe dla kolejnych w złów. Insertory pobieraj dane z w złów poprzedzaj cych i zapisuj je w miejscu ustalonym przez projektanta grafu. eID 101 102 101 104 … value 1762 345 732 143 … date 2003-12-17 2004-01-12 2003-10-08 2003-12-15 … eID 101 101 104 106 … E value 1762 732 143 253 … TF date 2003-12-17 2003-10-08 2003-12-15 2003-11-28 … TG eID 101 108 104 106 … total_value 47456 34639 37564 45782 … I Rys. 3.1 Przykład prostego grafu ekstrakcji wraz z przykładowymi danymi rodowisko ekstrakcji danych ETL-DR 16 3.1. Opis grafu ekstrakcji Struktura grafu ekstrakcji na potrzeby rodowiska ETL-DR zapisywana jest w tekstowym pliku konfiguracyjnym. Przykład takiego pliku znajduje si poni ej. env.appStateFile = e:\config.state env.workingDirectory = e:\temp // Extractor newNode=FileExtractor sourceFileName = e:\etl1.txt columnSeparator = 2c nodeID = 1 output.packetSize = 10 namesInFirstRow = true // Grupowanie newNode=GroupTransformation nodeID = 2 input.attributes = {nrp, nrz, nri, nazwisko} input.keyAttributes = {nrp} input.sourceID = 1 groupingAttributes = {nrp, nrz} aggrAttributes = {sum:nri, avg:nri} // Insertor newNode=FileInserter destFileName = e:\etlout2.txt nodeID = 3 input.attributes = {nrp, nrz, sum(nri), avg(nri)} input.keyAttributes = {nrp, nrz} input.sourceID = 2 overwriteFile = yes Rys. 3.2 Przykładowy plik konfiguracyjny Kolejne wiersze w pliku konfiguracyjnym to ustalenie warto ci odpowiednich własno ci. Mamy pewien zestaw obiektów, które trzeba wła ciwie skonfigurowa , przykładowo env.appStateFile = e:\config.state ustala cie k do pliku stanu aplikacji ekstrakcji. Wi cej dost pnych własno ci zostanie opisanych w dalszej cz ci instrukcji. Bardzo wa n jest pseudo-własno newNode. Powoduje ona utworzenie nowego w zła grafu. Typ w zła okre lony jest przez przypisywan warto , np.: newNode = GroupTransformation tworzy nowy w zeł grupuj cy. Wszystkie kolejne definicje warto ci własno ci odnosz si do ostatnio utworzonego w zła. Wyj tkiem s definicje parametrów rodowiskowych rozpoczynaj ce si od przedrostka „env.”. 3.2. Hierarchia klas i własno ci Hierarchia klas w złów poni ej. rodowiska ETL-DR przedstawiona jest na rysunku rodowisko ekstrakcji danych ETL-DR 17 AbstractNode Extractor Transformation Inserter FileExtractor AggegationTransformation FileInserter DBExtractor GroupTransformation DBInserter FilterTransformation OracleDBInserter FunctionTransformation GeneratorTransformation JoinTransformation MergeTransformation ProjectionTransformation UBTreeTransformation UnionTransformation VMQueue Rys. 3.3 Hierarchia klas w złów grafu ekstrakcji Wszystkie klasy w złów maj wspólnego przodka jakim jest klasa AbstractNode. W niej zdefiniowane s podstawowe mechanizmy zapewniaj ce współprac z innymi elementami rodowiska. W ka dej z klas zdefiniowany jest pewien zbiór własno ci, które s równie dziedziczone do klas wyprowadzonych z klas bazowych, tzn. własno ci zdefiniowane w klasie Extractor wyst puj równie w klasach FileExtractor i DBExtractor. Własno ci mog by ró nego typu, w szczególno ci rozró niamy własno ci: tekstowe, numeryczne, logiczne, tablicowe i obiektowe. Własno ci obiektowe posiadaj kolejne własno ci, np. input.dr.mapToOne oznacza, e we własno ci obiektowej input odwołujemy si do własno ci obiektowej dr, w której odwołujemy si do własno ci mapToOne. Własno ciom tekstowym mo emy przypisa numeryczne opisuj pewn warto dowolny tekst. Własno ci liczbow (liczba całkowita, zmiennoprzecinkowa). Własno ci logiczne przyjmuj warto ci logiczne true lub false (lub wymiennie yes, no). Własno ci tablicowe pozwalaj na przekazanie tablicy rozdzielonych przecinkiem, np. input.attributes = {nrp, nrz}. ła cuchów tekstowych rodowisko ekstrakcji danych ETL-DR 18 3.3. Własno ci obiektowe 3.3.1. Własno input input posiadaj wszystkie w zły dziedzicz ce z klas Transformation lub Własno Inserter. Jej zadaniem jest okre lenie w zła ródłowego (jednego lub wi cej) z którego b d pobierane dane. Własno ci tej nie posiadaj ekstraktory, gdy one pobieraj dane ze ródeł le cych poza grafem. Tabela 3.1 Struktura własno ci obiektowej input Nazwa Typ sourceID numeryczny -1 Identyfikator naturalna) attributes tablicowy {} Atrybuty krotek pobieranych keyAttributes tablicowy {} Atrybuty kluczowe krotek pobieranych dr obiektowy 3.3.2. Własno Własno Warto domy lna Przeznaczenie w zła ródłowego (liczba Własno ci dla algorytmu odtwarzania DR dr dr definiuje parametry wej cia wykorzystywane przed algorytm odtwarzania Design-Resume. Znaczenie tych parametrów zostało opisane w sekcji 2.3.5. Tabela 3.2 Struktura własno ci obiektowej dr Nazwa Typ mapToOne logiczny Własno map-to-one suffixSafe logiczny Własno suffix-safe setToSeq logiczny Własno set-to-seq noHiddenContributors logiczny Własno no-hidden-contributors 3.3.3. Własno Własno Warto domy lna Przeznaczenie output output posiadaj wszystkie w zły dziedzicz ce z klas Extractor lub Transformation. Jej zadaniem jest okre lenie parametrów wyj cia w zła w celu zapewnienia maksymalnej wydajno ci przetwarzania. Krotki przekazywane s do kolejnych w złów nie pojedynczo lecz w pakietach o okre lonej wielko ci. Dzi ki temu synchronizacja w tków podczas przekazywania danych nast puje znacznie rzadziej. Pakiety z kolei gromadzone s w buforze wyj ciowym, tzw. kolejce. Długo ograniczona z góry, aby niepotrzebnie nie zajmowa miejsca w pami ci. kolejki jest rodowisko ekstrakcji danych ETL-DR 19 Tabela 3.3 Struktura własno ci obiektowej output Nazwa Typ Warto packetSize numeryczny 1000 queueSizeLimit numeryczny Przeznaczenie Rozmiar pakietu krotek 50 Maksymalna liczba pakietów w kolejce env 3.3.4. Własno Własno domy lna env w odró nieniu od własno ci przedstawionych wcze niej nie jest zwi zana z adnym z w złów. Okre la ona parametry rodowiska ekstrakcji, których nie mo na przypisa w złom. Tabela 3.4 Struktura własno ci obiektowej env Nazwa Typ Warto domy lna Przeznaczenie appStateFile tekstowy .\etl.state cie ka do pliku stanu aplikacji workingDirectory tekstowy . outputPacketSize numeryczny Katalog na pliki tymczasowe Zmiana domy lnego rozmiaru pakietu outputQueueSizeLimit numeryczny Zmiana domy lnego limitu długo ci kolejki pakietów Plik stanu aplikacji niesie ze sob informacj o stanie procesu ETL. Na podstawie jego zawarto ci mo na oceni czy proces zako czył si prawidłowo, a je eli nie, to które w zły grafu musz zosta uruchomione podczas odtwarzania. Plik ten, je eli nie istnieje (np. przed pierwszym uruchomieniem ekstrakcji), tworzony jest automatycznie. 3.4. Własno ci klas w złów 3.4.1. Klasy bazowe 3.4.1.1. Klasa AbstractNode Jest to klasa bazowa dla wszystkich w złów pojawiaj cych si w grafie ekstrakcji. W niej zdefiniowane s identyfikatory w złów umo liwiaj ce prawidłowe zdefiniowanie poł cze mi dzy w złami oraz katalog roboczy dla danego w zła. Mimo i katalog roboczy definiuje si dla całej aplikacji (env.workingDirectory), to mo liwe jest te zdefiniowanie katalogu roboczego dla ka dego w zła z osobna. Tabela 3.5 Własno ci klasy AbstractNode Nazwa Typ nodeID numeryczny workingDirectory tekstowy Warto domy lna -1 Przeznaczenie Identyfikator w zła Katalog na pliki tymczasowe rodowisko ekstrakcji danych ETL-DR 3.4.1.2. 20 Klasa Extractor Jest to klasa bazowa dla wszystkich ekstraktorów. Mo liwe jest okre lenie nazw atrybutów pojawiaj cych si na wyj ciu w zła oraz okre lenie parametrów wyj cia. Tabela 3.6 Własno ci klasy Extractor Nazwa Typ columnNames tablicowy output obiektowy 3.4.1.3. Warto domy lna {} Przeznaczenie Nazwy atrybutów wyj ciowych Parametry wyj cia Klasa Transformation Jest to klasa bazowa dla wszystkich transformacji. W klasie tej nale y zdefiniowa parametry wej cia (lub wej ). Opcjonalnie mo na jak w ekstraktorach zmodyfikowa parametry wyj cia. Własno stagingAbility wł cza tryb staging. Dane wynikowe w zła b d w trakcie przetwarzania zapisywane do pliku, aby w razie konieczno ci odtwarzania skorzysta z gotowego zbioru bez pobierania ich z ekstraktorów. Tabela 3.7 Własno ci klasy Transformation Nazwa Typ input obiektowy inputs.1 – inputs.9 Warto domy lna Przeznaczenie Parametry wej cia transformacji W przypadku transformacji wielowej ciowych (zł czenie, unia) pozwala okre li parametry wybranego wej cia. inputs.1 jest równowa ne z obiektowy input. output obiektowy stagingAbility logiczny 3.4.1.4. Parametry wyj cia false Uaktywnia tryb staging. Klasa Inserter Jest to klasa bazowa dla wszystkich insertorów. Mo liwe jest okre lenie nazw atrybutów wynikowych, które nie musz by takie same jak nazwy atrybutów wej ciowych. Tabela 3.8 Własno ci klasy Inserter Nazwa Typ input obiektowy destAttributes tablicowy Warto domy lna Przeznaczenie Parametry wej cia insertora input.attributes Nazwy atrybutów wynikowych rodowisko ekstrakcji danych ETL-DR 21 3.4.2. Klasy ekstraktorów 3.4.2.1. Klasa FileExtractor FileExtractor czyta dane ze wskazanego pliku wej ciowego. Jeden wiersz pliku odpowiada jednej krotce, kolejne atrybuty rozdzielone s ustalonym separatorem. Pierwszy wiesz pliku mo e zawiera nazwy atrybutów. W takim przypadku nie trzeba podawa ich nazw we własno ci columnNames. Tabela 3.9 Własno ci klasy FileExtractor Nazwa Typ sourceFileName tekstowy columnSeparator tekstowy 2c Separator kolumn (atrybutów) podany szesnastkowo (2c odpowiada spacji). Mo e okre la jeden lub wi cej znaków. rowsToOmit numeryczny 0 Liczba wierszy do pomini cia rowsLimit numeryczny -1 Maksymalna liczba wierszy do odczytu bufferSize numeryczny 10000 namesInFirstRow logiczny false 3.4.2.2. Warto domy lna Przeznaczenie cie ka do pliku ródłowego Rozmiar bufora odczytu Okre la czy pierwszy wiersz zawiera nazwy atrybutów Klasa DBExtractor DBExtractor pobiera dane ze wskazanej bazy danych. Poł czenie realizowane jest przez interfejs JDBC. Tabela 3.10 Własno ci klasy DBExtractor Nazwa Typ Warto domy lna Przeznaczenie driverConnectionString tekstowy jdbc:odbc: driverInitString tekstowy dataBaseNamePrefix tekstowy Prefiks nazwy BD dataBaseName tekstowy Nazwa BD dataBaseNameSuffix tekstowy Sufiks nazwy BD userName tekstowy Nazwa u ytkownika userPassword tekstowy Hasło u ytkownika rowsLimit numeryczny sqlQuery tekstowy sortedStream logiczny Okre lenie interfejsu poł czenia z BD JdbcOdbcDriver Nazwa klasy drivera BD -1 Maksymalna liczba rekordów do odczytu Tekst zapytania SQL false Okre lenie, czy pobierany zbiór zawsze zwracany jest w takiej samej kolejno ci rodowisko ekstrakcji danych ETL-DR 22 Do realizacji poł czenia wykorzystywany jest sterownik o nazwie okre lonej przez driverInitString. Poł czenie z baz danych ustawiane jest w oparciu o ci g zbudowany kolejno z własno ci: driverConnectionStream, dataBaseNamePrefix, dataBaseName, dataBaseNameSuffix. Do pobrania danych wykorzystywane jest przekazane zapytanie w j zyku SQL. Je eli zapytanie to zawsze zwraca krotki w takiej kolejno ci (np. u yto frazy ORDER BY) to warto ustawi własno sortedStream. Mo e to zwi kszy wydajno odtwarzania, gdy b dzie mo liwe zastosowanie filtrowania typu prefix. 3.4.3. Klasy insertorów 3.4.3.1. Klasa FileInserter FileInserter dokonuje zapisu krotek do pliku docelowego. Format pliku jest taki sam jak w przypadku ekstraktora plikowego. Jednemu wierszowi odpowiada jedna krotka. Wył czenie nadpisywania pliku spowoduje, e je li plik o wskazanej nazwie ju istnieje, to ekstrakcja zostanie przerwana. Tabela 3.11 Własno ci klasy FileInserter Nazwa Typ destFileName tekstowy columnSeparator tekstowy 2c overwriteFile logiczny true rowsLimit numeryczny -1 bufferSize numeryczny 10000 writeHeader logiczny false 3.4.3.2. Warto domy lna Przeznaczenie cie ka do pliku docelowego Separator kolumn (atrybutów) podany szesnastkowo (2c odpowiada spacji). Mo e okre la jeden lub wi cej znaków. Umo liwia nadpisanie istniej cego pliku Maksymalna liczba wierszy do zapisu Rozmiar bufora zapisu Wł cza zapis nazw atrybutów w nagłówku pliku Klasa DBInserter DBInserter ładuje dane do tabeli we wskazanej bazie danych. Poł czenie realizowane przez interfejs JDBC. Je eli tabela docelowa jest tworzona w trakcie estrakcji, to konieczne jest zdefiniowanie typów kolumn zgodnie z konwencj u ywan w bazie. Typy te b d u yte podczas tworzenia tabeli w zapytaniu CREATE TABLE. W zeł ten oferuje równie zaawansowane ładowanie wykorzystuj ce indeks UBTree[4]. Do odpowiedniego skonfigurowania komponentu aby uruchomi takie ładowanie słu ostatnie własno ci z poni szej tabeli: ubTree, extUBTreeKey, createUBIndexes. trzy rodowisko ekstrakcji danych ETL-DR 23 Tabela 3.12 Własno ci klasy DBInserter Nazwa Typ Warto domy lna driverConnectionString tekstowy jdbc:odbc: driverInitString tekstowy dataBaseNamePrefix tekstowy Prefiks nazwy BD dataBaseName tekstowy Nazwa BD dataBaseNameSuffix tekstowy Sufiks nazwy BD userName tekstowy Nazwa u ytkownika userPassword tekstowy Hasło u ytkownika tableName tekstowy Nazwa tabeli docelowej columnTypes tablicowy Lista typów kolumn w tabeli docelowej zgodna z konwencj docelowej bazy danych rowsLimit numeryczny -1 createTable logiczny true Wymusza tworzenie tabeli docelowej ubTree tablicowy {} Lista reguł tworzenia indeksu UBTree extUBTreeKey tekstowy createUBIndexes logiczny 3.4.3.3. Przeznaczenie Okre lenie interfejsu poł czenia z BD JdbcOdbcDriver Nazwa klasy drivera BD Maksymalna liczba rekordów do zapisu Nazwa zewn trznego indeksu UBTree true Wł cza tworzenie indeksów na kolumnach z których utworzono indeks UBTree Klasa OracleDBInserter Klasa jest rozszerzeniem klasy DBInserter dedykowanym do bazy danych Oracle. Podczas ładowania danych wykorzystywany jest SQL*Loader. Poł czenie przez interfejs JDBC słu y tu tylko do tworzenia tabeli oraz zatwierdzania transakcji. Ma to ogromny wpływ na wydajno procesu ładowania. Tabela 3.13 Własno ci klasy OracleDBInserter Nazwa Typ sqlLoaderPath tekstowy loaderPackSize numeryczny 500000 concurrencyLevel numeryczny 5 Własno OracleDBInserter. Warto domy lna cie ka do katalogu SQLLDR.EXE concurrencyLevel Ogranicza Przeznaczenie ona zawieraj cego Rozmiar paczki danych SQL*Loader’a Maksymalna liczba równolegle procesów SQL*Loader’a jest liczb plik wspólna dla równolegle wszystkich działaj cych działaj cych instancji klasy sesji loadera. Niepotrzebne jej zwi kszanie prowadzi czasem do obni enia wydajno ci ładowania. rodowisko ekstrakcji danych ETL-DR 24 3.4.4. Klasy transformacji 3.4.4.1. Klasa AggregationTransformation Zadaniem tej klasy jest obliczenie sumy wskazanego atrybutu. Na wyj ciu transformacji pojawia si tylko jedna krotka b d ca wynikiem oblicze . Tabela 3.14 Własno ci klasy AggregationTransformation Nazwa Typ aggrAttribute tekstowy aggregateName tekstowy 3.4.4.2. Warto domy lna Przeznaczenie Nazwa atrybutu do agregacji aggr(aggrAttribute) Nazwa atrybutu wynikowego Klasa GroupTransformation Klasa wykonuje operacj grupowania wraz ze stosownym obliczaniem agregatów. Realizowana operacja mo e by opisana jako: SELECT groupingAttributes, aggrAttribues AS aggregatesNames FROM input GROUP BY groupingAttributes Agregaty do obliczenia definiujemy nast puj co: typ_agregatu:atrybut. Mo liwe typy do: SUM, AVG, MIN, MAX, COUNT. Grupowanie zewn trzne polega na wykorzystaniu pami ci dyskowej w przypadku gdy dane nie mieszcz si w pami ci. Wł czenie trybu zewn trznego polega na ustawieniu własno ci externalMode. Tabela 3.15 Własno ci klasy GroupTransformation Nazwa Typ Warto domy lna groupingAttributes tablicowy {} Atrybuty grupuj ce aggrAttributes tablicowy {} Agregaty do obliczenia, np. {sum:kwota} aggregatesNames tablicowy {} Nazwy agregatów estimatedGroupCount numeryczny 10000 Przeznaczenie Przewidywana liczba grup useTreeMap logiczny false U ycie drzewa zamiast tablicy mieszaj cej jako struktury danych sortedInput logiczny false Oznacza, e strumie wej ciowy jest uporz dkowany wzgl dem atrybutów grupuj cych externalMode logiczny false Wł czenie grupowania zewn trznego extMemoryLimit numeryczny 250000 Maksymalna liczba krotek w podczas grupowania zewn trznego externalFilesLimit numeryczny 20 Zalecana maksymalna zewn trznych liczba pami ci plików rodowisko ekstrakcji danych ETL-DR 3.4.4.3. 25 Klasa GeneratorTransformation Klasa generatora pozwala nada krotkom unikalne identyfikatory. Dzi ki temu mo na łatwo stworzy odpowiedni struktur tabel i poł cze mi dzy nimi. Tabela 3.16 Własno ci klasy GeneratorTransformation Nazwa Typ genPrefix tekstowy initialValue numeryczny 1 Warto genStep numeryczny 1 Krok generatora attributeName tekstowy onlyID logiczny true Okre la czy na wyj ciu maj si pojawi kompletne krotki z identyfikatorem czy same identyfikatory uniqueAttributes tablicowy {} Zapewnia atrybutów uniqueOutput logiczny true Powtarzaj ce si ID nie b d pojawia si wyj ciu 3.4.4.4. Warto domy lna Przeznaczenie Prefiks generowanych identyfikatorów pocz tkowa generatora Nazwa atrybutu identyfikatory wyj ciowego unikalno ID zawieraj cego dla wskazanych Klasa JoinTransformation Klasa ta dokonuje zł czenia dwóch strumieni danych wzgl dem wskazanych atrybutów ł cz cych, dla których musi zachodzi warunek równo ci. Tabela 3.17 Własno ci klasy JoinTransformation Nazwa Typ Warto domy lna joinAttributes tablicowy {} estimatedBufferSize numeryczny 3000 Przewidywana wielko repeatableBuffering logiczny true Zezwala na powtarzanie si strumieniu buforowanym useTreeArray logiczny false U ywa struktury drzewiastej zamiast tablicy mieszaj cej podczas zł czenia swapBuffering logiczny false Zmiana buforowanego wej cia externalMode logiczny false Wł czenie ł czenia zewn trznego extMemoryLimit numeryczny 250000 Maksymalna liczba krotek w pami ci podczas ł czenia zewn trznego 33 Procent redukcji indeksu pomocniczego przy przekroczeniu dopuszczalnego rozmiaru extCacheReductionRatio numeryczny extCacheSize numeryczny 100000 Przeznaczenie Atrybuty ł cz ce, np. {nrp:nrp, kwota:wartosc} bufora zł czenia warto ci w Limit rozmiaru indeksu pomocniczego rodowisko ekstrakcji danych ETL-DR 26 Zł czenie przebiega dwuetapowo. Pierwsza faza to buforowanie strumienia z wej cia nr 2, a nast pnie próba ł czenia danych ze strumienia nr 1 z danymi ju pobranymi. To, które wej cie jest buforowane, a które przetwarzane „w locie”, mo na zmieni przy pomocy własno ci swapBuffering. Domy lne ustawienia zapewniaj prawidłowe działanie w zła je li warto ci atrybutów ł cz cych w strumieniu buforowanym powtarzaj si (repeatableBuffering). T opcj mo na wył czy co zaowocuje oszcz dno ci pami ci operacyjnej. Własno joinAttributes pełni podwójn funkcj . Po pierwsze definiuje pary atrybutów ł cz cych rozdzielone znakiem dwukropka, odpowiednio z pierwszego i drugiego wej cia transformacji, np. {nrp:numerPrac}. W strumieniu wyj ciowym pojawiaj si atrybuty ł cz ce tylko ze strumienia wej ciowego numer 1. Je li chcemy, mo emy oznaczy znakiem @ atrybut, który ma zosta u yty na wyj ciu, np. {@nrp:numerPrac} lub {nrp:@numerPrac}. Pierwszy zapis jest przyjmowany domy lnie, je li nie podano znaku @. 3.4.4.5. Klasa MergeTransformation MergeTransformation dokonuje sklejenia dwóch (lub wi cej) strumieni danych. Z ka dego ze strumieni pobierana jest jedna krotka, po czym tworzona jest jedna krotka wynikowa. Transformacja ta nie posiada adnych dodatkowych konfigurowalnych własno ci. Przykładem realizowanej operacji jest sklejenie atrybutów np. {nrp} + {nazwisko} = {nrp, nazwisko} 3.4.4.6. Klasa UnionTransformation Unia jest transformacj wielowej ciow . Mo e by zrealizowana dwojako: w trybie mieszanym lub sekwencyjnym. W trybie mieszanym krotki z poszczególnych wej pobierane s w miar ich pojawiania si . W trybie sekwencyjnym najpierw pobierane s wszystkie krotki z wej cia nr 1, nast pnie z wej cia nr 2, itd. Odwrócenie kolejno ci (od ostatniego wej cia) jest mo liwe poprzez własno reverseOrder. Z samej definicji unii wynika, e wszystkie wej cia musz mie zdefiniowane takie same atrybuty wej ciowe. Tabela 3.18 Własno ci klasy UnionTransformation Nazwa Typ Warto domy lna Przeznaczenie mixedMode logiczny true Wł czenie trybu mieszanego reverseOrder logiczny false Zmiana kolejno ci wej gdy tryb mieszany nie jest wł czony rodowisko ekstrakcji danych ETL-DR 3.4.4.7. 27 Klasa ProjectionTransformation Zadaniem komponentów tej klasy jest dokonanie projekcji. Jedyna własno tej transformacji okre la nazwy atrybutów wyj ciowych. Tabela 3.19 Własno ci klasy UnionTransformation Nazwa Typ attributes tablicowy 3.4.4.8. Warto domy lna {} Przeznaczenie Atrybuty wyj ciowe Klasa FilterTransformation Klasa filtra pozwala zrealizowa filtrowanie o dowolnym warunku. Warunek filtrowania definiowany jest w zewn trznej klasie Javy tworzonej przez projektanta grafu. Doł czana zewn trzna klasa musi by wywiedziona z klasy abstrakcyjnej FilterTemplate znajduj cej si w pakiecie etl.externals. Przykładowy filtr, który „przepuszcza” wszystkie krotki zaprezentowany jest poni ej: import etl.util.*; public class EmptyFilter extends etl.externals.FilterTemplate { /** Creates new EmptyFilter */ public EmptyFilter() { } public byte doFilter(Tuple t) { try { return FilterTemplate.GOOD; } catch(Exception e) { return FilterTemplate.ERROR; } } /** Optional filter initialization * @param initString * @return TRUE if OK */ public boolean initialize(String initStr) { return true; } } Tabela 3.20 Własno ci klasy FilterTransformation Nazwa Typ Warto domy lna Przeznaczenie filterClassPath tekstowy filterClassName tekstowy Nazwa klasy (z nazw pakietu) filterInitString tekstowy Parametr inicjalizacyjny przekazywany w metodzie initialize() cie ka do pliku klasy rodowisko ekstrakcji danych ETL-DR 3.4.4.9. 28 Klasa FunctionTransformation Klasa funkcyjna pozwala zrealizowa dowolne przekształcenie strumienia krotek (w tym generowanie wielu krotek z jednej krotki wej ciowej). Przekształcenie definiowane jest w zewn trznej klasie Javy tworzonej przez projektanta grafu. Doł czana zewn trzna klasa musi by wywiedziona z klasy abstrakcyjnej FunctionTemplate znajduj cej si w pakiecie etl.externals. Przykładowa funkcja nie robi ca nic zaprezentowana jest poni ej: import etl.util.*; public class EmptyFunction extends FunctionTemplate { /** Creates new EmptyFunction */ public EmptyFunction() { } /** Transforms a tuple * @param t Input tuple * @return Result tuple */ public Tuple doFunction(Tuple t) { return t; } /** Sets outputAttributes * @param attrs Input attributes * @return output attributes */ public String[] getAttributes(String attrs[]) { return attrs; } /** Check the call status * @return Call status */ public byte getCallStatus() { return FunctionTemplate.CALL_ALWAYS_ONCE; } /** Returns post-processing tuples * @return Tuple */ public Tuple getPostData() { return null; } /** Optional function initialization * @param initString * @return TRUE if OK */ public boolean initialize(String initStr) { return true; } } rodowisko ekstrakcji danych ETL-DR 29 Tabela 3.21 Własno ci klasy FunctionTransformation Nazwa Typ Warto domy lna Przeznaczenie functionClassPath tekstowy functionClassName tekstowy Nazwa klasy (z nazw pakietu) functionInitString tekstowy Parametr inicjalizacyjny przekazywany w metodzie initialize() cie ka do pliku klasy 3.4.4.10. Klasa specjalna VMQueue Kolejka VMQueue jest specjalnym buforem wykorzystuj cym przestrze dyskow . Je eli dane do kolejki napływaj szybciej ni mo liwe jest ich odbierane, wtedy eby nie zajmowa niepotrzebnie pami ci operacyjnej wykonywany jest zapis na dysk. Gdy odbiór danych jest mo liwy, wtedy dane ju zapisane s ponownie odczytywane i zapisywane w buforze wyj ciowym transformacji. Jej stosowanie jest czasem konieczne aby zapobiega wzajemnej blokadzie, do której mo e doj przy pewnych specyficznych poł czeniach pomi dzy w złami. Tabela 3.22 Własno ci klasy VMQueue Nazwa Typ percentageRestartLevel numeryczny Warto domy lna 75 Przeznaczenie Procent wolnego miejsca w kolejce pakietów, przy którym wznawiane jest wysyłanie danych do nast pnych w złów. 3.5. Atrybuty wyj ciowe w złów transformuj cych Na etapie tworzenia pliku konfiguracyjnego procesu ETL konieczne jest ustalenie atrybutów wej ciowych dla ka dego wej cia transformacji lub insertora. To jakie krotki generuj ekstraktory jest łatwe do ustalenia. W przypadku transformacji sytuacja nie jest ju taka oczywista. To jakie s atrybuty krotek wynikowych zale y od rodzaju przekształcenia wykonywanego przez dan transformacj . Znajomo tego co pojawia si na wyj ciu transformacji jest niezb dna, gdy przed uruchomieniem procesu ekstrakcji sprawdzane jest, czy dla ka dego wej cia generowane s krotki o atrybutach zdefiniowanych przez projektanta grafu. Innymi słowy atrybuty wynikowe ka dego w zła grafu musz odpowiada zdefiniowanym atrybutom wej cia w zła nast pnego. W przypadku niezgodno ci atrybutów nie b dzie mo liwo ci uruchomienia procesu ETL, a u ytkownik zostanie o takim zdarzeniu poinformowany poprzez wygenerowanie wyj tku. rodowisko ekstrakcji danych ETL-DR 30 W tabelce poni ej zostały zgromadzone reguły tworzenia krotek wynikowych przez poszczególne transformacje rodowiska ETL-DR. Tabela 3.23 Atrybuty wyj ciowe transformacji Nazwa transformacji AggregationTransformation Atrybuty wyj ciowe Jedna warto , nazwa atrybutu podana przez projektanta. GroupTransformation Atrybuty grupuj ce + obliczone agregaty. Nazwy domy lne lub zdefiniowane przez projektanta. GeneratorTransformation Je li onlyID = true, wtedy jeden atrybut o zdefiniowanej nazwie, w przeciwnym razie oprócz identyfikatora równie wszystkie atrybuty wej ciowe. JoinTransformation Suma atrybutów z wej pierwszego oraz drugiego z pomini ciem atrybutów ł cz cych, które nie zostały wybrane jako główne (nie oznaczone znakiem @). MergeTransformation Suma atrybutów z poszczególnych wej UnionTransformation Atrybuty wej ciowe dowolnego wej cia (musz by takie same dla wszystkich wej ). ProjectionTransformation FilterTransformation FunctionTransformation transformacji. Atrybuty okre lone przez projektanta. Atrybuty wej ciowe. Atrybuty okre lone w klasie zewn trznej. 3.6. Uruchomienie procesu ETL Cało ci procesu ETL zarówno w przypadku normalnego przetwarzania jak i odtwarzania zarz dza klasa etl.management.SimpleManager. Uruchomienie ekstrakcji sprowadza si do kilku prostych wywoła . (1) SimpleManager manager = new SimpleManager(confFile); (2) manager.prepareApplication(false); (3) if (manager.isReady()) (4) manager.runApp(0); Wiersz (1) to utworzenie instancji menad era na bazie przygotowanego pliku konfiguracyjnego. Nast pnym krokiem jest zainicjowanie aplikacji ekstrakcji, co ma miejsce w wierszu (2). Na tym etapie badana jest zawarto tworzone s pliku stanu po czym w pami ci instancje wymaganych komponentów. Je eli z pliku stanu wynika, e konieczne jest uruchomienie odtwarzania, to w tym kroku poczynione zostan wszystkie operacje z tym zwi zane, takie jak: wstawianie dodatkowych filtrów do grafu ekstrakcji, inicjalizacja filtrów danymi z insertorów. Przekazuj c warto prepareApplication blokujemy odtwarzanie. true jako parametr metody Wykonywane b dzie tylko pełne przetwarzanie. Nast pnym krokiem jest sprawdzenie, czy aplikacja została prawidłowo rodowisko ekstrakcji danych ETL-DR 31 zainicjowana. W wierszu (3) sprawdzana jest gotowo metoda isReady() zwraca warto aplikacji do uruchomienia. Je eli true, to mo na uruchomi ekstrakcj /odtwarzanie poprzez wywołanie metody runApp() – wiersz (4). Jej parametrem jest limit czasu działania aplikacji w sekundach. Podanie warto ci zerowej oznacza brak ograniczenia czasu. W oparciu o powy sze zasady przygotowane zostały gotowe pliki uruchamiaj ce wybrany wariant przetwarzania: - etl.fullETL <confFile> [<timeLimit>] - uruchamia pełne przetwarzanie, opcjonalne ograniczenie czasu podajemy w sekundach, - etl.resumableETL <confFile> - uruchamia pełne przetwarzanie lub odtwarzanie w zale no ci od zawarto ci pliku stanu, - etl.resumeETL <confFile> - je li jest to mo liwe, uruchamia odtwarzanie, w przeciwnym razie nie robi nic. Uruchomiony proces ETL generuje na bie co raport o stanie o przetwarzania. Fragment przykładowego raportu przedstawiony jest poni ej: msg: ETL Config: e:\etlconfig\test6.conf msg: +++ Staging technique will be used msg: +++ Stage starters: 4 5 msg: +++ Removed nodes: 1 3 msg: DR: msg: DR: List of assigned filters: msg: DR: ClearPrefix 0-2 msg: DR: ClearSubset 4-6 msg: DR: msg: Ready for resumption msg: *** APPLICATION STARTED (0): [0] started (0): [0] 1st tuple (9): [10] started (9): [10] 1st tuple (5): [20] started (4): [20] started (15): [20] started (12): [20] started (0): [20] 1st packet (9): [60] 1st packet (4): [60] 1st tuple (15): [70] 1st tuple (12): [70] 1st tuple (21): [70] started (0): [70] finished (produced: 2500) (9): [90] finished (produced: 1200) . . . (19): [301] finished (produced: 768) (20): [301] started (20): [331] finished msg: *** APPLICATION STOPPED: 401 [ms] msg: +++ EXTRACTION SUCCESSFUL rodowisko ekstrakcji danych ETL-DR 32 Powy szy raport zawiera informacje o tym, e (wytłuszczenia): a) u yta została technika staging, z grafu usuni te zostały w zły 1 i 3 b) algorytm DR przypisał 2 filtry na poł czeniach w złów 0-2 i 4-6 c) aplikacja jest gotowa do uruchomienia odtwarzania d) przetwarzanie zako czyło si sukcesem Ponadto w czasie przetwarzanie pojawiaj si komunikaty w formacie: (id_w zła): [czas_od_startu] <wiadomo > Te komunikaty informuj nas o tym, który w zeł w jakiej chwili rozpocz ł przetwarzanie, wygenerował pierwsze krotki wynikowe, zako czył przetwarzanie. 3.6.1. Plik stanu aplikacji Ustalenie czy poprzedni proces ekstrakcji zako czył si sukcesem mo liwe jest na podstawie informacji zawartych w pliku stanu aplikacji. Jest to plik tekstowy, w którego pierwszym wierszu zawarty jest nagłówek, natomiast w kolejnych zapisane s identyfikatory w złów ładuj cych (insertorów), które poprawnie zako czyły przetwarzanie. Je eli który z insertorów nie zako czył przetwarzania z powodu awarii, to jego identyfikatora nie b dzie w pliku stanu. Dzi ki temu w prosty sposób mo emy oceni stan procesu ekstrakcji: a) je eli w pliku stanu znajduj si identyfikatory wszystkich insertorów z grafu, to proces ETL zako czył si prawidłowo, b) je eli w pliku brakuje identyfikatorów, to dla tych brakuj cych ID nale y uruchomi odtwarzanie, c) je eli plik stanu nie istnieje, to znaczy, e jeszcze nie uruchamiano procesu ETL, wobec tego nie ma czego odtwarza . Nale y uruchomi przetwarzanie. Przykład pliku stanu znajduje si poni ej: AppStateManager.stateFile 13 22 5 32 pełne Literatura 1. Labio W.,, Wiener J. Garcia-Molina H., Gorelik V., Efficient Resumption of Interrupted Warehouse Loads, Stanford University, Sagent Technologies, 1999 2. Wocław A., Implementacja procesu ekstrakcji danych z mechanizmem odtwarzania opartym o algorytm Design-Resume w rodowisku Forte for Java, praca dyplomowa, 2002 3. Gorawski M., Marks P., Dynamic estimation of the efficiency of Design-Resume resumption, Archiwum Informatyki Teoretycznej i Stosowanej PAN, 2003 4. Markl V., Brügge B., Bayer R., Freytag J.-C., Processing Relational Queries using a Multidimensional Access Technique, Institut für Informatik der Technischen Universität München, 1999 5. The Datawarehousing Information Center – www.dwinfocenter.org, cykl artykułów 6. Gorawski M., Koziatek. A., Projekt ekstrakcji danych, Informatyka 8/2000 7. Gorawski M., Wocław A., Implementacja algorytmu odtwarzania Design-Resume w technologii JavaBeans, ZN Pol. l. Studia Informatica Vol. 24, No 1(52), Gliwice 2003 8. Plank J., An Overview of Checkpointing in Uniprocessor and Distributed Systems, Focusing on Implementation and Performance, University of Tennessee, Department of Computer Science, 1997