Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

Podobne dokumenty
Bazy danych. Plan wykładu. Metody organizacji pliku rekordów. Pojcie indeksu. Wykład 11: Indeksy. Pojcie indeksu - rodzaje indeksów

Bazy danych - BD. Indeksy. Wykład przygotował: Robert Wrembel. BD wykład 7 (1)

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Bazy danych. Andrzej Łachwa, UJ, /15

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Bazy danych. Plan wykładu. Metody organizacji pliku rekordów przypomnienie wiadomości. Pojęcie indeksu. Wykład 11: Indeksy. Język DDL i DML.

Bazy danych. Plan wykładu. Klucz wyszukiwania. Pojcie indeksu. Wykład 8: Indeksy. Pojcie indeksu - rodzaje indeksów

sprowadza się od razu kilka stron!

INDEKSY I SORTOWANIE ZEWNĘTRZNE

Indeksy. Wprowadzenie. Indeksy jednopoziomowe indeks podstawowy indeks zgrupowany indeks wtórny. Indeksy wielopoziomowe

Podstawy Informatyki. Metody dostępu do danych

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Optymalizacja poleceń SQL Metody dostępu do danych

PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych

INDEKSY. Biologiczne Aplikacje Baz Danych. dr inż. Anna Leśniewska

Tadeusz Pankowski

Optymalizacja poleceń SQL Indeksy

Przykładowe B+ drzewo

Indeksy. Schematyczne ujęcie organizacji pamięci i wymiany danych systemu pamiętania.

"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Dyski. Mechanizmy składowania

Bazy danych wykład ósmy Indeksy

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

WPROWADZENIE DO BAZ DANYCH

Indeksy. Rozdział 18. Indeksy. Struktura indeksu. Adres rekordu

Statystyki (1) Optymalizacja poleceń SQL Część 2. Statystyki (2) Statystyki (3) Informacje, opisujące dane i struktury obiektów bazy danych.

PODSTAWY BAZ DANYCH. 7. Metody Implementacji Baz Danych. 2009/ Notatki do wykładu "Podstawy baz danych" 1

Fizyczna struktura bazy danych w SQL Serwerze

Indeksowanie w bazach danych

Tabela wewnętrzna - definicja

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Drzewa poszukiwań binarnych

BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Definicja pliku kratowego

ALGORYTMY I STRUKTURY DANYCH

Struktura drzewa w MySQL. Michał Tyszczenko

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Fizyczna organizacja danych w bazie danych

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna

Haszowanie (adresowanie rozpraszające, mieszające)

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Optymalizacja poleceń SQL

Język SQL, zajęcia nr 1

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Jakub Pilecki Szymon Wojciechowski

Wysokość drzewa Głębokość węzła

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

Sortowanie. Bartman Jacek Algorytmy i struktury

Wprowadzenie do baz danych

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Indeksy w hurtowniach danych

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Technologie baz danych

BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019

Algorytmy i struktury danych

WSTĘP DO INFORMATYKI. Struktury liniowe

Algorytmy i struktury danych

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Indeksy. Indeks typu B drzewo

Transformacja modelu ER do modelu relacyjnego

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Porządek symetryczny: right(x)

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Teoretyczne podstawy informatyki

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Fizyczna struktura bazy danych Indeksy Optymalizacja. Fizyczna struktura bazy danych (c.d.) Tadeusz Pankowski

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Optymalizacja poleceń SQL Statystyki

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

Zad. 1. Systemy Baz Danych przykładowe zadania egzaminacyjne

Wykład 2. Relacyjny model danych

Sortowanie bąbelkowe

Systemy baz danych. mgr inż. Sylwia Glińska

Bazy danych. Plan wykładu. Przetwarzanie zapytań. Etapy przetwarzania zapytania. Translacja zapytań języka SQL do postaci wyrażeń algebry relacji

Wykład 6. Drzewa poszukiwań binarnych (BST)

Autor: Joanna Karwowska

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. zadania

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Teoretyczne podstawy informatyki

