Przykładowe B+ drzewo

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

Tadeusz Pankowski

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

Definicja pliku kratowego

Bazy danych. Andrzej Łachwa, UJ, /15

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

Porządek symetryczny: right(x)

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

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

Podstawy Informatyki. Metody dostępu do danych

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

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

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

R-drzewa. Realizowane funkcje: Struktura węzłów R-drzewa

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:

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ

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

Zazwyczaj rozmiar bloku jest większy od rozmiaru rekordu, tak więc. ich efektywna lokalizacja kiedy tylko zachodzi taka potrzeba.

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

Sortowanie bąbelkowe

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

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

PRZYSPIESZENIE KNN. Ulepszone metody indeksowania przestrzeni danych: R-drzewo, R*-drzewo, SS-drzewo, SR-drzewo.

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

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

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

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

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

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

Podstawy Informatyki. Wykład 6. Struktury danych

Algorytmy i struktury danych

PLAN WYKŁADU BAZY DANYCH HIERARCHIA MECHANIZMÓW SKŁADOWANIA PRZECHOWYWANIA BAZ DANYCH

Programowanie w VB Proste algorytmy sortowania

Drzewa poszukiwań binarnych

Podstawy Informatyki Metody dostępu do danych

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

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

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

PODSTAWY INFORMATYKI wykład 6.

Algorytmy i struktury danych

Bazy danych wykład ósmy Indeksy

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

sprowadza się od razu kilka stron!

Algorytmy i struktury danych. wykład 5

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

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

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

WPROWADZENIE DO BAZ DANYCH

Algorytmy i Struktury Danych

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

System plików przykłady. implementacji

Co to są drzewa decyzji

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

Drzewa czerwono-czarne.

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Dynamiczne struktury danych

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

Haszowanie (adresowanie rozpraszające, mieszające)

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

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

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

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

Sortowanie. Bartman Jacek Algorytmy i struktury

Optymalizacja poleceń SQL Indeksy

System plików przykłady implementacji

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Zasady programowania Dokumentacja

ALGORYTMY I STRUKTURY DANYCH

dr inż. Paweł Myszkowski Wykład nr 11 ( )

Podstawowe struktury danych

Struktury danych: stos, kolejka, lista, drzewo

2:8,7 3:9,4 / \ / \ / \ / \ 4:7,3 5:8 6:9,2 7:4

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

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)

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

Algorytmy i Struktury Danych.

Listy, kolejki, stosy

struktury danych dla operacji słownikowych

Algorytmy i Struktury Danych

Systemy OLAP II. Krzysztof Dembczyński. Instytut Informatyki Zakład Inteligentnych Systemów Wspomagania Decyzji Politechnika Poznańska

Indeksy w hurtowniach danych

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Drzewa podstawowe poj

System plików ReiserFs

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Lista liniowa dwukierunkowa

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

INDEKSY I SORTOWANIE ZEWNĘTRZNE

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

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

Fizyczna organizacja danych w bazie danych

DAO. tworzenie tabeli

Teoretyczne podstawy informatyki

Transkrypt:

Przykładowe B+ drzewo 3 8 1 3 7 8 12 Jak obliczyć rząd indeksu p Dane: rozmiar klucza V, rozmiar wskaźnika do bloku P, rozmiar bloku B, liczba rekordów w indeksowanym pliku danych r i liczba bloków pliku b Węzły wewnętrzne zawierają maksymalnie p wskaźników i p-1 kluczy. Każdy z węzłów musi zmieścić się w pojedynczym bloku dyskowym. Stąd rząd B + -drzewa p jest największą liczbą całkowitą, dla której spełniona jest nierówność: (p P)+((p-1) V)) B Minimalna wysokość indeksu rzadkiego: h = log p b Minimalna wysokość indeksu gęstego: h = log p r 1

Przykład Dane: Rozmiar pliku: r = 30 000 rekordów Rozmiar bloku: B = 1KB Rozmiar rekordu: R = 100 bajtów Rekordy mają stałą długość inie są dzielone między bloki Rozmiar klucza: V = 9 Rozmiar wskaźnika: P = 6 Indeks wtórny Przykład Obliczenia: Rząd indeksu: (p P)+((p-1) V)) B p = (B+P)/(V+P) p = (1024+6)/(9+6) p = 68 Minimalna wysokość indeksu: h = log p r h = log 68 30 000 h = 3 2

Przykład Koszt wyszukiwania rekordu bez pomocy indeksu: liczba bloków/2 = 100 dostępów Koszt wyszukiwania danych za pomocą indeksu jednopoziomowego gęstego: 9 dostępów do indeksu+ 1 dostęp do danych =10 dostępów Koszt wyszukiwania danych za pomocą indeksu typu B + - drzewo: wysokość drzewa + 1 = 3 + 1 = 4 dostępy Wyszukiwanie danych dany indeks o rzędzie p i korzeniu n Szukaj (K) n := wskaźnik na blok zawierający korzeń drzewa; odczytaj blok n; while (węzeł n nie jest liściem) do q := liczba wskaźników w węźle n; if K n.k 1 (*n.k 1 jest i-tym kluczem w węźle n*) then n := n.p 1 ;(*n.p i jest i-tym wskaźnikiem w węźle n*) else if K > n.k q-i then n := n.p q ; else znajdź w węźle n element i taki, że n.k i-1 < K < n.k i n := n.p i ; odczytaj blok n; znajdź w węźle n element (K i Pr i ) taki, że K i = K; (* przeglądaj liść drzewa *) if znaleziony then odczytaj blok pliku danych o wskaźniku Pr i i pobierz rekord danych else w pliku danych nie ma rekordu o wartości pola równej K; end Szukaj 3

