Wprowadzenie do hurtowni danych

admin | Ogólne | 20 września 2007

Jest to pierwszy z cyklu kilku artykułów, opisujących podstawowe koncepcje hurtowni danych i systemów Business Intelligence.

Pojęcie hurtowni danych (ang. data warehouse) zostało wprowadzone po raz pierwszy przez W.H. Inmona w roku 1992. W myśl tej definicji, hurtownia danych to baza danych posiadająca następujące cechy:

  • zorientowanie na temat,
  • zintegrowanie,
  • nieulotność,
  • zmienność w czasie.

Zorientowanie na temat oznacza, że hurtownia danych jest zorganizowana i zoptymalizowana pod kątem pewnego wycinka rzeczywistości. Przykładowo, w przedsiębiorstwie produkcyjnym takim wycinkiem może być sprzedaż, produkcja, zamówienia.
Zintegrowanie jest powszechnie uznawane za najbardziej istotną i pożądaną cechę hurtowni danych.  Dane trafiające do hurtowni danych mogą pochodzić z wielu systemów źródłowych, kluczowym problemem staje się więc zapewnienie ich kompletności i spójności. Jest to szczególnie trudne, kiedy systemy źródłowe są wykonane w różnych, niekompatybilnych ze sobą technologiach. Autor z własnego doświadczenia zna firmy, gdzie wdrożona hurtownia z powodzeniem integruje dane z baz plikowych (dBase, Pascal), arkuszy Excel oraz nowoczesnych systemów relacyjnych baz danych (MS SQL Server, Oracle, DB2, Sybase).
Nieulotność oznacza, że dane, które trafiły do hurtowni pozostają w niej w postaci niezmienionej. Jest to istotna różnica w porównaniu z operacyjnymi bazami danych, w których modyfikowanie rekordów jest czymś naturalnym, zaś historia zmian często jest tracona. Klasycznym problemem związanym z nieulotnością jest zmiana adresu klienta – w systemie transakcyjnym w takiej sytuacji odpowiednie pole po prostu zostanie nadpisane, a więc poprzedni adres zostanie bezpowrotnie utracony. W hurtowni danych takie tracenie informacji jest niedopuszczalne.
Zmienność w czasie danych w hurtowni jest logiczną konsekwencją nieulotności. Każdy rekord w hurtowni danych powinien być związany z pewnym momentem bądź odcinkiem czasowym. Celem hurtowni jest bowiem obrazowanie stanu danych w dowolnie wybranym okresie czasu. Ponieważ większość aplikacji bazodanowych nie była projektowana z myślą o raportowaniu na przestrzeni czasu, zapewnienie zmienności danych nie jest prostym zadaniem.

Architektura systemu hurtowni danych
Schemat podstawowej architektury typowej hurtowni danych został przedstawiony na rysunku. Dane pochodzące z wielu źródeł są pobierane, przetwarzane i ładowane do hurtowni podczas procesu ETL (ang. Extraction, Transformation, Loading). ETL jest procesem cyklicznym – przy pierwszym uruchomieniu hurtowni zaczytywany jest duży zakres danych, obejmujący np. okres kilku lat. Następnie, w regularnych odstępach czasowych, np. codziennie bądź raz w tygodniu, dane są aktualizowane.

Typowa architektura hurtowni danych

Informacje zawarte w hurtowni danych mogą być analizowane bezpośrednio, np. poprzez zapytania SQL. Jednak w większości przypadków hurtownia danych służy jako źródło danych dla systemu klasy Business Intelligence, który zawiera rozbudowane narzędzia raportujące oraz analityczne. Narzędzia te mogą być bardzo różne – od klasycznych generatorów raportów (np. Crystal Reports), poprzez analizy z wykorzystaniem kostek OLAP i technik data mining, aż po rozwiązania Business Performance Management, służące do analizy stanu wykonania założonych celów przedsiębiorstwa.

Proces ETL
 Hurtownia danych zasilana jest na ogół z wielu, rozproszonych i różnorodnych źródeł danych. Każde z nich może mieć własny format danych, informacje z niektórych źródeł mogą być zduplikowane, zaś wszystkie one mogą znajdować się na komputerach oddalonych od siebie o setki kilometrów. Dlatego też fundamentalną rolę w zapewnieniu wysokiej jakości wynikowej hurtowni danych odgrywa proces, znany w literaturze jako ETL. Określenie to jest skrótem od nazw trzech etapów przetwarzania danych, trafiających do hurtowni:

  • ekstrakcja (ang. extraction),
  • transformacja (ang. transformation),
  • ładowanie (ang. loading).