060 SQL FIZYCZNA STRUKTURA BAZY DANYCH. Prof. dr hab. Marek Wisła

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Teoretyczne podstawy informatyki

Systemy GIS Tworzenie zapytań w bazach danych

Technologie baz danych

Drzewa wyszukiwań binarnych (BST)

Podstawowe zapytania SELECT (na jednej tabeli)

Baza danych. Baza danych to:

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

AiSD zadanie drugie. Gliwiński Jarosław Marek Kruczyński Konrad Marek Grupa dziekańska I5. 10 kwietnia 2008

Drzewa poszukiwań binarnych

2017/2018 WGGiOS AGH. LibreOffice Base

Transkrypt:

Plan wykładu 2 BAZY DANYCH Wykład 4: Indeksy. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów struktury statyczne struktury dynamiczne Małgorzata Krętowska Wydział Informatyki PB Pojęcie indeksu Klucz wyszukiwania 3 Indeks to struktura danych na dysku umożliwiająca szybkie wyszukiwanie danych w bazie danych na podstawie wartości klucza wyszukiwania jak np. nazwisko osoby. Indeks = skorowidz w książce. W najprostszej postaci wyszukiwanie polega na tym, że mając wartość poszukujemy rekordów, w których ta wartość występuje w danym polu. 4 Klucz wyszukiwania (wartość indeksowana) dla indeksu jest to wybrane pole lub pola rekordu, względem których ma odbywać się wyszukiwanie. Indeks jest to struktura danych składająca się z węzłów, w których są zapisywane rekordy indeksu w następującej postaci: pozycje danych k* określane względem wartości klucza wyszukiwania k tzn sam rekord o kluczu k para (k,w) gdzie k jest kluczem rekordu, a w jest wskaźnikiem do rekordu o tym kluczu para (k,w 1,.., w n ), gdzie k jest kluczem rekordu, a w 1,.., w n są wskaźnikami do rekordów o kluczu k (wymaga zmiennej liczby pól) pozycje indeksu kierujące wyznaczeniem właściwej pozycji danych k* w oparciu o wartość klucza wyszukiwania k (np. para (wartość klucza, wskaźnik do węzła w indeksie)

5 Plik indeksowy Zawartość indeksu jest przechowywana w pliku indeksowym W skład pliku indeksowego wchodzą rekordy indeksu będące pozycjami danych lub pozycjami indeksu. Węzeł odpowiada na ogół stronie dyskowej i zawiera albo pozycje danych albo pozycje indeksu. 6 Rodzaje indeksów Indeks główny lub podstawowy (primary index) założony na atrybucie porządkującym unikalnym Indeks zgrupowany (clustering index) założony na atrybucie porządkującym nieunikalnym Indeks wtórny (secondary index) założony na atrybucie nieporządkującym Podział ze względu na liczbę wskazań do pliku danych: Indeks gęsty (dense) posiada rekord indeksu dla każdego rekordu indeksowanego pliku danych Indeks rzadki (sparse) posiada rekordy tylko dla wybranych rekordów indeksowanego pliku danych 7 Indeks główny (podstawowy) 8 Indeks zgrupowany

9 Indeks zgrupowany z blokami nadmiarowymi 10 Indeks wtórny Złożone klucze wyszukiwania Metody implementacji indeksów 11 12 Pojedyncze klucze wyszukiwania - wyszukiwanie według pojedynczego pola Złożone klucze wyszukiwania - wyszukiwanie według kombinacji większej liczby pól 29,5000 29 Indeksy statyczne 34,1500 34 34,2000 43,3000 <wiek, zarobki> 1500,34 2000,34 Adamski 34 1500 Bakun 29 5000 Molski 34 2000 Wilczak 43 3000 34 43 <wiek> 1500 2000 Indeksy dynamiczne 3000,43 5000,29 Rekordy danych posortowane względem imienia 3000 5000 <zarobki, wiek> <zarobki>

13 Statyczne drzewo ISAM (indexed sequential access method) Wyszukiwanie binarne - (pliki posortowane) porównujemy poszukiwany klucz z kluczem rekordu znajdującym się w środku ciągu i w zależności od wyniku porównania poszukujemy klucza albo w lewej części albo w prawej, stosując rekurencyjnie opisywaną metodę Poszukiwanie binarne łatwiej zastosować jest nie bezpośrednio do pliku rekordów, ale do pliku zawierającego same klucze rekordów k 1 <k 2 <...<k N, gdzie k i jest najmniejszym kluczem na stronie o numerze i. Plik z kluczami stanowi plik indeksowy Po wyznaczeniu najbliższego pasującego klucza wystarczy przejść do strony z rekordami, na której znajduje się rekord o danym kluczu. Jednopoziomowy plik indeksowy k1 k2 kn Plik indeksowy 14 Statyczne drzewo ISAM Strona indeksu jednopoziomowego (węzeł) składa się z pozycji danych <k i, P i >, gdzie k i jest kluczem, a P i jest wskaźnikiem na stronę zawierającą wartości klucza >= od klucza k i. Wskaźnik P 0 stanowi wskaźnik na stronę o wartościach klucza <k 1. Pozycja danych p 0 k 1 p 1 k 2 p 2... k m p m Zasady poszukiwania danego klucza 21 34 56 Strona indeksu k 1 <k 2 <...<k m Strona 1 Strona 2 Strona 3 strona N Plik danych Do strony z wartościami klucza <21 Do strony z 21<=k <34 Do strony z 34<=k <56 Do strony z k >=56 15 Indeks wielopoziomowy (drzewo ISAM) Strona indeksu wielopoziomowego (węzeł) składa się z pozycji indeksu <k i, P i >, gdzie k i jest kluczem, a P i jest wskaźnikiem do węzła wyższego poziomu zawierającego wartości kluczy >= od klucza k i. Wskaźnik P 0 stanowi wskaźnik do węzła wyższego poziomu zawierającego wartości klucza <k 1. 16 Struktura drzewa ISAM Węzły wewnętrzne Pozycja indeksu p 0 k 1 p 1 k 2 p 2... k m p m Strona indeksu k 1 <k 2 <...<k m liście Wskaźniki na węzły wyższego poziomu Strony nadmiarowe Strony główne

17 Problemy Dodawanie i usuwanie rekordów w przypadku indeksu głównego jest to problem złożony, gdyż musimy wstawić rekord na odpowiedniej pozycji w pliku. Wiąże się to z przeniesieniem części rekordów w pliku, a co za tym idzie zmiany wpisu w indeksie, gdyż przesunięcie rekordów powoduje zmiany wartości kluczy w danym bloku. 18 Przykład operacji wstawiania 40 20 33 51 63 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97* Próby rozwiązania problemu: Wykorzystanie nieuporządkowanego pliku przepełnienia Użycie listy jednokierunkowej rekordów przepełnienia dla każdego bloku w pliku danych (przykład indeksu - kolejny slajd) Zadanie Do zadanego drzewa ISAM wstawić wartości 23*, 48*, 41*, 42* 19 Przykład operacji wstawienia 40 20 33 51 63 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97* 23* 48* 41* 42* Struktura stron indeksu i stron głównych jest niezmienna. Gdy nie wystarcza miejsca na stronach głównych, doczepiane są strony nadmiarowe. Duża liczba stron nadmiarowych powoduje wydłużenie wyszukiwania rekordów 20 Podsumowanie drzew ISAM Drzewa ISAM dobrze sprawdzają się do wyszukiwania rekordu na podstawie wartości jego klucza, a także rekordów z zakresu wartości klucza: A<=klucz<=B; A<=klucz, klucz<=b Gdy liczba rekordów w pliku jest mniej więcej stała struktura ISAM jest dobra Niebezpieczeństwo grupowania się kluczy w ciągi na stronach nadmiarowych (rozwiązanie struktury dynamiczne)

Dynamiczne indeksy wielopoziomowe B-drzewo 21 22 B-drzewa B + - drzewa B-drzewo rzędu p: każdy wierzchołek wewnętrzny na postać: <P 1, <K 1, Pr 1 >, P 2, <K 2, Pr 2 >,...,<K q-1, P q-1 >, P q > gdzie q<=p. Każde P i oznacza wskaźnik drzewa - wskaźnik na inny wierzchołek w B-drzewie. Każde Pr i oznacza wskaźnik danych - wskaźnik na rekord, którego wartość pola klucza wyszukiwania jest równa K i (lub blok w pliku zawierający ten rekord) w każdym wierzchołku K 1 <K 2 <...<K q-1 dla wszystkich wartości pola wyszukiwania X w poddrzewie, na które wskazuje wskaźnik P i mamy K i-1 <X<K i, dla 1<i<q oraz K i-1 <X dla i=q Każdy wierzchołek prócz korzeni i liści posiada co najmniej ceil(p/2) wskaźników drzewa Wszystkie liście znajdują się na tym samym poziomie. Liście posiadają taką samą strukturę co wierzchołki wewnętrzne poza tym, że ich wskaźniki drzewa są zerowe B-drzewo B + - drzewo 23 P 1 K 1 Pr 1 P 2 K i-1 Pr i-1 P i K i Pr i K q-1 Pr q-1 P q Wskaźnik danych Wskaźnik danych Wskaźnik danych Wskaźnik danych X<K 1 Ki-1 <X<K i K q-1 <X Z powodu niejednolitosci węzłów dla B drzew operacje INSERT i DELETE są bardziej skomplikowane => B + - drzewa. 24 Wykorzystywane przez większość implementacji dynamicznych indeksów Wyróżniamy wierzchołki wewnętrzne i liście (różne struktury danych) Wymagana zajętość strony indeksu wynosi minimum 50% ( z wyjątkiem korzenia) Zajętość każdej strony liścia wynosi minimum 50%. Wierzchołki liści są zwykle połączone razem, co zapewnia możliwość uzyskiwania uporządkowanego dostępu do rekordów względem pola wyszukiwania B + - drzewo jest wyważone tzn. każdy liść znajduje się na tej samej głębokości

Wierzchołki wewnętrzne Wierzchołki wewnętrzne 25 Struktura wierzchołków wewnętrznych B+ - drzewa rzędu p: Każdy wierzchołek wewnętrzny ma postać <P 1, K 1, P 2,K 2,..., P q-1, K q-1, P q > gdzie q<=p i każde p i jest wskaźnikiem drzewa W każdym wierzchołku wewnętrznym K 1 <K 2 <...<K q-1. Dla wszystkich wartości pola wyszukiwania X w podrzewie, na które wskazuje wskaźnik p i mamy: K i-1 <X<=K i, dla 1<i<q oraz K i-1 <X dla i=q Każdy wierzchołek wewnętrzny posiada najwyżej p wskaźników drzewa Każdy wierzchołek wewnętrzny oprócz korzenia i liści posiada co najmniej ceil(p/2) wskaźników drzewa. Korzeń posiada co najmniej 2 wskaźniki drzewa. Wierzchołek wewnętrzny o q wskaźnikach drzewa, gdzie q<=p posiada q-1 wartości pola wyszukiwania 26 P 1 K 1 P i-1 K i K q-1 P q Wskaźniki drzewa X<=K 1 Ki-1 <X<=K i K q-1 <X Wierzchołki liści Wierzchołki liści 27 Struktura wierzchołków liści B + - drzewa rzędu p: Każdy wierzchołek liścia ma postać: <<K 1, Pr 1 >,<K 2,Pr 2 >,..., <K q-1, Pr q-1 >, P nast > gdzie q<=p i każde Pr i jest wskaźnikiem danych, zaś P nast wskazuje na następny wierzchołek liścia w B + -drzewie. W każdym wierzchołku liścia K 1 <K 2 <.., K q-1, dla q<=p Każde Pr i jest wskaźnikiem danych wskazujących na rekord, którego wartość pola wyszukiwania jest równa k i lub na blok pliku zawierający dany rekord (lub na blok rekordu wskaźników wskazujących na rekordy, których wartością pola wyszukiwania jest K i, jeżeli pole wyszukiwania nie jest kluczem) Każdy wierzchołek liścia posiada co najmniej ceil(p/2) wskaźników drzewa Wszystkie wierzchołki znajdują się na tym samym poziomie 28 K 1 Pr 1 K 2 Pr 2 K i Pr i K q-1 Pr q-1 P nast Wskaźnik danych Wskaźnik danych Wskaźnik na następny wierzchołek liścia w drzewie

Podsumowanie drzew 29 30 Zastosowania indeksów o strukturze drzewiastej wyszukiwanie zakresowe wyszukiwanie równowartościowe sortowanie (order by) wyszukiwanie przy uzgadnianiu wierszy w trakcie złączania tabel Drzewo ISAM - struktura statyczna struktura prostsza niż B + -drzewa modyfikowane są tylko liście wymagane są strony nadmiarowe, mogące pogorszyć czas wykonywania wyszukiwania B + -drzewo - struktura dynamiczna w praktyce wysokość<=3 zakładając, że korzeń drzewa jest zawsze trzymany w buforze RAM, koszt wyszukania pozycji danych rekordu wynosi co najwyżej 3 operacje we/wy Indeks w postaci B + -drzewa CREATE INDEX nazwa_indeksu ON tabela(kolumna); Wykorzystywany dla atrybutów o dużej selektywności Nie przechowuje informacji o wartościach NULL 31 Indeksy złożone 32 Indeks unikalny CREATE INDEX nazwa_indeksu ON tabela (kolumna1, kolumna2, kolumna3); Składają się z większej liczby kolumn kolumn Stosuje się je gdy w zapytaniach występuje kilka kolumn w warunku WHERE Powinno się stosować kolejność kolumn według częstotliwości ich występowania w zapytaniach CREATE UNIXUE INDEX nazwa_indeksu ON tabela (kolumna); Tworzony, żeby zapewnić unikalność wartości indeksowanej kolumnie lub kolumnach.

33 Indeks funkcyjny CREATE INDEX nazwa_indeksu ON tabela (funkcja(kolumna)); Indeks przechowuje wartość funkcji (np. UPPER()) lub wyrażenia zamiast wartości kolumny Wykorzystywany dla atrybutów, które w zapytaniach są często argumentami funkcji Indeksowane wyrażenie nie może zawierać funkcji agregujących 34 Indeks bitmapowy CREATE BITMAP INDEX nazwa_indeksu ON tabela (kolumna); Wykorzystywane dla atrybutów o małej selektywności, np. płeć Przechowuje wartości NULL Rozmiar indeksu ściśle zależny od rozmiaru dziedziny atrybutu indeksu Indeks bitmapowy Indeks bitmapowy - przykład 35 Tablica (liczba kolumn liczba rekordów w tabeli; Liczba wierszy liczba różnych wartości analizowanego atrybutu) Wybrane rekordy są dostarczane do ORACLE jako listy RowID Najlepsze rezultaty uzyskuje się, jeżeli z jedną tabelą łączymy kilka indeksów bitmapowych Źródło: http://www.dba-oracle.com/oracle_tips_bitmapped_indexes.htm 36 Baza danych samochodów (n=20 mln) z dużą liczbą atrybutów o małej selektywności (liczba różnych wartości <100) Select nr_rejestracyjny from samochody where kolor = niebieski and marka = toyota and rok_produkcji = 2002; Uwaga: powyżej 100 różnych wartości atrybutu wielkość indeksu bitmapowego szybko rośnie i szybkość realizacji zapytań gwałtownie maleje.