Krzysztof Dembczyński Instytut Informatyki Zakład Inteligentnych Systemów Wspomagania Decyzji Politechnika Poznańska Technologie Wytwarzania Oprogramowania Semestr letni 2006/07
Plan wykładu Systemy baz i hurtowni danych wprowadzenie do wykładu Modele danych i ewolucja systemów baz danych Projektowanie hurtowni danych i modelowanie wielowymiarowe Proces ekstrakcji, transformacji i ładowania danych (Proces ETL) Systemy OLAP Analiza i eksploracja danych Rozmyte zapytania do baz danych Internet jako baza danych (Dawid Weiss)
Plan wykładu 1 Optymalizacja w systemach OLAP 2 Operacje złaczenia 3 Indeksy 4 Dane zagregowane 5 Podsumowanie
Plan wykładu 1 Optymalizacja w systemach OLAP 2 Operacje złaczenia 3 Indeksy 4 Dane zagregowane 5 Podsumowanie
Serwery OLAP sa narzędziem do efektywnego wielowymiarowego przetwarzanie ogromnych wolumenów danych. Serwery OLAP: ROLAP (Relacyjne) MOLAP (Wielowymiarowe) HOLAP (Hybrydowe)
Optymalizacja w systemach OLAP: Operacje złaczenia, Indeksy, Dane zagregowane, Wykorzystanie danych zagregowanych, Aktualizacja zmaterializowanych perspektyw, Przetwarzanie zapytań.
Plan wykładu 1 Optymalizacja w systemach OLAP 2 Operacje złaczenia 3 Indeksy 4 Dane zagregowane 5 Podsumowanie
Operacje złaczenia Zapytania do systemów ROLAP wymagaja operacji złaczenia: Tabela faktów łaczona jest z tabelami wymiarów, Wybór algorytmu złaczenia ma bardzo duży wpływ na koszt wykonania zapytania.
Implementacja operacji połaczenia: Zagnieżdżona pętla wybierz jeden plik jako zewnętrzny, a drugi jako wewnętrzny. Dla każdego pobranego rekordu z pliku zewnętrzenego odczytuj po kolei wszystkie rekordy pliku wewnętrznego i dla każdych dwóch rekordów sprawdź warunek połaczenia, Bezpośrednie ścieżki dostępu dla dopasowania rekordów poprzez wykorzystanie indeksów lub funkcji haszowych, Algorytm Sort-Merge, Algorytm Hash-join. Dwa źródła złożoności: operacje I/O oraz operacje obliczeniowe (procesora).
Plan wykładu 1 Optymalizacja w systemach OLAP 2 Operacje złaczenia 3 Indeksy 4 Dane zagregowane 5 Podsumowanie
Indeksy Zasada indeksów: mapowanie wartości kluczowych rekordów w celu szybkiego dostępu asocjacyjnego.
Podstawowa metoda przyśpieszania dostępu do danych. Przypominaja w pewien sposób indeksy w ksiażkach. Indeks jest zakładany na atrybucie relacji atrybut ten nosi nazwę atrybutu indeksowego. Definicja Indeks jest to uporzadkowany plik rekordów o stałej długości i o dwóch polach: wartość pola indeksowanego (atrybutu, który indeksujemy), wskaźnik na blok + przesunięcie w bloku (lub wskaźnik na adres bloku).
Odwrócona lista
Przykład Wybierz osoby w wieku 20 lat i o imieniu Fred: Lista osób - wiek = 20: R4, R18, R34, R35 Lista osób - imię = Fred: R18, R52 Wynik: przecięcie powyższych list: R18
Dodatkowe aspekty standardowych indeksów w hurtowniach danych: Wykonywanie zapytań na samych indeksach bez dostępu do danych w relacji. Indeksy na atrybutach złożonych. Indeksy w hurtowniach danych, m.in.: Odwrócona lista, Indeks bitmapowy, Indeks segmentowy, Indeks projekcji, Indeks połaczeniowy.
Indeks podstawowy Indeks podstawowy jest zakładany na atrybucie, który jest unikalny i porzadkuj acy. Plik z relacja jest uporzadkowany wg. atrybutu porzadkuj acego. Kolejne wskaźniki indeksów odpowiadaja poczatkom kolejnych bloków. Jest to tzw. indeks rzadki (tzn. liczba rekordów indeksu odpowiada liczbie bloków pliku wskażniki sa do bloków, a nie do rekordów). Taki indeks można przeszukiwać binarnie.
Indeks wtórny Pole, na którym zakładany jest indeks wtórny jest polem nieporzadkuj acym i nazywamy je polem indeksowanym. Może istnieć wiele indeksów wtórnych dla pojedynczej relacji. Indeks wtórny jest indeksem gęstym jednemu rekordowi indeksu odpowiada jeden rekord pliku danych. Taki indeks można przeszukiwać binarnie. Indeks ten zajmuje więcej pamięci niż indeks podstawowy.
Indeks wielopoziomowy Polega na indeksowaniu indeksów :) Indeks jest indeksowany w sposób rzadki (dlaczego?). Taka struktura redukuje znacznie czas przeszukiwania. Problemem jest wstawianie i usuwanie rekordów (odpowiedź: B-drzewa).
Indeks bitmapowy Przykładowa relacja Klient Miasto Samochód C1 Detroit Ford C2 Chicago Honda C3 Detroit Honda C4 Poznań Ford C5 Paris BMW C6 Paris Nissan
Przykład: indeks bitmapowy na atrybucie miasto Klient Chicago Detroit Paris Poznań C1 0 1 0 0 C2 1 0 0 0 C3 0 1 0 0 C4 0 0 0 1 C5 0 0 1 0 C6 0 0 1 0
Przykład: indeks bitmapowy na atrybucie samochód Klient BMW Ford Honda Nissan C1 0 1 0 0 C2 0 0 1 0 C3 0 0 1 0 C4 0 1 0 0 C5 1 0 0 0 C6 0 0 0 1
Indeks bitmapowy: Pozwala na efektywne operacja bitowe, Można skompresować mapy bitowe (potrzeba dekompresji), Czasami jego działanie jest wspomagane sprzętowo, Jest bardzo wydajny dla pewnego rodzaju zapytań: selekcja na dwóch atrybutach, Słabo się sprawdza przy dużych dziedzinach wartości atrybutów, Trudny do utrzymywania potrzeba reorganizacji gdy zmienia się wielkość relacji. Ilu klientów z Detroit posiada Ford a? Ilu klientów posiada Hondę?
Odwrócona lista z indeksem bitmapowym
Indeksy segmentowe sa zazwyczaj wykorzystywane dla miar lub atrybutów zawierajacych wartości liczbowe, najlepiej całkowite: podejście to pozwala na efektywne agregacje oraz efektywne przetwarzanie warunków przedziałowych. Definition Załóżmy, że wartościami atrybutu a sa liczby całkowite opisane n + 1 cyframi binarnymi. W takim wypadku atrybut a może być przedstawiony jako atrybuty binarne a 0,..., a n, takie że, a = a 0 + 2 a 1 +... + 2 n a n. Każdy atrybut a i może być reprezentowany jako indeks bitmapowy. Zbiór indeksów bitmapowych nałożonych na a i, i = 0,..., n, tworzy indeks segmentowy.
Indeks segmentowy Ilość 5 13 2 6 7 Bitmapa 0101 1101 0010 0110 0111 Indeks segmentowy: B4: 01000 B3: 11011 B2: 00111 B1: 11001
Indeks segmentowy Pytanie Jak efektywnie obliczyć liczbę jedynek w indeksie bitmapowym? Obliczanie sumy: Ilość 5 Indeks segmentowy: 13 B4: 01000 2 B3: 11011 6 B2: 00111 7 B1: 11001 Suma: 33 Zliczenie sumy: 1 2 3 + 4 2 2 + 3 2 1 + 3 2 0 = 8 + 16 + 6 + 3 = 33. Zliczenie jedynek: B4: 1 B3: 4 B2: 3 B1: 3
Indeks projekcji Dane moga być zorientowane horyzontalnie (poziomo) lub wertykalnie (pionowo). Zazwyczaj relacyjne SZBD przechowuja dane w orientacji horyzontalnej. Indeks projekcji pozwala na dostęp w sposób pionowy (implementacja w systemie firmy Sybase).
Indeks połaczeniowy Przechowuje informacje na temat połaczeń z inna relacja.
Indeks połaczeniowy Przechowuje informacje na temat połaczeń z inna relacja.
Plan wykładu 1 Optymalizacja w systemach OLAP 2 Operacje złaczenia 3 Indeksy 4 Dane zagregowane 5 Podsumowanie
Dane zagregowane Krata kuboidów.
Dane zagregowane Przechowywanie w hurtowni danych wyników użytecznych dla wielu zapytań.
Dane zagregowane Operacje na kostce: SELECT Data, Produkt, Klient, SUM(ilosc) FROM Transakcje GROUP BY CUBE(date, produkt, klient); Dla powyższego zapytanie należy zrealizować następujace grupowanie: (data, produkt, klient), (data, produkt), (data, klient), (produkt,klient), (data), (produkt), (klient) (*)
Trzy strategie agregowania: wszystko, nic, część. Dane zagregowane Problem polega na wybraniu odpowiednich elementów i ich liczby do zmaterializowania. Duża liczba duże rozmiary hurtowni danych. Mała liczba wolne działanie hurtowni danych.
Materializacja wszystkich kuboidów: Kuboidy moga być przechowywane w pamięci stałej, Podczas obliczania należy wziać pod uwagę pojemność pamięci operacyjnej oraz czas obliczeń, Liczba kuboidów: l = i=1,...,n (L i + 1), gdzie n to liczba wymiarów, a L i jest liczba poziomów hierarchii dla i-tego wymiaru, Przykładowo: 10 wymiarów, 4 poziomy każdy: l = 5 10 = 9, 8 10 6.
Materializacja wszystkich kuboidów dla ROLAP: Sortowanie, haszowanie i grupowanie jest stosowane na atrybutach wymiarów w celu uporzadkowania i grupowania odpowiednich krotek, Grupowanie jest przeprowadzone na podagregatach jako krok częściowego grupowania, Agregaty sa obliczane z podagregatów.
Materializacja wszystkich kuboidów dla MOLAP Array Based Algorithm: Najbardziej szczegółowy Cuboid (np. data, produkt, klient) jest zapamiętany w postaci wielowymiarowej kostki, Kostka dzielona jest na równej wielkości podkostki o rozmiarach pozwalajacych na umieszczenie w pamięci operacyjnej, Podkostki sa zapamiętywane osobno oraz poddawane kompresji, Agregaty obliczane sa poprzez odwiedzanie każdej podkostki w porzadku, który zapewnia najmniejsza ilość pamięci zajętej przez obliczenia częściowe.
Array Based Algorithm Przykład I Trzy wymiary A, B, C, Podkostka 1 = a 0 b 0 c 0, Podkostka 2 = a 1 b 0 c 0, Podkostka 64 = a 3 b 3 c 3, Rozmiar kostki w każdym wymiarze A, B, C jest odpowiednio 40, 400, 4000, Rozmiar podkostki to 10, 100, 1000, odpowiednio, Pełna materializacja składa się z kuboidów: ABC (istnieje), AB, AC, BC, A, B, C, (*).
Array Based Algorithm Przykład I Rożne sposoby numerowania Obliczenie podkostki b 0 c 0 przejście od 1 do 4, Obliczenie podkostki b 1 c 0 przejście od 5 do 8, W ten sposób można obliczyć cały BC tylko jedna podkostka BC jest w pamięci podczas obliczania BC, Obliczajac BC musimy odwiedzić wszystkie (64) podkostki, Obliczenie wszystkich podagregatów: przy obliczaniu b 0 c 0 możemy obliczyć b 0 c 0, a 0 c 0, a 0 b 0.
Array Based Algorithm Przykład I Rożne sposoby numerowania, Potrzebna pamięc: BC = 400 4000 = 1, 6mln AC = 40 4000 = 160000 AB = 40 400 = 16000 Najmniejsza podkostka obliczana jest najdłużej a 0 b 0 jest obliczona po odwiedzeniu 1, 17, 33 i 49, Największa podkostka obliczana jest najkrócej b 0 c 0 jest obliczona po odwiedzeniu 1, 2, 3 i 4.
Array Based Algorithm Przykład I Minimalna potrzebna pamięć do obliczenia agregatów: 40 400(AB) + 40 1000(wiersz AC) + 100 1000(podkostka BC) = 16, 000 + 40, 000 + 100, 000 = 156, 000
Array Based Algorithm Przykład I Inny sposób numerowania Minimalna potrzebna pamięć do obliczenia agregatów: 40 400(AB) + 400 1000(wiersz BC) + 10 1000(podkostka AC) = 16, 000 + 400, 000 + 10, 000 = 426, 000
Array Based Algorithm Przykład I Najgorszy przypadek: 400 4000(BC) + 10 4000(wiersz AC) + 10 100(podkostka AB) = 1600000 + 40, 000 + 1, 000 = 1, 641, 000
Array Based Algorithm Przykład II Pamięć:
Array Based Algorithm Przykład II Pamięć: 1 1 1 1 1 1 1 1 2 2 2 2 4 4 1 1 1 1 1 1 1 1
Array Based Algorithm Przykład II Pamięć: 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 8 8
Array Based Algorithm Przykład II Pamięć: 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 4 4 4 4 2 2 2 2 2 2 2 2
Plan wykładu 1 Optymalizacja w systemach OLAP 2 Operacje złaczenia 3 Indeksy 4 Dane zagregowane 5 Podsumowanie
Podsumowanie Systemy OLAP służa do efektywnego wielowymiarowego przetwarzania ogromnym wolumenów danych, Podstawowe techniki optymalizacji: operacje złaczenia, indeksy, wczesna agregacja danych,...
Plan wykładu Systemy baz i hurtowni danych wprowadzenie do wykładu Modele danych i ewolucja systemów baz danych Projektowanie hurtowni danych i modelowanie wielowymiarowe Proces ekstrakcji, transformacji i ładowania danych (Proces ETL) Systemy OLAP Analiza i eksploracja danych Rozmyte zapytania do baz danych Internet jako baza danych (Dawid Weiss)