Wstawianie danych (1) dany indeks o rzędzie p i korzeniu n Wstaw (K, Pr) n := wskaźnik na blok zawierający korzeń drzewa; czytaj blok n; wyczyść stos S; while (węzeł n nie jest liściem) do umieść wartość nna stosies; (*stos S przechowuje ścieżkę przeszukiwania drzewa*) q := liczba wskaźników w węźle n; if K n.k 1 (*n.k i jest i-tym kluczem w węźle n*) then n := n.p 1 ;(*n.p i jest i-tym wskaźnikiem w węźle n*) else if K > n.k q-i then n := n.p q ; else znajdź w węźle n element i taki, że n.k i-1 < K < n.k i n := n.p i ; odczytaj blok n; utwórz nowy element indeksu (K,Pr); if liść n nie jest pełny then wstaw nowy element (K, Pr) w odpowiednią pozycję węzła n; else Wstawianie danych (2) (*węzeł n jest pełny niezbędny podział liścia*) kopiuj n do temp; (*temp jest temporalnym blokiem o rozmiarze umożliwiającym przechowanie dodatkowego elementu *); wstaw element (K, Pr) w odpowiednie miejsce temp; (*temp przechowuje teraz p+1 elementów *) new := nowy pusty liść drzewa; j := (p + 1)/2 ; n := pierwszych j elementówtemp (doelementu(k j,pr j )); n.p next := new; new := pozostałe elementy z temp; K := Kj; (*teraz musimy wstawić element (K,new) do węzła pośredniego, który jest przodkiem liścia n, jeżeli przodek jest pełny nastąpi propagacja podziału*) finished := false; repeat if stos S jest pusty then (*nie ma przodka trzeba utworzyć nowy korzeń drzewa*) root := nowy węzeł wewnętrzny indeksu; root := <n, K, new>; finished := true; end else 4

Wstawianie danych (3) n := wskaźnik ze stosu S; if węzeł wewnętrzny n nie jest pełny then (*podział węzła niepotrzebny*) wstaw (K, new) w odpowiednie miejsce węzła n; finished := true; end else (*węzeł wewnętrzny jest pełny niezbędny podział*) przepisz zawartość n do temp; wstaw (K,new) w odpowiednią pozycję do temp; (*temp ma teraz p+1 wskaźników*) new := nowy węzeł wewnętrzny indeksu; j := ((p + 1)/2 ; n := pierwszych j elementów temp (do wskaźnika P j ); (*n zawiera <P 1, K 1, P 2, K 2,..., P j-1,k j-1,p j ) > *) new := pozostałe elementy temp; (*new zawiera <P j+1,k j+1,..., K p-1, P p,k p,p p+1 ) > *) K := Kj ; (*teraz musimy wstawić element (K,new) do przodka węzła n*) end ; end ; until finished end Wstaw; Przykład operacji wstawiania do indeksu Sekwencja operacji wstawiania: 8,, 1, 7, 3, 12, 9, 6 8 wstaw 1: przepełnienie, podział, propagacja, nowy poziom 1 8 wstaw 7:

wstaw 3: przepełnienie, odział, propagacja Przykład c.d. 1 7 8 3 wstaw 12: przepełnienie, podział, propagacja, przepełnienie, podział, propagacja, nowy poziom 1 3 7 8 3 8 wstaw 9: 1 3 7 8 12 Przykład c.d. 3 wstaw 6: przepełnienie, podział, propagacja 8 1 3 7 8 9 12 3 7 8 1 3 6 7 8 9 12 6

Indeksy wielowymiarowe Indeks B+ drzewa wspiera efektywną realizację zapytań przedziałowych dzięki liniowemu uporządkowaniu rekordów indeksu Inne sposoby porządkowania rekordów indeksu prowadzą do innych struktur danych: Indeksy jednowymiarowe: liniowy porządek zdefiniowany na zbiorze kluczy (i zbiorze rekordów indeksu). Przykładem takiego indeksu indeks B+ drzewo Indeksy wielowymiarowe: brak liniowego porządku. Rekordy indeksu uporządkowane wg. relacji przestrzennej, w której każda wartość klucza jest punktem w przestrzeni k-wymiarowej, gdzie k jest liczbą atrybutów klucza złożonego Indeksy wielowymiarowe Przykład: Indeks jednowymiarowy linearyzuje 2- wymiarową przestrzeń wartości klucza złożonego <age, sal> sortując rekordy indeksu najpierw wg. wartości atrybutu age, a następnie wg. wartości atrybutu sal. Przykładowo, klucze <age, sal>są przechowywane w indeksie typu B+-drzewo w następującym porządku: <11, 80>, <12, 10>, <12, 20>, <13, 7> Zapytanie przedziałowe na atrybucie (age) może być zrealizowane efektywnie ze względu na porządek rekordów indeksu. Zapytanie przedziałowe na atrybucie sal może być kosztowne. Przykładowo, wyszukanie rekordów dla których age < 12 jest łatwe, ale wyszukanie rekordów, dla których sal < 20 wymaga przeszukania całego indeksu 7

Indeksy wielowymiarowe W indeksie wielowymiarowym rekordy indeksu są przechowywane w porządku wynikającym z odległości pomiędzy wartościami kluczy w przestrzeni k wymiarowej: <12, 10> i <12, 20> są pamiętane kolejno, podobnie klucze <11, 80> i <13, 7> 80 80 70 70 60 60 0 0 40 40 30 30 20 20 10 11 12 13 10 11 12 13 8