pobierz plik referatu
Transkrypt
pobierz plik referatu
Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Rozdział 10 w Przyrostowa ekstrakcja danych ETL( δ ): aspekty implementacyjno-wydajnościowe w 1 Wstęp da .b w Streszczenie. W celu poprawy dostępności danych do analiz w hurtowniach danych zaproponowano rozbudowę funkcjonalności eksploatowanego systemu ETL o proces przyrostowej ekstrakcji danych źródłowych ( δ ). Taki system ETL( δ ) pozwala zachować pełną historię zmian w danych początkowych, a aktualizacja może odbywać się równolegle z dostępem do danych. W rozdziale przedstawiono wybrane aspekty implementacyjne oraz ocenę wydajności reprezentatywnych procesów ekstrakcji. pl s. Obecnie dostęp do aktualnych danych, w jak najkrótszym czasie staje się kluczowym zagadnieniem projektowanych systemów hurtowni danych. Przyrostowa ekstrakcja danych jest jedną z cech hurtowni danych czasu rzeczywistego, dla których określony jest maksymalny, stosunkowo krótki czas propagacji zmian w źródłach danych. Oczywiście trudno mówić tu o czasach rzędu milisekund, ale rząd minut jest rozsądną granicą do osiągnięcia. W pracy [1] podjęto próbę analizy tego problemu. Autorzy zaproponowali trójwarstwową architekturę procesu ETL (ang. Extraction, Transformation, Load – ETL), w której każda warstwa jest funkcjonalnym rozwinięciem odpowiadającej jej części procesu. Dane w systemie ETL były reprezentowane w języku XML, połączenia pomiędzy warstwami odbywały się bezpośrednio, poprzez szybkie złączki, bez składowania danych pośrednich w plikach. System ten zaimplementowano w środowisku J2EE ETL w formie zbioru kontenerów, usług i adapterów, bez udokumentowanych praktycznych wyników. W pracy [2] przedstawiono pewne definicje i problemy realizacji hurtowni danych czasu rzeczywistego. Omówiono współbieżność aktualizacji (aktualizacja danych wraz z równoległym dostępem do danych) oraz czas aktualizacji samych danych w hurtowni, wydłużony o aktualizację wszelkich struktur wzmacniających wykonanie analiz danych. W pracy [3] przestawiono system ETL( δ ) uwzględniający w klasycznym procesie ETL proces przyrostowej aktualizacji danych δ dzięki detekcji zmian w danych źródłowych. Takie podejście jest kontynuacją wcześniejszych badaniach własnych [5–11] i kolejnym krokiem w realizacji ciągłej integracji danych. W pracy [4] przedstawiono analizy wydajnościowe podstawowych komponentów tj.: detekcji zmian, grupowania systemu ETL( δ ), które wykazały ich dużą użyteczność. Marcin Gorawski, Mariusz Ciepluch Politechnika Śląska, Instytut Informatyki, ul. Akademicka 16, 44-100 Gliwice, Polska email:{m.gorawski, m.ciepluch}@polsl.pl (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 M. Gorawski, M. Ciepluch w Uwzględniając, że typowa liczba zmian w danych źródłowych jest średnio rzędu 5%, zysk z wykorzystania systemu dla takiego przypadku jest widoczny. Drugą korzyścią z zastosowania systemu ETL( δ ) jest to, że przy cyklicznie wykonywanych aktualizacjach można zachować aktualność i kompletność danych w hurtowni (zwykle trudno osiągalne w klasycznym procesie ETL). Relacje pomiędzy zbiorem danych przyrostowych a pełnym zbiorem danych są złożone. To wymusza szybki dostęp do pozostałych danych niezmienionych, które w procesie ETL( δ ) są blokowane. W systemie ETL( δ ) przyjęto rozwiązanie bazujące na przechowywaniu i zarządzaniu lokalnymi repozytoriami, zawierającymi aktualne dane. To powoduje, że dane są powielane wielokrotnie w procesie ekstrakcji do docelowej hurtowni i mają wyraźny wpływ na całościową wydajność tego systemu. Wykazano, że zyski z użycia systemu ETL( δ ) z tak zaprojektowanymi komponentami są wyższe niż poniesione koszty. Celem tego rozdziału jest przybliżenie kolejnych aspektów implementacyjno-wydajnościowych systemu ETL( δ ), którego kluczowym zadaniem jest przyrostowa aktualizacja hurtowni danych, z zachowaniem pełnej historii zmian i dostępności dla analiz. w w 2 Proces ETL(δ) da .b W procesie ETL( δ ) dodajemy detekcję zmienionych danych źródłowych (rys. 1) na samym początku klasycznego procesu ETL i operujemy dalej tylko na samych zmienionych danych [12]. Pozwala to na przyrostowe aktualizowanie danych w hurtowni, z zachowaniem historii zmian, co przy dobrej współbieżności zapewnia ciągłą dostępność systemu. Właśnie ta ostatnia cecha, czyli ciągła dostępność danych, jest pożądana dla procesu ETL( δ ). Więcej szczegółów można znaleźć w pracy [1], [2]. Hurtownia danych Ładowanie Ładowanie Ekstrakcja Pliki Bazy danych Źródła danych pl s. ETL Transformacja ETL( ) Hurtownia danych Transformacja δ Detekcja zmian Ekstrakcja Pliki Bazy danych Źródła danych Rys. 1. Różnice pomiędzy procesami ETL (po lewej) i ETL(δ) (po prawej) Detekcja zmian w danych początkowych Proces detekcji zmian w danych początkowych jest złożony, a sprawne wykonanie detekcji jest podstawą szybkiego procesu ETL( δ ). Optymalny dla systemu hurtowni danych jest bezpośredni dostęp do samych zmienionych danych (wtedy ciężar detekcji zmian jest przerzucany na ich źródło). Jedną z możliwości, jest wykorzystanie systemu zarządzania dany116 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Przyrostowa ekstrakcja danych ETL(δ) – aspekty implementacyjno-wydajnościowe w mi (RDBMS) np. poprzez zastosowanie wyzwalaczy. Drugą z możliwości jest przypadek, gdy w bazie jest przechowywany czas operacji zmiany każdej krotki (np. w bazach czasowych). Możemy zauważyć, że przez wykonanie zapytania czasowego możemy uzyskać wszystkie dane zmienione. Trzecią możliwością jest takie skonfigurowanie RDBMS’a, aby wykonywane operacje były zapisywane do pliku dziennika. Potem odtwarzając listę zmian zapisaną w pliku dziennika, można znaleźć dane, które uległy zmianie. Czwartą możliwością są źródła „odpytywane”, które pozwalają na okresowe odpytywanie w celu wykrycia zmian [14]. Jednak nie wszystkie bazy danych mają możliwość aktywnego raportowania o zmianach, dlatego musi istnieć sposób detekcji zmian po stronie systemu ETL( δ ). Wykorzystano tutaj metodę porównywania migawek, opartą o znaczniki każdej krotki [1], [2]. Sprowadza to proces detekcji zmian do prostego porównania pojedynczych wartości całkowitych. Tak, więc przez sekwencyjne przeglądanie dwóch zbiorów można wykryć zmiany w danych początkowych. Oczywiście, do poprawnej identyfikacji krotki, trzeba zachować osobno klucz każdej krotki wraz z jej znacznikiem. Szczegóły algorytmu porównania dwóch migawek (przed i po), opartego o znaczniki można poznać w [1]. w w 3 System ETL(δ) da .b System ETL( δ ) zaimplementowany w języku Java jest modyfikacją już istniejącego systemu ETL [5]. Dla prawidłowego jego funkcjonowania wprowadzono kilka zmian. − Zdefiniowano typ krotki, aby odzwierciedlić wynik detekcji. Każda krotka może być jednego z czterech typów: nowa (N), zmieniona (U), usunięta (D), bez zmian (C). Każdy typ odzwierciedla rodzaj modyfikacji danej krotki od czasu poprzedniej detekcji. − Przeprojektowano komponenty ETL tak, aby operowały na typach krotek. − Dodano komponent detekcji zmian, który wykrywa zmiany w danych źródłowych i nadaje typ każdej krotce. System ETL( δ ) implementuje przyrostową aktualizację docelowych tablic. Na podstawie wykrytych zmienionych danych przeprowadza, w oparciu o nie, częściową transformację i tworzy docelowe zmiany w tabelach. Te zmiany po stronie insertorów są określonego rodzaju (N, D lub U). Zatem wdrażamy je odpowiednio wg dwóch możliwych scenariuszy: 1) krotki typu U i D są wstawiane jako nowe, ale nadpisują odpowiednie odniesienie do poprzednich ich wartości; 2) krotki typu U nadpisują poprzednie wartości, a krotki D są usuwane z systemu. Krotki typu N są zawsze wstawiane do systemu. Jak widać, możemy sterować przechowywaną historią i zarządzać nią po stronie insertorów, w zależności od wybranego scenariusza aktualizacji docelowych tabel. W obecnej wersji systemu ETL( δ ) przyjęto dla uproszczenia drugi sposób. Niektóre komponenty transformacji dla prawidłowego swojego działania muszą znać pozostałe dane, dlatego posiadają lokalne repozytoria przetwarzanych danych. Dla przykładu, komponent grupowania musi znać rozkład wszystkich dotychczasowych grup, aby móc poprawnie dopasować przybyłą krotkę do istniejącej już grupy, albo stworzyć dla niej nową grupę. Komponenty wymagały pewnych modyfikacji związanych z występowaniem znaczników, bowiem przetwarzanie opiera się tylko o dane zmienione (krotki typu N, U, D). pl s. 117 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 M. Gorawski, M. Ciepluch 4 Implementacja systemu ETL(δ) System ETL(δ) jest rozbudowanym o proces δ systemem ETL, w którym główny schemat klas można przedstawić jak na rys. 2. A b s tra c tN o d e w E x tra c t o r T ra n s f ro m a t io n In p u t G ro u p 1 * w w O u tp u t In s e rt e r 1 A t t rib u t e s O u tp u tB u ffer * In p u t Rys. 2. Schemat głównych klas systemu da .b pl s. Każdy komponent w systemie pochodzi od klasy bazowej AbstractNode i odpowiadającej mu jednej ze specjalizacji: ekstrakcji (klasa Extractor), transformacji (klasa Transformation) lub wstawiania (klasa Inserter). Każda z tych klas posiada wejście (klasa InputGroup) i/lub wyjście (klasa Output) z/do komponentu. Na wejście komponentu składają się obiekty klasy Input, które reprezentują pojedyncze połączenie pomiędzy sąsiadującymi komponentami. Na klasę wyjścia komponentu składa się bufor wyjściowy implementowany w klasie OutputBuffer. Wyjście i wejście komponentu posiada określoną relację w postaci obiektu klasy Attributes. Wydzielenie obiektu klasy relacji pozwala na łatwe zarządzanie obiektami krotek przechodzących przez system, bowiem w takim przypadku pojedyncza krotka niesie tylko dane, a ta klasa odpowiada za pozostałe operacje na krotkach (np. wyznaczanie kluczy) oraz przechowują informacje o typie relacji. Połączenie pomiędzy sąsiednimi komponentami odbywa się na drodze obiektów: OutputBuffer komponentu poprzedzającego (pole w klasie Output) oraz Input[i] komponentu następującego (przerywana linia na rys. 2). Na wyjściu jest N kanałów odbiorczych (N jest liczbą następujących komponentów), do których z osobna wpływa kolejna kopia danych. Każdy następujący komponent posiada przydzielony mu numer kanału odbiorczego w buforze wyjściowym dla zapewnia niezależnego odbioru danych. W systemie można wyróżnić kilka typów połączeń: a) dane, będące połączeniem kierunkowym pomiędzy dwoma sąsiednimi komponentami, gdzie przekazywane są dane (pakiety krotek – linia ciągła), b) komunikaty, przekazywane na drodze: komponent, a zarządca komponentów. Służą one sterowaniu działaniem systemu (linia wykropkowana), c) zapisy dziennika i błędy, przekazywane do osobnego obiektu dziennika, który je wszystkie magazynuje i przetwarza (linia przerywana). Zarządca komponentów odpowiada za prawidłową pracę i konfigurację komponentów. W przypadku wystąpienia wyjątku, kończy działanie systemu ETL( δ ). 118 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Przyrostowa ekstrakcja danych ETL(δ) – aspekty implementacyjno-wydajnościowe 4.3 Komponenty w 4.3.1 Komponent detekcji zmian Dla zachowania uniwersalności komponent detekcji zmian został opracowany jako osobny obiekt. Przy takim rozwiązaniu jest niezależny od tego, jaki ekstraktor będzie go poprzedzał. Jego zadaniem jest wykrycie danych zmienionych na podstawie aktualnie otrzymanych danych i swojego repozytorium danych poprzednich, a następnie wysłać je (same dane zmienione) z odpowiednimi znacznikami N, U i D. Komponent detekcji zmian porównuje migawki metodą opartą o znaczniki. W wyniku tego porównania zostaje wyznaczony typ każdej krotki (N, U, D). Dodatkowo, dla poprawnego działania systemu krotki typu U i D są uzupełniane poprzednimi wartościami z lokalnego repozytorium wartości poprzednich, które są osobno przechowywane przez komponent w plikach danych. Osobne przechowanie wartości krotek i skrótów służy do przyspieszenia operacji poprzez uniknięcie wyliczania skrótów dla poprzednich wartości danych oraz w celu odtworzenia samych wartości krotek. W obecnej implementacji przyjęto rozwiązanie oparte o binarne pliki dyskowe, przechowywane lokalnie. Algorytm detekcji zmian opartej o znaczniki został szczegółowo opisany w pozycji [1]. w w da .b 4.3.2 Komponenty ekstrakcji danych Wyróżniono dwa komponenty ekstrakcji: z pliku tekstowego i z bazy danych. Oba są ekstraktorami biernymi i dla prawidłowego ich funkcjonowania tuż za nimi powinien się znaleźć komponent detekcji zmian. Funkcjonalność ekstraktorów sprowadza się do sekwencyjnego pobierania danych ze źródła (kolejnych linii z pliku, czy wierszy z tabeli bazie danych), opakowania ich w obiekt krotki i wysłania do bufora wyjściowego. W obecnej implementacji przyjęto jako źródła, pliki tekstowe, w których każda linia to nowy wiersz, kolumny rozdzielone są określonym i definiowanym separatorem oraz ich liczba jest stała we wszystkich wierszach. Oczywiście dopisanie ekstraktorów czytających dane z innych plików, czy baz danych innego typu niż relacyjnych, jest także możliwe. pl s. 4.3.3 Komponenty transformacji danych Komponenty transformacji danych podzielono na komponenty zależne i niezależne od wcześniejszych danych. Komponenty zależne wymagają przechowywania wszystkich swoich pośrednich wyników oraz ich aktualizacji wraz z napływem kolejnych krotek. Przechowywanie danych następuje w lokalnych binarnych plikach, z opcjonalnym dodatkowym indeksem na podstawie zmodyfikowanego B-drzewa lub cachem danych wejściowych. Komponenty niezależne nie wymagają znajomości danych, tylko przetwarzają każdą krotkę w locie. Do komponentów zależnych możemy zaliczyć komponent agregacji, komponent grupowania oraz komponent złączenia. Komponent Agregacji pozwala zrealizować funkcje agregacji (jedna z pięciu funkcji: SUM, AVG, COUNT, MIN, MAX) na wszystkich danych przechodzących przez komponent. Dane funkcje agregacji są rozdzielne, więc dla prawidłowego funkcjonowania, komponent musi przechowywać aktualne wartości poszczególnych agregatów pomiędzy kolejnymi etapami procesu. Dwie pierwsze funkcje (SUM i COUNT) poprawiają sumę lub liczebność krotek. W przypadku funkcji średniej (AVG) musimy znać sumę i liczebność, aby móc poprawnie określać średnią wraz z przepływem kolejnych danych. W przypadku funkcji minimum i maksimum (MIN i MAX) pojawia się problem z odtworzeniem wartości po wykasowaniu aktualnej wartości ekstremalnej. Dlatego funkcje te przechowują N ostatnich 119 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 M. Gorawski, M. Ciepluch w wartości ekstremalnych, dzięki czemu jesteśmy w stanie określić nowe ekstremum. Jest to pewne ograniczenie systemu, bowiem po wykorzystaniu wszystkich N liczb, następujące wyniki są już obarczone możliwym błędem wyboru wartości, która może nie być poprawną wartością ekstremalną. Dlatego dobór właściwej liczby N, podobnie jak wybór właściwej funkcji wyznaczającej znacznik krotki jest trudny. Komponent Grupowania pozwala wykonać funkcje agregacji, ale osobno w każdej znalezionej grupie. W przypadku tego komponentu, należy znać wartość każdego agregatu w każdej grupie z osobna. Dlatego dla każdej wyznaczonej grupy przechowuje się osobną tablicę wyników wykonywanych agregatów, które są aktualizowane wraz z nadchodzeniem kolejnych krotek. Drugą różnicą w grupowaniu jest to, że na wyjściu pojawiają się inne dane, niż na wejściu. Wynikowe krotki są złożeniem klucza grupy i aktualnych dla niego wartości agregatów, a znacznik wynikowej krotki jest uzależniony od tego czy dana grupa została zmodyfikowana (znacznik U), czy dodana (znacznik N), lub usunięta (znacznik D). Komponent Złączenia umożliwia dopasowanie krotki z dwóch wejść na podstawie klucza złączenia. Każdorazowe przybycie krotki na wejście powoduje wykonanie następujących czynności: 1) aktualizację wpisu w pliku danych, 2) dodanie do listy krotek przybyłych w danym etapie (przechowywany jest klucz i skrót krotki oraz jej typ, a na koniec 3) próba złączenia krotki, czyli odszukanie pasującej krotki -(ek) (o tym samym kluczu złączenia) z sąsiedniego wejścia. W trakcie działania komponentu Złączenia wyróżnia się dwa typy złączenia: 1) warunkowy, gdy dane na drugim wejściu ciągle napływają. W takim przypadku nie można łączyć danej z wejścia pierwszego z drugim wejściem, dopóki nie ma pewności, że dana krotka jest aktualna; (2) bezwarunkowy, gdy dane na drugim wejściu już nie napływają. Wtedy istnieje pewność, że wpisy w listach danych są aktualne i każdą przybyłą krotkę z wejścia pierwszego łączy się z krotką z wejścia drugiego w momencie dopasowania. Dla potrzeb złączenia zostało zaimplementowane rozwinięcie B+drzewa, obsługujące złączenie, dalej nazywane drzewem złączeń. Główną ideą drzewa złączeń jest przechowanie dwóch indeksów (z dwóch wejść komponentu złączenia) w jednym wspólnym B+drzewie. Gdy wyszukuje się miejsce dla danego klucza, znajdujemy dany wpis (o danym kluczu) i mamy tam od razu wszystkie klucze (z obu wejść) mające taki sam klucz złączenia. Czyli przy jednym dostępie można określić wszystkie potencjalne krotki do złączenia. Poziom liści takiego drzewa składa się z dwóch list (oznaczonych jako List, po jednej dla każdego z wejść), składających się z JoinElement, gdzie pojedynczy JoinElement składa się z 3 pól: − long:filePos – opisujący położenie krotki w pliku danych, − int:hashCode – opisujący jej skrót, dla identyfikacji właściwej krotki, − byte:type – opisujący jej typ w danym etapie (lub 0, jeśli C). List są listami wszystkich elementów z danego wejścia (1 lub 2), które mają dany klucz złączenia (X lub Y). Taki pojedynczy element jest w stanie zidentyfikować krotkę (na podstawie skrótu hashCode) jak i wskazać jej położenie w pliku danych (przez położenie filePos). Przykładowa organizacja komponentu złączenia została przedstawiona na rys. 3. Upraszczając, algorytm działania można opisać następującymi krokami: − wyznacz klucz złączenia dla danej krotki, − wyszukaj właściwy element (JoinTreeElement) dla danego klucza, − dodaj/zaktualizuj wpis w odpowiednim pliku danych, − dodaj/zaktualizuj wpis dla elementu, − dokonaj złączenia, z uwzględnieniem warunków i zależności. da .b w w pl s. 120 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Przyrostowa ekstrakcja danych ETL(δ) – aspekty implementacyjno-wydajnościowe B+Drzewo JoinTreeElement JoinTreeElement JoinTreeElement Klucz: 5 DataFile1 X | 47 | C DataFile2 Y|5|C X: w 2 | 5 | Jan | Nowak | 40 Y: 5 | Dział Techniczny w Rys. 3. Przykład drzewa złączeń Jeśli chodzi o bardziej szczegółowy algorytm samego operowania w elementach drzewa, można tutaj wyróżnić następujące szczegóły, przedstawione poniżej. da .b w // jeśli na drugie wejście, czyli te które dołączamy If(entryNo == 2) // złączenie bezwarunkowe // łączymy dany element E ze wszystkimi elementami z wejścia 1) Foreach(JoinElem e : entries1) Join(E, e) pl s. // jeśli na pierwsze wejście, czyli te do które dołączamy Else if (entryNo == 1) // złączenie warunkowe jeśli drugie wejście zakończyło się If(secondFinised) // łączymy dany element E ze wszystkimi wpisami z wejścia 2) Foreach(JoinElem e : entries2) Join(E, e) // jeśli dana krotka jest wykasowana If(E.type == D) Entries1.delete(E) // kasujemy wpis else E.type = 0 // inaczej gasimy typ (ustawiamy na C) // robimy to, żeby potem dany element już nie był rozpatrywany // tutaj na drugie wejście mogą nadejść dane, wiec musimy uważać na // typy i rozpatrywać tylko te, które są ustawione (zaktualizowane) else Foreach(JoinElem e : entries2) // łączymy ze wszystkimi wpisami z wejścia drugiego, // których typ jest ustawiony (wartość różna od 0) If(e.type != 0) Join(E, e) Można zauważyć, że każde przybycie nowej krotki inicjuje złączenie: a) bezwarunkowe, jeśli przyszła na drugie wejście oraz b) warunkowe, jeśli na pierwsze wejście. Jednak taki proces jest niepełny. Można sobie wyobrazić, że pewne krotki (o danym kluczu złączenia) nie przybyły na drugie wejście i nie zainicjowały złączenia. Dodatkowo musimy zgasić wszystkie flagi, przed uruchomieniem kolejnego etapu, bowiem obowiązują tylko w obrębie jednego etapu (potem są rozpatrywane jako typ C). Na koniec musimy wywołać proces przeglądający wszystkie dane i dokonujący złączenia i gaszenia typów. Do komponentów niezależnych od danych możemy zaliczyć komponent Filtracji (weryfikuje krotki pod względem spełniania określonego warunku filtracji), Unii (poziome złączenie krotek z N wejść), Projekcji (wydzielenie podrelacji z relacji wyjściowej), Scalania (poziome złączenie danych z kilku wejść), Generacji (generacja dane na podstawie przybyłych danych), Sortowania (porządkuje dane wg ustalonego porządku). 121 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 M. Gorawski, M. Ciepluch w 4.3.4 Komponenty wstawiania danych W przypadku komponentów wstawiania danych do docelowej tabeli w bazie danych, w zależności od typu przybyłej krotki musimy wykonać jedną z 3 operacji: INSERT dla krotek typu N, UPDATE dla krotek typu U oraz DELETE dla krotek typu D. Dodatkowo musimy zadbać, aby zachować właściwą kolejność aktualizacji, zgodnie z poniższą kolejnością przetwarzania: 1) nowych linii w wymiarach (znacznik N), 2) zmienionych linii w wymiarach (znacznik U), 3) nowych linii w faktach (znacznik N), 4) zmienionych linii w faktach (znacznik U), 5) usuniętych linii w faktach (znacznik D), 6) usuniętych linii w wymiarach (znacznik D). w 5 Przykłady procesów ETL( δ ) w Przedstawiono wyniki testów dla dwóch grafów ekstrakcji danych. Testy zostały wykonane na komputerze AMD Athlon XP 2600 z 1 GB RAM i składały się z 10 powtórzonych serii wykonań procesu, przy tych samych danych. Przedstawione wyniki są średnią z tych serii. Graf ekstrakcji danych dla przykładu 1 został przedstawiony na poniższym rys. 4 (lewa strona), dla przykładu 2 (prawa strona). Gen DBE 1 Union Group DBE Diff Diff Group 1 Sort da .b SF DBE 2 Diff Proj Group SF Union Gen FI FI DBE 3 FE Diff Join 1 FI Join 2 FI Join 3 FI Group 2 Group 3 Diff Rys. 4. Graf ekstrakcji danych dla przykładu 1 (po lewej) i dla przykładu 2 (po prawej) pl s. Badania testowe dla przykładu 1 zostały wykonane dla relacji pracownicy w liczebności 100 tys. (DBE). W skład relacji wchodziły następujące atrybuty: id_pracownik, id_dzial, nazwisko, imie, wiek, pensja. Pozostałe komponenty można opisać następująco: − SF, filtracja i podział zbioru danych na dwie połowy (równoliczne); − Group, w którym grupowanie odbywa właśnie na podstawie atrybutu id_dzial, a w poszczególnych grupach wykonywany jest pełen zestaw funkcji agregacji na atrybucie pensja; − Union, łączenie otrzymanych danych z komponentów; − Sort, sortowanie danych; − Proj, wybór podrelacji id_dzial, max(pensja), min(pensja. Uzyskane wyniki można zobaczyć na wykresie na rys. 5. Badania dla przykładu 2 zostały wykonane dla relacji: − sprzedaż o liczebności 500 tys. rekordów (DBE1) i typie zmian N i D. W skład relacji wchodziły następujące atrybuty: id_sprzedaz, id_towar, id_sprzedawca, id_dzial, ilość, wartość; − towary o liczebności 1 mln. rekordów (DBE2) i bez zmian. W skład relacji wchodziły następujące atrybuty: id_towar, nazwa, cena, ilość; − pracownicy w liczebności 100 tys. (DBE3) i typie zmian U. W skład relacji wchodziły następujące atrybuty: id_pracownik, id_dzial, nazwisko, imie, wiek, pensja; 122 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Przyrostowa ekstrakcja danych ETL(δ) – aspekty implementacyjno-wydajnościowe − działy w liczebności 10 tys (FE) i typie zmian U. W skład relacji wchodziły następujące atrybuty: id_dzial, nazwa, premia. 80 70 60 w czas [s] 50 40 30 20 10 w 0 Init 0% 5% 10% 15% 20% 25% 30% 40% 50% 75% 90% procent zmian w danych źródłowych DBE Sort Proj FI 1 Union FI 2 Diff 1 SF 1 SF 2 Gen 2 Group 1 Group 2 Gen 2 Unio 2 w Rys. 5. Wyniki dla przykładu 1 da .b Pozostałe komponenty można opisać następująco. − Group, w którym grupowanie odbywa się na podstawie odpowiednio atrybutów id_dzial, id_towar, id_praconik, a w poszczególnych grupach wykonywany jest pełen zestaw funkcji agregacji na atrybucie liczbowym. − Join, złączenie otrzymanych pogrupowanych danych z odpowiadającymi danymi źródłowymi. Uzyskane wyniki zebrano wykresie na rys. 6. 2500 2000 czas [s] 1500 1000 0 init 0% 5% 10% 15% 20% 25% pl s. 500 30% 40% 50% 75% 90% procent zm ian w danych źródłowych DBE 1 FI 1 FI 2 FI 3 DBE 2 Diff 1 Diff 2 Diff 4 DBE 3 FE Group 1 Join 1 Group 3 Join 3 Join 2 Group 2 Diff 3 Rys. 6. Wyniki dla przykładu 2 Dla przykładu 1 zbiór danych został podzielony na dwie połowy. Wyniki pokazują, że uzyskane rezultaty są sparowane w dwuelementowe grupy, dla każdej z połówek. Dodatkową obserwacją jest fakt dużego czasu pracy komponentu filtracji. Dla przykładu 2, uzyskane wyniki tworzą trzy grupy, w tym jedną mocno odbiegająca od pozostałych. Do tej najliczniejszej należą grupowania i złączenia dla towarów i pracowników (oraz sprzedaży), do drugiej (średnio licznej) należą komponenty detekcji zmian do tych relacji, oraz do relacji głównej – sprzedaży. 123 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 M. Gorawski, M. Ciepluch 6 Podsumowanie i wnioski w System ETL( δ ) realizuje proces przyrostowej ekstrakcji danych wykorzystujący ideę ciągłej integracji danych. Jest uzupełnieniem klasycznego systemu ETL o mechanizm procesu przyrostowej ekstrakcji danych w ramach detekcji zmian w danych źródłowych. System ETL( δ ) gwarantuje pełną dostępność danych w hurtowni danych oraz zachowanie historii zmian danych. Wyniki badań potwierdzają fakt większych korzyści uzyskanych z większej funkcjonalności niż nakłady poniesione na detekcję zmian w danych. Wysoka wydajność poszczególnych komponentów przekłada się na dobrą wydajność wielokomponentowych realizacji złożonych procesów ETL( δ ). w Literatura 1. 3. 5. 6. 7. 8. 10. 11. 12. 13. 14. pl s. 9. da .b 4. w 2. Bruckner R., List B., Schiefer J.: Striving towards Near Real-Time Data Integration for Data Warehouses. DaWaK 2002, pp. 317–32. Raden N.: Real time: get Real. Take the idea of a real-time data warehouse with a grain of salt, then realize the possibilities. Intelligent Enterprise, vol. 6, no.10, 2003. Gorawski M., Ciepluch M.: Przyrostowa ekstrakcja danych ETL( δ ). Studia Informatica vol. 27, 1(66), 2006. Gorawski M., Ciepluch M.: Ocena wydajności komponentów systemu przyrostowej ekstrakcji danych ETL( δ ) WKŁ, In a joint publication Kozielski S et al.: Databases. Structures, Algorithms, Methods (Bazy danych. Struktury, algorytmy, metody) Architecture, Formal Methods and Data Mining (Architektura, metody formalne I eksploracja danych), Conf. BDAS’06, ISBN 978-83-206-1611-5, pp. 289–298 (2006). Gorawski M., Piekarek M.: Rozwojowe środowisko ETL/Java Beans. Studia Informatica, vol. 24, 4(56), pp. 288–302, 2003. Gorawski M., Jabłoński P.: Uniwersalne środowisko graficzne do modelowania procesów ekstrakcji i odtwarzania. Studia Informatica, vol. 26, 3(64), s. 7–28, 2005. Gorawski M., Marks P.: Grouping and Joining Transformations in Data Extraction Process. XXI Autumn Meeting of the Polish Information Processing Society, Conference Proceedings, Wisła, Poland, ISBN 83-922646-0-6, PIPS pp. 105–113, 2005. Gorawski M., Piekarek M.: Rozproszony proces ekstrakcji danych z protokołem SimpleRMI. Bazy Danych - Modele, Technologie, Narzędzia, Eds. St. Kozielski, Wydawnictwo Komunikacji i Łączności (WKŁ), ISBN 83-206-1572-0, s. 43–50, 2005. Gorawski M.: Ekstrakcja i integracja danych w czasie rzeczywistym. Praca zbiorowa. „Współczesne problemy systemów czasu rzeczywistego”, WNT, s. 435–445, 2004. Gorawski M.: 3 perspektywy procesu ekstrakcji danych. Praca zbiorowa „Strategie informatyzacji i zarządzanie wiedzą”, Eds. Szyjewski Z., Nowak J., Grabara J.,WNT, ISBN-832004-3014-3, s. 295–341, 2004. Gorawski M., Siódemak P.: Graficzne projektowanie aplikacji ETL. Studia Informatica, vol. 24, 4(56), s. 345–367, 2003. Gorawski, M.: Modelowanie procesu ekstrakcji danych. IV Konferencja Metody i systemy komputerowe w badaniach naukowych i projektowaniu inżynierskim, 26-28 listopad, 2003, Kraków, Poland, ONT, Ed. Tadeusiewicz R., Ligęza A., Szymkat M., ISBN 83-916420-1-1, s. 165–170, 2003. Rosana L. de B. A. Rocha, Cardoso L., Souza J.: An Improved Approach in Data Warehousing ETLM Process for Detection of Changes in Source Data. SBBD 2003, pp. 253–266. Jennifer Widom: Research Problems in Data Warehousing. Proc of 4th International Conference on Information and Knowledge Management (CIKM) Nov. 1995. 124 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007