Czy może być szybciej

Wydajność hurtowni danych można zwiększyć poprzez zastosowanie wielowymiarowych struktur danych.

Wydajność hurtowni danych można zwiększyć poprzez zastosowanie wielowymiarowych struktur danych.

W ostatnim czasie pojawiło się wiele publikacji na temat hurtowni danych, nie będziemy więc zbyt głęboko wnikać w pojęcia podstawowe. Klasyczny model hurtowni danych można zobrazować na poglądowym rys. 1.

Rys. 1 Klasyczny model hurtowni danych

Cztery kolejne, rysujące się w pionie i oddzielone strzałkami sekcje to (kolejno od lewej): aplikacje transakcyjne (będące źródłami danych), główne repozytorium danych, dedykowane minihurtownie danych i wyniki końcowe, czymkolwiek by one były.

Końcowy użytkownik rozwiązania opartego na hurtowni danych będzie oczekiwał sprawnego (czytaj: szybkiego) dostarczania wyników końcowych. Jeśli użytkownikiem tym jest analityk, to korzystanie z hurtowni danych ma dla niego sens, jeśli sam może określić rodzaj wyniku - inaczej mówiąc, należy zapewnić mu możliwość budowania dowolnych zestawień, opartych na dowolnych przekrojach danych.

Użytkownik końcowy wykorzystuje (zazwyczaj) do swoich analiz dane dostarczane w tematycznie zorientowanych minihurtowniach danych. Możliwość definiowania dowolnych analiz wiąże się z powstawaniem na bieżąco wszystkich możliwych przekrojów i/lub podzbiorów danych.

Wyobraźmy sobie sytuację dostarczania agregatów na potrzeby konkretnych zestawień w trybie on-line przy następujących warunkach: duża ilość danych i wiele zmiennych kategoryzujących, charakteryzujących się dużymi mocami. Jeśli stosowane są klasyczne, płaskie struktury danych, to staniemy przed poważnym problemem wydajnościowym.

Dostępne są następujące możliwości skrócenia czasu odpowiedzi:

Wygenerowanie wszystkich możliwych agregatów

To rozwiązanie jest nie do przyjęcia z wielu powodów (objętość, czas przygotowania, sensowność), lecz warto je przytoczyć dla kompletności rozważań.

Zastosowanie indeksów

Pomysł na pierwszy rzut oka dobry - indeksy przyspieszają wyszukiwanie, czyli zwiększają wydajność przetwarzania. Ale jakie indeksy stworzyć? Zbudowanie wszystkich możliwych indeksów (wszak nie znamy z góry potrzeb) oznacza zbyt dużą ich liczbę, kłopotliwą w obsłudze. Z kolei odrzucenie części indeksów obniży wydajność docelowego rozwiązania. Oczywiście, pozostaje jeszcze kwestia, które indeksy odrzucić, a które zostawić.

Wygenerowanie części agregatów

Oznacza ograniczenie możliwości pracy analityka, a nie wiadomo z góry (jedynie z grubsza), jakie zapytania do danych będzie on budował.

Brak wiedzy o tym, jakie agregaty będą potrzebne w przyszłości, uniemożliwia zbudowanie rozwiązania wydajnego na podstawie płaskich struktur danych, co dobitnie potwierdziła praktyka.

Problem ten rozwiązują wielowymiarowe struktury danych - MDDB (Multidimensional Database). Zastosowanie wielowymiarowych "kostek" danych nie jest już w systemach wspomagających tworzenie hurtowni danych rzadkością, jednakże w naszym kraju używane są one stosunkowo rzadko. Należy zwrócić uwagę na korzyści, jakie może przynieść poznanie tej technologii.

MDDB od środka

Wielowymiarowa kostka danych to plik danych, lecz o alternatywnej, względem płaskiej, strukturze wewnętrznej.

Rys. 2 Wielowymiarowa struktura danych

W pliku takim znajduje się zawsze agregat podstawowy (podstawa kostki na rys. 2) oraz ewentualnie agregaty częściowe (niektóre lub wszystkie, przedstawione na rys. 2 jako małe kostki). Wszelkie zapytania trafiają do "kostki zarządzającej", która najpierw sprawdza, czy odpowiedź nie istnieje już w którymś z agregatów częściowych. Jeśli tak - czas oczekiwania jest bardzo krótki. W przeciwnym wypadku odpowiedź budowana jest na podstawie jednego z agregatów częściowych (stosunkowo szybko) lub na podstawie agregatu podstawowego (najwolniej).

MDDB to szybki dostęp do dowolnych agregatów i podzbiorów danych, a ponadto potrzebne przekroje tworzone są automatycznie (bez potrzeby dodatkowego programowania) i jednocześnie najbardziej optymalnie.