Proces ETL

Etap ekstrakcji danych polega na pobraniu danych z systemów źródłowych. Warto zaznaczyć, że system źródłowy to nie tylko używany w przedsiębiorstwie system klasy ERP, oparty na relacyjnej bazie danych.
W praktyce często dane do hurtowni są pobierane z plików arkuszy kalkulacyjnych, czy wręcz plików tekstowych. Wiąże to ze sobą problemy związane z brakiem metadanych oraz kontroli nad formatem pobieranych rekordów. Przykładowo, o ile w relacyjnych bazach danych typ kolumny int gwarantuje, że w kolumnie tej nie znajdzie się np. nazwa miejscowości, w arkuszu kalkulacyjnym takie założenie nie musi być prawdziwe.
Innym często spotykanym problemem jest nieznany sposób organizacji danych w systemie źródłowym. Jest to szczególnie dotkliwe w przypadku integracji ze starszymi systemami, korzystającymi z niestandardowych struktur danych oraz w przypadku braku dokumentacji technicznej systemu. W takich sytuacjach często jedynym wyjściem jest tzw. reverse engineering. Dlatego też, projektując etap ekstrakcji, należy wziąć pod uwagę wiele czynników związanych ze specyfiką wykorzystywanych źródeł danych.
Celem etapu transformacji jest przekształcenie pobranych danych źródłowych do postaci akceptowalnej przez hurtownię danych. W szczególności, na tym etapie odbywa się czyszczenie danych (ang. cleansing), mające na celu poprawienie ich jakości. Podczas czyszczenia i dalszej transformacji danych najczęściej używane są następujące przekształcenia:

  • wybieranie tylko niektórych kolumn,
  • zmiana formatu danych (np. formatu daty),
  • translacja zakodowanych wartości (np. w sytuacji, gdy system źródłowy koduje płeć jako M, K, zaś hurtownia danych używa kodowania liczbowego),
  • ujednolicenie wartości (np. Wrocław, Wroclaw, wrocław oznaczają to samo miasto),
  • wyliczenie wartości pochodnych (np. brutto = netto + VAT),
  • złączenie danych z różnych źródeł,
  • zsumowanie i unifikacja kodów danych,
  • agregacja danych,
  • zamiana wierszy na kolumny (ang. pivoting),
  • założenie kluczy zastępczych,
  • podział kolumny na kilka nowych – np. rozdzielenie imienia i nazwiska.

Ostatnim etapem procesu ETL jest ładowanie przekształconych i wyczyszczonych danych do docelowej hurtowni. Krytycznym elementem jest tutaj szybkość. Użytkownicy końcowi mają bowiem zazwyczaj surowe wymagania odnośnie czasu, w którym hurtownia danych jest niedostępna i nie udziela odpowiedzi na zapytania. Proces ładowania danych musi być tak zaprojektowany, aby trwał możliwie krótko i w minimalnym stopniu wpływał na pracę użytkowników.
Projektując proces ETL, należy rozważyć dwa rodzaje ładowania danych:

  • ładowanie początkowe, które odbywa się jednorazowo, przy inicjalizacji hurtowni danych i obejmuje zaczytanie całych dostępnych danych,
  • ładowanie przyrostowe, przeprowadzane cyklicznie, z reguły codziennie.

Ponieważ ładowanie początkowe z racji dużej ilości wczytywanych danych może być czasochłonne, do jego przyspieszania używa się np. mechanizmu ładowania bezpośredniego (ang. bulk insert), zapisującego wprost do wewnętrznych struktur bazy danych z pominięciem poleceń SQL, oraz wyłącza dziennik transakcji. Dodatkowo, aby zwiększyć wydajność zapytań do hurtowni danych, na załadowane dane zakłada się indeksy.

1 komentarz »

  1. Bardzo przystepnie wytłumaczone…szczególnie dla kogoś takiego jak ja, który dopiero zaczyna swoją edukację na ten temat. Dzieki

    Krybo — październik 11, 2008 @ 12:51 po południu

RSS komentarzy. TrackBack URI

Odpowiedz

Musisz być zalogowany aby komentować.

Polski Wordpress
Oparte na WordPress | Theme by Roy Tanck. Tłumaczenia dokonał azWeb dla Polski support WordPress