Czy może być szybciej

Problem, który zniknął

Zadaniem, przed jakim stanęliśmy w PZU Życie, było zbudowanie aplikacji umożliwiającej przygotowywanie definiowanych na bieżąco zestawień, według wybranej minihurtowni danych. Analityk miał otrzymać możliwość samodzielnego budowania zestawień na podstawie wybranych zmiennych analitycznych, zmiennych kategoryzujących i porządku rozwijania. Ponadto zdefiniowany przez niego agregat mógł być ograniczany do podzbioru poprzez wskazanie konkretnych wartości wybranych zmiennych kategoryzujących. Po wykonaniu aplikacji za pomocą znanych i wypróbowanych technik okazało się, że nie nadaje się ona do pracy - czas oczekiwania na zbudowanie żądanego zestawienia wahał się od 3 do 8 minut. Przygotowaliśmy więc data mart na podstawie wielowymiarowej struktury danych. Efekt przerósł nasze oczekiwania - średni czas budowania zestawień zmniejszył się ponad czterdziestokrotnie i aktualnie jest liczony w sekundach (średnio 5 s).

Kiedy tak...

Zastanówmy się teraz przez chwilę, w jakich sytuacjach stosowanie wielowymiarowych struktur danych przyniesie korzyści:

kiedy wymagana jest duża szybkość dostępu do danych, a przy tym danych jest po prostu dużo oraz nie są z góry znane przekroje, jakie będą używane przez analityków.

... a kiedy nie

gdy danych jest mało - z tego prostego powodu, że przy małej ilości danych niezależnie od struktury pliku, w którym je przechowujemy (jak i stosowanego algorytmu) czas przetwarzania i tak będzie krótki;

gdy dane przed wizualizacją wymagają przetwarzania z wykorzystaniem informacji z zewnątrz, np. uwzględnienia bieżących kursów walut lub wskaźników giełdowych.

W drugim z tych przypadku w celu przetworzenia danych należy najpierw wykonać ich eksport do formatu umożliwiającego przetwarzanie - w strukturach wielowymiarowych przetwarzanie nie jest możliwe. Zyski z zastosowania MDDB mogą więc być tu znikome lub żadne.

Wady i zalety wielowymiarowych struktur danych to:

  • szybkość +

  • wygoda +

  • rozmiar pliku -

    Rozmiar pliku o strukturze wielowymiarowej ściśle zależy od liczby zmiennych kategoryzujących, ich mocy i od zestawu wygenerowanych agregatów częściowych. Jeśli utworzymy plik o strukturze MDDB zawierający jedynie agregat podstawowy, to będzie on charakteryzował się małą objętością, ale również taką wydajnością. Podchodząc z drugiej strony - można utworzyć plik zawierający wszystkie możliwe agregaty częściowe. Plik taki umożliwiałby dostęp do danych z błyskawiczną wręcz szybkością, jednakże jego objętość byłaby porażająca.

    Rys. 3 Tylko agregat podstawowy (mała objętość) czy wszystkie możliwe agregaty (duża wydajność)?

    Pojawia się tutaj klasyczny problem złotego środka - co wybrać: rozwiązanie szybsze, lecz większe objętościowo, czy zajmujące mniej miejsca, ale jednocześnie mniej wydajne? Rozwiązanie tego problemu, będące autorskim opracowaniem zespołu informatyków PZU Życie SA, przedstawimy w kolejnym artykule "Optymalizacja wielowymiarowych struktur danych".

    <hr size=1 noshade>

    Słowniczek

    Agregat (przekrój) - Zsumowane dane ilościowe w rozbiciu na grupy zdefiniowane przez zadane zmienne kategoryzujące (np. suma wynagrodzeń w rozbiciu na płeć)

    Agregat podstawowy - Agregat oparty na wszystkich zmiennych kategoryzujących

    Agregat częściowy - Agregat oparty na wybranych zmiennych kategoryzujących

    Moc zmiennej kategoryzującej - Liczba różnych wartości, jakie może przyjąć zmienna kategoryzująca, np. dla miesiąca jest to 12, dla płci 2

    Podzbiór - Wybrana część agregatu

    Zapytanie - Żądanie wygenerowania agregatu lub podzbioru

    Zmienne analityczne - Wszelkie pola zawierające dane ilościowe poddawane obróbce statystycznej (sumowanie, uśrednianie itd.), np. płaca, premia

    Zmienne kategoryzujące - Pola zawierające dane służące do grupowania informacji, np. płeć, wykształcenie, data

    <hr size=1 noshade>Artykuł powstał na podstawie doświadczeń zespołu informatyków PZU Życie SA, zdobytych podczas realizacji rozwiązań opartych na wielowymiarowych strukturach danych. Zaprezentowano go na SAS Forum '98.


  • TOP 200