Indeksy w hurtowniach danych Hurtownie danych 2011 Łukasz Idkowiak Tomasz Kamiński
Bibliografia Zbyszko Królikowski, Hurtownie danych. Logiczne i fizyczne struktury danych, Wydawnictwo Politechniki Poznańskiej, 2007 Indeksy w hurtowniach danych 2
Plan prezentacji Przetwarzanie analityczne w hurtowniach danych Indeksy w postaci B-drzewa Indeksy bitmapowe Kompresja indeksu bitmapowego Indeksy połączeniowe Zaawansowane przetwarzanie analityczne w hurtowniach danych Indeksy sygnaturowe Indeksy w hurtowniach danych 3
Przetwarzanie analityczne w hurtowniach danych Złożoność zapytań analitycznych i olbrzymie rozmiary danych przez nie adresowanych sprawiają, że czas ich wykonania może sięgać dziesiątek minut, a nawet godzin Jak efektywnie wykonywać zapytania analityczne? Właściwe opracowanie projektu fizycznych struktur hurtowni danych, a w szczególności struktur dostępowych - indeksów Indeksy w hurtowniach danych 4
Ocena indeksu Zysk czasowy ze stosowania indeksu Rozmiar indeksu Łatwość utrzymania struktury indeksu Indeksy w hurtowniach danych 5
B-drzewa Indeksy w hurtowniach danych 6
Indeksy w postaci B-drzewa przykład Wysokość drzewa K Kraków Kraków K > Kraków Korzeń Gniezno Przemyśl Wierzchołki wewnętrzne Warszawa K Gniezno K > Gniezno K Przemyśl Przemyśl < K Warszawa K > Warszawa Buk Gniezno Kraków Olsztyn Przemyśl Radom Warszawa Zabrze Liście Fizyczny adres rekordu na dysku Adres wierzchołka Indeksy w hurtowniach danych 7
B-drzewo - budowa Bloki tworzą strukturę drzewiastą (3 warstwy: korzeń, wierzchołki wewnętrzne oraz liście). Drzewo zrównoważone (ang. balanced) długość dowolnej ścieżki od korzenia do dowolnego liścia jest zawsze taka sama. Każdy wierzchołek nadrzędny wskazuje na podrzędny. Indeksy w hurtowniach danych 8
Rząd drzewa p Maksymalna liczba wskazań do wierzch. podrzędnych z wierzch. nadrzędnych Każdy blok indeksu zawiera maksymalnie p-1 wartości klucza oraz p wskaźników na kolejne bloki lub adresy rekordów (właściwość wykorzystywana przy wyznaczaniu rzędu drzewa) Indeksy w hurtowniach danych 9
B-drzewa - charakterystyka Efektywne operacje wyszukiwania (dana wartość klucza lub zakres), wstawiania i usuwania rekordów. Efektywne dla relacji wymiarów (wysoka selektywność) Nie przydatne dla relacji faktów (duże rozmiary, wysokie koszty przechowywania i utrzymywania) Indeksy w hurtowniach danych 10
Indeks bitmapowy Indeksy w hurtowniach danych 11
Mapa i indeks bitmapowy Mapa bitowa dla wartości w atrybutu A relacji R jest tablicą, której każda komórka przechowuje pojedynczy bit. Każdy bit odpowiada jednej krotce relacji R liczba bitów mapy = liczba krotek relacji R Dla mapy A = w bit n przyjmuje wartość 1, jeżeli atrybut A krotki n przyjmuje wartość w liczba map atrybutu A = liczba różnych wartości atrybutu A krotność (cardinality) Mapę bitową określa się jako gęstą (dense), jeżeli stosunek liczby 1 do liczby 0 w mapie jest duży. W przeciwnym przypadku mapę określa się jako rzadką (sparse). Indeks bitmapowy to zbiór map bitowych dla każdej wartości danego atrybutu relacji Indeksy w hurtowniach danych 12
Indeks bitmapowy - przykład Indeksy w hurtowniach danych 13
Indeks bitmapowy w postaci B-drzewa Indeksy w hurtowniach danych 14
Indeks bitmapowy zysk czasowy SELECT COUNT(*) FROM Sprzedaż WHERE Marka IN ('Audi', 'Ford') AND Typ = 'sport' AND Płeć = K' Indeksy w hurtowniach danych 15
Indeks bitmapowy - rozmiar Zależny od krotności Przykład Liczba rekordów = 1 000 000 Rozmiar indeksu B-drzewo 4MB Krotność = 4 Rozmiar indeksu: 4 x (1 000 000 / 8) = 4 x 124 kb = 500kB Krotność = 64 Rozmiar indeksu: 64 x (1 000 000 / 8) = 64 x 124 kb = 8MB Indeksy w hurtowniach danych 16
Kompresja indeksów bitmapowych Liczba 0 w mapach bitowych jest duża w porównaniu do liczby 1 Optymalizacja współczynnika kompresji oraz czasu dekompresji Przechowywanie 0 lub 1 i liczby jego kolejnych wystąpień Indeksy w hurtowniach danych 17
Kompresja indeksów bitmapowych Kodowanie run-length jednorodnego ciągu bitów o wartości w (0 lub 1) i długości m [w m] Przykład 0000000 1111111111 000 [07] [110] [03] Podział mapy bitowej na słowa o długości n bitów Specjalizowane metody BBC (Byte-aligned Bitmap Code) słowa 8 bitowe WAH (Word-Aligned Hybrid) słowa 31 bitowe Indeksy w hurtowniach danych 18
Kompresja BBC i WAH Wypełnienie słowo złożone z samych 0 lub 1, podlega kompresji Dopełnienie - słowo złożone z 0 i 1 nie podlega kompresji Format skompresowanego słowa bit pierwszy 1 wypełnienie 0 dopełnienie bit drugi wartość wypełnienia ( 0 lub 1 ) kolejne bity długość wypełnieni a (liczba jednorodnych 0 lub 1 ) Indeksy w hurtowniach danych 19
Indeks bitmapowy koszt utrzymania Wstawienie rekordu Zwiększenie długości mapy Opcjonalne zbudowanie nowej mapy Usuwanie rekordu Zmniejszenie długości mapy Opcjonalne usunięcie mapy Modyfikowanie rekordu Operacje na 2 mapach Kosztowne, ale akceptowalne w hurtowniach danych Indeksy w hurtowniach danych 20
Indeks bitmapowy mapa istniejących krotek SELECT COUNT(*) FROM Sprzedaż WHERE Marka!= 'Ford' Indeksy w hurtowniach danych 21
Odwzorowanie w adres fizyczny RID, ROWID (row identifier) numer strony na dysku pozycja na stronie - szczelina Indeksy w hurtowniach danych 22
Indeks bitmapowy podsumowanie Zapytania z dużą ilością predykatów warunkowych oraz zapytania z funkcją COUNT Wykonywanie operacji na indeksach a nie na samych krotkach Efektywne przetwarzanie map bitowych (AND, OR, NOT) - procesory 64-bitowe Składowanie w RAM Mała efektywność poszukiwania wartości z zadanego zakresu Indeksy w hurtowniach danych 23
Indeks połączeniowy Indeks połączeniowy (join index) łączy ze sobą krotki z różnych relacji mające tę samą wartość atrybutu połączeniowego Indeksy w hurtowniach danych 24
Bitmapowe indeksy połączeniowe Struktura B-drzewa z mapami bitowymi w liściach opisujące połączone rekordy Zbiór bitmap Indeksy w hurtowniach danych 25
Zaawansowane przetwarzanie analityczne w hurtowniach danych Problemy zaawansowanego przetwarzania analitycznego w hurtowniach danych Indeksy w hurtowniach danych 26
Problemy zaawansowanego przetwarzania analitycznego w hurtowniach danych W modelu OLAP to użytkownik steruje analizą danych Zbyt szczegółowy poziom abstrakcji do bardziej ogólnych zapytań! Niemożność automatyzacji procesu analizy Indeksy w hurtowniach danych 27
Problemy zaawansowanego przetwarzania analitycznego w hurtowniach danych Odpowiedzią jest technologia eksploracji danych (ang. data mining), czyli: Proces odkrywania wiedzy w postaci nowych, użytecznych, poprawnych i zrozumiałych wzorców w bardzo dużych wolumenach danych. Najczęściej wykorzystywany model wiedzy: reguły asocjacyjne mleko ^ płatki kakao Indeksy w hurtowniach danych 28
Eksploracja danych Liczba odkrytych wzorców może być bardzo duża najczęściej zapisywane są w osobnej relacji/bazie danych Wzorce te są szczegółowo analizowane przez użytkowników za pomocą zapytań operujących na zbiorach Zapytania te są słabo wspierane przez systemy zarządzania relacyjnymi bazami danych! Indeksy w hurtowniach danych 29
Zapytania operujące na zbiorach Dane są Baza D transakcji T q skończony zbiór elementów Definiujemy cztery typy zapytań operujących na zbiorach Zapytanie równościowe Zapytanie o nadzbiory Zapytanie o podzbiory Zapytanie przybliżone Zapytania uogólnione wykorzystują zdefiniowane w hurtowni danych hierarchie elementów Indeksy w hurtowniach danych 30
Zapytanie równościowe Zapytanie zwracające następujący zbiór identyfikatorów transakcji: znajduje wszystkie reguły, które zawierają podany zbiór elementów, np.: Wyświetl reguły, których ciało stanowią mleko i kefir Indeksy w hurtowniach danych 31
Zapytanie o nadzbiory Zapytanie zwracające następujący zbiór identyfikatorów transakcji: znajduje wszystkie reguły, których ciało zawiera się w zadanym zbiorze elementów, np.: Wyświetl klientów, którzy w ramach jednej transakcji kupili mleko, płatki i kawę Indeksy w hurtowniach danych 32
Zapytanie o podzbiory Zapytanie zwracające następujący zbiór identyfikatorów transakcji: znajduje wszystkie transakcje, które zawierają podany zbiór elementów, np.: Wyświetl wszystkie reguły, w których ciele znajdują się jedynie napoje Indeksy w hurtowniach danych 33
Zapytanie przybliżone Zapytanie zwracające następujący zbiór identyfikatorów transakcji: gdzie: ε - próg podobieństwa sim(t,q) wartość podobieństwa między zbiorami znajduje wszystkie transakcje, których podobieństwo do zbioru q przekracza próg ε, np.: Wyświetl klientów, którzy w ramach jednej transakcji zakupili koszyk towarów, jak chleb, mleko, miód lub podobny. Indeksy w hurtowniach danych 34
Brak wsparcia ze strony DBMS! Powyższe rodzaje zapytań nie są efektywnie wspierane przez istniejące systemy zarządzania bazami danych Przykład odczytanie z tabelki Zakupy(id_transakcji, produkt) identyfikatory transakcji, zawierających produkty mleko, kefir, jajka Zapytanie wykorzystujące wielokrotne połączenie zwrotne relacji: SELECT DISTINCT A.id_transakcji FROM Zakupy A, Zakupy B, Zakupy C WHERE A.id_transakcji = B.id_transakcji AND B.id_transakcji = C.id_transakcji AND A.produkt = mleko AND B.produkt = kefir AND C.produkt = jajka ; Zapytanie wykorzystujące grupowanie: SELECT id_transakcji FROM Zakupy WHERE produkt IN ( mleko, kefir, jajka ) GROUP BY id_transakcji HAVING COUNT(*) = 3; Indeksy w hurtowniach danych 35
Zaawansowane przetwarzanie analityczne w hurtowniach danych Struktury indeksowe wspierające zaawansowane przetwarzanie analityczne Indeksy w hurtowniach danych 36
Struktury indeksowe wspierające zaawansowane przetwarzanie analityczne Indeksy sygnaturowe Plik sygnaturowy S-drzewa Grupowy indeks bitmapowy Ograniczony indeks bitmapowy Haszowy grupowy indeks bitmapowy Indeksy w hurtowniach danych 37
Struktury indeksowe wspierające zaawansowane przetwarzanie analityczne, c.d. Wyszukiwanie i analiza danych wielowymiarowych Indeksy hierarchiczne K-d-drzewa Drzewa ćwiartek R-drzewa Pozostałe struktury indeksowe RD-drzewa Odwrócone RD-drzewa Pliki odwrócone Hierarchiczny indeks bitmapowy Indeksy w hurtowniach danych 38
Zaawansowane przetwarzanie analityczne w hurtowniach danych Indeksy sygnaturowe Indeksy w hurtowniach danych 39
Indeksy sygnaturowe Podstawowa cecha sygnaturowa reprezentacja zbiorów Sygnatura elementu Sygnatura zbioru A Waga sygnatury Przykład: Długość sygnatury: n = 4 Liczba ustawionych bitów 1 : k = 2 Indeksy w hurtowniach danych 40
Sygnatury - przykład Indeksy w hurtowniach danych 41
Sygnatury Transformacja zbioru elementów w sygnaturę nie jest wzajemnie jednoznaczna Fałszywe trafienia (ang. false drop) Zbyt mała liczba 1 mniejsza liczba odwzorowywanych elementów Zbyt duża wartość k klucze są w większości wypełnione jedynkami, przez co więcej kluczy wymaga weryfikacji Indeksy w hurtowniach danych 42
Plik sygnaturowy Plik sygnaturowy sekwencyjny plik rekordów postaci [sig(s), ref(s)] sig(s) sygnatura zbioru S ref(s) wskaźnik do zbioru S Wykorzystanie pliku sygnaturowego 1. utworzenie sygnatury zapytania 2. sekwencyjny odczyt pliku 3. sprawdzenie odpowiedniej relacji zawierania na poziomie sygnatur 4. odczyt z hurtowni lub bazy danych znalezionych zbiorów 5. weryfikacja fałszywych trafień Indeksy w hurtowniach danych 43
Plik sygnaturowy - przykład Indeksy w hurtowniach danych 44
Grupowy indeks bitmapowy Wariant pliku sygnaturowego Idea utworzenie binarnej reprezentacji indeksowanego zbioru i wykorzystaniu zbiorów spełniających podane kryteria Klucz indeksu, reprezentujący dany zbiór to wektor N bitów, gdzie N całkowita liczba różnych elementów k-ty bit jest ustawiony na 1, jeśli zbiór zawiera k-ty element Przykład na rysunku informacje o transakcjach i odpowiadający im indeks grupowy Indeksy w hurtowniach danych 45
Grupowy indeks bitmapowy przykład Indeksy w hurtowniach danych 46
Grupowy indeks bitmapowy cechy Podstawowa wada rozmiar klucza zależy od liczby różnych elementów Nie nadaje się do wspomagania wykonywania zapytań uogólnionych, operujących na wyższym poziomie generalizacji Czasem jednak stanowi najlepsze rozwiązanie dla aplikacji z niewielką i stałą liczbą różnych elementów Indeksy w hurtowniach danych 47
Ograniczony grupowy indeks bitmapowy Zmodyfikowana postać grupowego indeksu bitmapowego W trakcie przeszukiwania bierze się pod uwagę tylko aktualnie używany fragment indeksu W celu uniknięcia przetwarzania niepotrzebnych fragmentów indeksu ograniczamy go tylko do tych fragmentów, które są niepuste w kluczu wyszukiwania, tylko te fragmenty są ładowane do pamięci i przetwarzane Indeksy w hurtowniach danych 48
Ograniczony grupowy indeks bitmapowy - cechy Zaleta redukcja rozmiaru indeksu, dzięki czemu do pamięci można wczytać więcej kluczy indeksowych Wada indeks musi być rekonstruowany podczas każdego nowego zapytania Indeksy w hurtowniach danych 49
Haszowy grupowy indeks bitmapowy Cel: wyeliminowanie wad związanych ze zmienną długością klucza indeksowego w grupowym indeksie bitmapowym Klucz: stały rozmiar n bitów, wartość funkcji haszowej dla elementu x Indeksy w hurtowniach danych 50
Haszowy grupowy indeks bitmapowy Wyszukiwanie przebiega w dwóch krokach: Filtrowanie Weryfikacja Indeksy w hurtowniach danych 51
Haszowy grupowy indeks bitmapowy przykład hurtowni danych Indeksy w hurtowniach danych 52
Haszowy grupowy indeks bitmapowy przykład wyszukiwania Indeksy w hurtowniach danych 53
Dziękujemy!!! Indeksy w hurtowniach danych 54