Czy może być szybciej
- Wojciech Sypko,
- Beata Ząbek,
- Adam Czernikowski,
- 30.11.1998
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.