Krzysztof Dembczyński Instytut Informatyki Zakład Inteligentnych Systemów Wspomagania Decyzji Politechnika Poznańska Technologie Wytwarzania Oprogramowania Semestr zimowy 2005/06
Plan wykładu Ewolucja systemów baz danych Relacyjne systemy baz danych i język SQL Projektowanie baz danych i ochrona danych Optymalizacja i struktury danych I II Modelowanie wielowymiarowe Proces ekstrakcji, transformacji i ładowania danych (Proces ETL)
Plan wykładu 1 Schematy logiczne hurtowni danych 2 3 Optymalizacja w systemach OLAP
Plan wykładu 1 Schematy logiczne hurtowni danych 2 3 Optymalizacja w systemach OLAP
Schematy logiczne hurtowni danych Trzy podstawowe schematy logiczne hurtowni danych: schemat gwieździsty, schemat płatka śniegu, schemat wielokrotnych tabel faktów.
Schematy gwiazdy Schemat gwiazdy: pojedyncza tablica w centrum połaczona z wieloma tablicami wymiarów.
Schemat gwiazdy Podstawowe terminy: Miary, na przykład stopnie, cena, ilość, Miary musza być agregowane, Miary zależa od zbioru wymiarów, np. ocena studenta zależy od studenta, przedmiotu, prowadzacego, wydziału, roku akademickiego itp., Relacja, która odwołuje wymiary do miar nazywana jest relacja faktów (np. Students grades), Informacje na temat wymiarów znajduja się w zbiorze relacji wymiarów (student, rok akademicki, itd.), Każdy wymiar posiada wiele opisujacych atrybutów.
Schemat gwiazdy
Hierarchie wymiarów Dla każdego wymiaru można określić hierarchię atrybutów.
Schemat płatka śniegu Schemat płatka śniegu: rozwinięcie schematu gwiazdy poprzez normalizację relacji wymiarów.
Denormalizacja Denormalizacja Jest to proces odwrotny do normalizacji. Polega na tworzeniu danych nadmiarowych przechowywanych w relacjach, co pozwala podczas wykonywania zapytań zmniejszyć liczbę kosztowych czasowo operacji złaczenia.
Schemat wielokrotnych tablic faktów Schemat wielokrotnych tablic faktów: wiele tablic faktów dzieli relacje wymiarów. Takie schematy pojawiaja się przy projektowaniu hurtowni danych dla dużych i złożonych problemów. Z punktu widzenia sukcesu projektu, dobrze jest zaczać od prostego modelu logicznego hurtowni danych.
Modelowanie koncepcyjne hurtowni danych Cztery kroki modelowania koncepcyjnego hurtowni danych: Wybór procesu biznesowego do zamodelowania, Zdefiniowanie ziarna (rozdzielczości) procesu biznesowego, Wybór wymiarów znajdujacych się w każdej krotce tablicy faktów, Identyfikacja miar, które wypełnia każda krotkę tablicy faktów.
Zadanie Zadanie Dla sieci sklepów zaprojektuj hurtownię danych zorientowana na analizę sprzedaży. Zaproponuj relację faktów i wymiarów, Zaproponuj schemat gwieździsty, Zaproponuj hierarchie wymiarów.
Zadanie
Zadanie
Schemat gwieździsty
Hierarchie wymiarów
Zapytania do hurtowni danych Można wykorzystać standardowy SQL. Group by SELECT Surname, AVG(Grade) FROM Students_grades G, Student S WHERE G.Student = S.ID GROUP BY Name; Odpowiedź Surname AVG(Grade) Inmon 4.8 Kimball 4.7 Gates 4.0 Todman 4.5
Zapytanie do hurtowni danych Group by SELECT Academic_year, Name, AVG(Grade) FROM Students_grades G, Academic_year A, Professor P WHERE G.Professor = P.ID and G.Academic_year = A.ID GROUP BY Academic_year, Name; Odpowiedź Academic_year Surname AVG(Grade) 2001/2 Stefanowski 4.2 2002/3 Stefanowski 4.0 2003/4 Stefanowski 3.9 2001/2 Słowiński 4.1 2002/3 Słowiński 3.8 2003/4 Słowiński 3.6 2003/4 Dembczyński 4.8
Zapytania do hurtowni danych Alternatywa dla zapytań relacyjnych sa zapytania wielowymiarowe.
Wielowymiarowy model danych: Sprzedaż produktów RTV/AGD (Sales):
Takie same tabele dla Chicago, Nowego Jorku i Toronto:
Kostka wielowymiarowa: Możliwa jest większa liczba wymiarów.
Różne poziomy agregacji: Sales(time, product, *) Sales(time, *, *); Sales(*, *, *)
Zapytania do hurtowni danych Roll up sumowanie danych wzdłuż hierarchii wymiaru (sprzedaż dla miast sprzedaż dla województw) Drill down w druga stronę Slice and dice selekcja i projekcja wymiarów Pivot zmiana wyświetlanych wymiarów Inne np. tworzenie rankingów
Plan wykładu 1 Schematy logiczne hurtowni danych 2 3 Optymalizacja w systemach OLAP
Serwery OLAP Serwey OLAP dostarczaja efektywne wielowymiarowe przetwarzanie ogromnych wolumenów danych.
W systemach OLAP razem z danymi wielowymiarowymi oprócz wartości miary składowane sa również agregaty.
Rodzaje operatorów agregacji Rodzaje operatorów agregacji: rozproszone: count(), sum(), max(), min() algebraiczne: ave(), std_dev() holistyczne: median(), mode(), rank() Można też obliczać: liczba brakujacych wartości, liczba niebrakujacych wartości, itp. Agregacja może przebiegać z wykorzystaniem hierarchi. Agregacje warunkowe.
Serwery OLAP: ROLAP (Relacyjne), MOLAP (Wielowymiarowe), HOLAP (Hybrydowe).
Serwery ROLAP Serwery ROLAP bazuja na relacyjnym modelu danych. Powinny zapewniać optymalizację: denormalizacji relacji (denormalization), tworzenia podsumowań (summarization), tworzenie podziału (partitioning). Rozszerzenia języka SQL: SQL3 [...] GROUP BY ROLLUP (time, region, dept) [...] [...] GROUP BY CUBE (time, region, dept) [...]
Serwery ROLAP Zalety serwerów ROLAP: Wady: Skalowalność ze względu na liczbę wymiarów, Skalowalność ze względu na rozmiar danych, Rzadkość danych nie stanowi problemu, Dobrze rozpoznana i dojrzała technologia. Gorsza wydajność w porównaniu z systemami MOLAP, Potrzeba tworzenia indeksów oraz wykorzystania innych technik optymalizacji.
Serwery MOLAP Bazuja na wielowymiarowym modelu danych. Technologia macierzy rzadkich: wyszukiwanie i usuwanie pustych komórek tabeli, oraz kompresja pozostałej informacji. Zapamiętywanie zagregowanych podkostek. Brak standardów modelu wielowymiarowego. Język MDX (Multidimensional Expressions): MDX SELECT [Time].[1997],[Time].[1998] ON COLUMNS, [Measures].[Sales],[Measures].[Cost] ON ROWS FROM Warehouse WHERE ([Store].[All Stores].[USA])
Serwery Molap Zalety serwerów OLAP: Wady: Bardzo wydajny dostęp do danych poprzez bezpośrednie adresowanie, Szybkie odpowiedzi na zapytania, Bardzo często zawieraja obliczone agregaty pośrednie. Problemy ze skalowalnościa przy dużej liczbie wymiarów, Wymagaja specyficznego systemu zapisu (młoda technologia), Nie sa wydajne w przechowywaniu rzadkich danych.
Serwery Molap Przykład Model składa się z wymiarów: klient, produkt, sklep oraz dzień; w przypadku 100 000 klientów, 10 000 produktów, 1 000 sklepów oraz 1 000 dni kostka danych zawiera 1 000 000 000 000 000 komórek! Wiele komórek jest pustych: nie istnieja wszystkie kombinacje klientów, produktów, sklepów oraz dnia.
Serwery HOLAP Systemy hybrydowe wspierajace dwa modele danych. Serwer parametryzowany przez użytkownika/administratora systemu.
OLAP w Excelu Excel wspiera zewnętrzne serwery OLAP. Wtyczki do Excela dostraczane przez IBM a, Oracle i SAS. Dobrze znany interfejs tabel przestawnych w Excelu:
OLAP w Excelu
Plan wykładu 1 Schematy logiczne hurtowni danych 2 3 Optymalizacja w systemach OLAP
Optymalizacja w systemach OLAP Operacje złaczenia, Indeksy, Dane zagregowane, Wykorzystanie danych zagregowanych, Przetwarzanie zapytań.
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. Algorytmy operacji złaczania: Nested Loop Join, Merge join, Hash Join. Dwa źródła złożoności: operacje I/O oraz operacje obliczeniowe (procesora).
Indeksy Struktura indeksów Zasada indeksów: mapowanie wartości atrybutu(ów) rekordów w celu szybkiego dostępu asocjacyjnego. Indeksy w hurtowniach danych, m.in.: Odwrócona lista, Indeks bitmapowy, Indeks segmentowe, Indeks projekcji, Indeks połaczeniowy.
Odwrócona lista
Przykład zapytania 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, czyli 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.
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
Indeks bitmapowy na atrybucie miasto Przykładowa relacja 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
Indeks bitmapowy na atrybucie samochód Przykładowa relacja 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 Forda? Ilu klientów posiada Hondę?
Indeks segmentowy 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 + 2a 1 +... + 2 n a n. Każdy atrybut a i może być reprezentowany jako indeks bitmapowy. Zbiór indeksów bitmapowych nałóż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 bitmapowych? Obliczanie sumy: Ilość 5 Indeks segmentowy: 13 B4: 01000 2 B3: 11011 6 B2: 00111 7 B1: 11001 Suma: 33 Zliczenie jedynek: B4: 1 B3: 4 B2: 3 B1: 3 Zliczenie sumy: 1 2 3 + 4 2 2 + 3 2 1 + 3 2 0 = 8 + 16 + 6 + 3 = 33.
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.
Indeks połaczeniowy Przechowuje informacje na temat połaczeń z inna relacja
Indeks połaczeniowy Przechowuje informacje na temat połaczeń z inna relacja
Dane zagregowane Możliwe agregacje przedstawiane sa często jako krata kuboidów (ang. Cuboid) dodany wymiar dostawca.
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) (*)
Dane zagregowane Trzy strategie: wszystko, nic, część. Materializowanie hierarchii wymiarów. 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 kuboidów 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.
Optymalizacja w systemach OLAP 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.
Optymalizacja w systemach OLAP 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 liczbę rewizyt.
Array Based Algorithm 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 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.
Algorytm: Array Based Algorithm (przykład) 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.
Algorytm: Array Based Algorithm (przykład) Minimalna potrzebna pamięć do obliczenia agregatów: 40 400(AB) + 10 4000(wiersz AC) + 100 1000(podkostka BC) = 16, 000 + 40, 000 + 100, 000 = 156, 000
Algorytm: Array Based Algorithm (przykład) Inny sposób numerowania Minimalna potrzebna pamięć do obliczenia agregatów: 400 4000(BC) + 10 4000(wiersz AC) + 10 100(podkostka AB) = 1600000 + 40, 000 + 1, 000 = 1, 641, 000
Algorytm: Array Based Algorithm (przykład II) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Pamięć:
Algorytm: Array Based Algorithm (przykład II) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Pamięć: 1 1 1 1 1 1 1 1 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 4 1 1 1 1 1 1 1 1
Algorytm: Array Based Algorithm (przykład II) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Pamięć: 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Algorytm: Array Based Algorithm (przykład II) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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
Perspektywy i zmaterializowane perspektywy Perspektywa to relacja wywiedziona z podstawowych relacji zapisanych w bazie danych. Zmaterializowane perspektywa to perspektywa zapisana w bazie danych, na która można również nałożyć struktury indeksowe. Perspektywa może zawierać podagregaty.
Wykorzystanie danych zagregowanych Wykorzystanie perspektyw i zapamiętanych odpowiedzi na poprzednie zapytania do obliczenia odpowiedzi na nowe, oraz określenie, które odpowiedzi warto zachować, sa tematami prac badawczych. Systemy komercyjne wykorzystuja mechanizm przepisywania zapytań (query re-write): zapytanie odwołujace się do tabel bazowych jest przepisywane do zapytania, które wykorzystuje zmaterializowane perspektywy lub zapamiętane odpowiedzi na poprzednie zapytania. Dopasowanie dokładne i niedokładne. Nie dla wszystkich klas zapytań istnieja metody dopasowywania.
Wykorzystanie danych zagregowanych Przykładowa perspektywa V SELECT p.nazwa_marki, p.marka_wprowadzona, sum(s.cena) FROM Sprzedaz s, Produkt p WHERE S.produkt = p.klucz AND p.marka_wprowadzona > 1990 GROUP BY p.nazwa_marki, p.marka_wprowadzona; Perspektywa składa się z: złaczenia tablicy faktów z tablicami wymiarów, grupowania według atrybutów wymiaru, agregacji miar liczbowych w tablicy faktów.
Wykorzystanie danych zagregowanych Przykładowe zapytanie SELECT p.nazwa_marki, p.marka_wprowadzona, sum(s.cena) FROM Sprzedaz s, Produkt p WHERE S.produkt = p.klucz AND p.marka_wprowadzona > 1991 GROUP BY p.nazwa_marki, p.marka_wprowadzona; Odpowiedź na zapytanie jest otrzymywana poprzez wybór krotek perspektywy V, dla których p.marka_wprowadzona > 1991.
Wykorzystanie danych zagregowanych Przepisane zapytanie SELECT nazwa_marki, marka_wprowadzona, cena FROM V WHERE marka_wprowadzona > 1991;
Wykorzystanie danych zagregowanych Pomiędzy powyższym zapytaniem a perspektywa zachodzi dokładne dopasowanie: każda kolumna projekcji z zapytania jest również obecna w perspektywie, zgadzaja się ze soba funkcje agregacji na każdej mierze, każdy warunek filtrowania w zapytaniu implikuje odpowiedni warunek w perspektywie, atrybuty obecne w tych warunkach zapytania, które sa ściśle mocniejsze niż warunki w perspektywie sa również obecne w perspektywie, a więc moga być użyte do wzmocnienia tych warunków.
Wykorzystanie danych zagregowanych Przykładowe zapytanie SELECT p.nazwa_marki, sum(s.cena) FROM Sprzedaz s, Produkt p WHERE S.produkt = p.klucz AND p.marka_wprowadzona > 1995 GROUP BY p.nazwa_marki; Nie występuje tutaj dokładne dopasowanie, jednak zapytanie może być obliczone na podstawie perspektywy V poprzez dodatkowe agregacje, ponieważ grupowanie w zapytaniu jest ogólniejsze, a warunek mocniejszy.
Wykorzystanie danych zagregowanych Przykład przepisania zapytania SELECT nazwa_marki,sum(cena) FROM V WHERE marka_wprowadzona > 1995 GROUP BY nazwa_marki;
Wykorzystanie danych zagregowanych Przykładowa perspektywa P SELECT p.nazwa_marki, sum(s.cena) FROM Sprzedaz s, Produkt p WHERE S.produkt = p.klucz GROUP BY p.nazwa_marki; Przykładowe zapytanie SELECT sum(s.cena) FROM Sprzedaz s, Produkt p WHERE S.produkt = p.klucz AND p.nazwa_marki = Produkt A ; Przepisane zapytanie SELECT cena FROM P WHERE nazwa_marki = Produkt A ;
Przetwarzanie zapytań Przekształcanie zapytań na formę równoważna, jednak mniej kosztowna obliczeniowo, a także planowanie obliczeń w sposób pozwalajacy na minimalizację kosztu obliczania odpowiedzi to jedne z klasycznych problemów zwiazanych z bazami danych.
Przetwarzanie zapytań Hurtownie danych wprowadzaja nowe dodatkowe aspekty zwiazane z przetwarzaniem wielkich zbiorów danych, ponieważ można wiele zyskać na zmiejszeniu ilości odczytywanych danych. Dodatkowych technik wymagaja zapytania grupujace i obliczanie agregacji. Schematy hurtowni danych sa proste (zwykle maja postać gwiazdy lub płatka śniegu), co pozwala na specializowane metody optymalizacji.
Przetwarzanie zapytań Dwie typowe techniki przetwarzania zapytań w hurtowniach danych: przeplatanie grupowania i złaczania, optymalizacja podzapytań zagnieżdżonych.
Przeplatanie grupowania i złaczania Typowe zapytanie do hurtowni danych: złaczenie tablicy faktów z wymiarami, warunki filtrowania na wymiarach, grupowania i agregacje. Typowe przetwarzanie zapytania: złaczenie, filtracja, grupowanie i agregacja.
Przeplatanie grupowania i złaczania Wcześniejsze grupowanie i agregacja może zmniejszyć wielkość wyników pośrednich. Przegladanie danych wykonywane podczas złaczenia może być wykorzystane przy grupowaniu.
Przeplatanie grupowania i złaczania Przykładowe zapytanie SELECT p.rok_wprowadzenia, sum(s.cena) FROM Sprzedaz s, Sklep sk, Produkt p WHERE s.produkt = p.klucz AND s.sklep = sk.klucz AND s.stan = Kalifornia AND s.rok = 1996 GROUP BY p.rok_wprowadzenia;
Przeplatanie grupowania i złaczania Tradycyjna strategia obliczania zapytania polega na: złaczenie tablicy faktów Sprzedaz z tablicami wymiarów Sklep i Produkt, przefiltrowanie rekordów sprzedaży za względu na stan Kalifornia i rok 1996, grupowanie wyników za pomoca wartości p.rok_wprowadzenia. Strategia ulepszona polega na: agregacja po atrybucie p.klucz podczas złaczania tablic Produkt i Sprzedaż, końcowa grupowanie po atrybucie p.rok_wprowadzenia może być przeprowadzone na mniejszej relacji pośredniej.
Optymalizacja zapytań zagnieżdżonych Zapytania do hurtowni danych moga zawierać porównania wykorzystujace agregacje. Zapytania takie moga zostać zrealizowane za pomoca zapytań zagnieżdżonych w SQL u. Najprostszy sposób optymalizacji polega na przekształceniu zapytań zagnieżdżonych na pojedyncze zapytania blokowe, które sa przetwarzane znacznie efektywniej. W przeciwnym przypadku możliwa jest optymalizacja polegajaca na przesuwaniu warunków i właściwym uporzadkowaniu podzapytań.
Optymalizacja zapytań zagnieżdżonych Przykładowe zapytanie Znajdź wszystkich pracowników w wieku poniżej 35 lat, zarabiajacych powyżej średniej zarobków w dziale, w którym pracuja.
Optymalizacja zapytań zagnieżdżonych Najprostszy sposób obliczenia: sprawdzenie, czy pracownik ma mniej niż 35 lat, znalezienie działu, w którym pracuje, obliczenie średniej płacy w tym dziale, sprawdzenie, czy zarobki pracownika sa wyższe niż średnia. Średnie zarobki w poszczególnych działach obliczane sa wielokrotnie!!!
Optymalizacja zapytań zagnieżdżonych Lepszy sposób: policz średnie zarobki dla każdego działu, sprawdź, czy pracownik ma mniej niż 35 lat, jeżeli tak, to sprawdź, czy jego zarobki sa większe od średniej. Moga istnieć działy zatrudniajace tylko starszych pracowników.
Optymalizacja zapytań zagnieżdżonych Możliwa poprawa: sprawdź, czy w dziale pracuja pracownicy w wieku poniżej 35 lat.
Optymalizacja w systemach OLAP Co wybrać ROLAP, MOLAP czy HOLAP?
Plan wykładu Ewolucja systemów baz danych Relacyjne systemy baz danych i język SQL Projektowanie baz danych i ochrona danych Optymalizacja i struktury danych I II Modelowanie wielowymiarowe Proces ekstrakcji, transformacji i ładowania danych (Proces ETL)