Haszowanie (adresowanie rozpraszające, mieszające)

Podobne dokumenty
Tadeusz Pankowski

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

Tablice z haszowaniem

Tablice z haszowaniem

Haszowanie. dr inż. Urszula Gałązka

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

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

Podstawy Informatyki. Metody dostępu do danych

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

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

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

Bazy danych. Andrzej Łachwa, UJ, /15

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Definicja pliku kratowego

Wykład 4. Tablice z haszowaniem

sprowadza się od razu kilka stron!

Techniki wyszukiwania danych haszowanie

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

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

Algorytmy i Struktury Danych, 9. ćwiczenia

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. Model logiczny i fizyczny. Operacje na pliku. Dyski. Mechanizmy składowania

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

Tabela wewnętrzna - definicja

struktury danych dla operacji słownikowych

Rozszerzalne kody operacji (przykład)

Cel normalizacji. Tadeusz Pankowski

Lista, Stos, Kolejka, Tablica Asocjacyjna

Architektura komputerów

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

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

Normalizacja. Pojęcie klucza. Cel normalizacji

Technologia informacyjna

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

Bazy danych - BD. Organizacja plików. Wykład przygotował: Robert Wrembel. BD wykład 5 (1)

Przykładowe B+ drzewo

Zarządzanie pamięcią operacyjną

Podstawy Informatyki Metody dostępu do danych

2 Kryptografia: algorytmy symetryczne

System plików przykłady. implementacji

Algorytmy i struktury danych. wykład 9

2017/2018 WGGiOS AGH. LibreOffice Base

Sprawozdanie z zajęć laboratoryjnych: Technologie sieciowe 1

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

System plików przykłady implementacji

dr inż. Jarosław Forenc

WPROWADZENIE DO BAZ DANYCH

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Krzysztof Kadowski. PL-E3579, PL-EA0312,

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

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

Algorytmy i struktury danych Sortowanie IS/IO, WIMiIP

Adresowanie. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu.

Normalizacja baz danych

Bazy danych wykład ósmy Indeksy

Teoretyczne podstawy informatyki

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Indeksowanie w bazach danych

Architektura komputerów

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Teoretyczne podstawy informatyki

System plików. dr inż. Krzysztof Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

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

Bazy danych. wprowadzenie teoretyczne. Piotr Prekurat 1

Zadanie projektowe nr 1

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2

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

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Transformacja modelu pojęciowego. do logicznego

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

Fizyczna organizacja danych w bazie danych

1.1. Pozycyjne systemy liczbowe

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

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

Baza danych. Baza danych to:

Bazy danych TERMINOLOGIA

Pamięć. Jan Tuziemski Źródło części materiałów: os-book.com

Matematyczne Podstawy Informatyki

WSTĘP DO INFORMATYKI. Struktury liniowe

Teoretyczne podstawy informatyki

Microsoft Access materiały pomocnicze do ćwiczeń cz. 1

Bazy danych 11. Algorytmy złaczeń. P. F. Góra

Fizyczna struktura bazy danych w SQL Serwerze

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Arytmetyka liczb binarnych

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy

OPRACOWANIE: SŁAWOMIR APANOWICZ

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

Złożoność obliczeniowa zadania, zestaw 2

dr inż. Jarosław Forenc

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

Sortowanie. Bartman Jacek Algorytmy i struktury

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

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

Transkrypt:

Haszowanie (adresowanie rozpraszające, mieszające) Tadeusz Pankowski H. Garcia-Molina, J.D. Ullman, J. Widom, Implementacja systemów baz danych, WNT, Warszawa, Haszowanie W adresowaniu haszującym wyróżniamy następujące elementy: funkcja haszująca (hash function), h, której argumentem jest wartość x nazywana kluczem haszowanym (hash key); x jest wartością pewnego pola lub grupy pól w rekordach określonego typu; h(x) jest liczbą całkowitą z przedziału [, B ], gdzie B jest liczbą kubełków (ang. buckets), tj. pozycji w pewnej przestrzeni adresowej; przez kubełek rozumiemy zbiór rekordów, dla których funkcja haszująca przyjmuje tę samą wartość (funkcja ta dla różnych rekordów i dla różnych kluczy haszujących może zwracać tę samą wartość) Haszowanie, T. Pankowski Haszowanie, T. Pankowski Haszowanie pośrednie i bezpośrednie Haszowanie pośrednie Kubełek może być implementowany na wiele sposobów: wartość funkcji haszującej jest traktowana jako pozycja w pewnej tablicy haszowej, która zawiera wskaźniki na początek listy bloków rekordów przyporządkowanych do danego kubełka (hashowanie pośrednie); wartość funkcji haszującej wskazuje bezpośrednio pierwszy blok rekordów przyporządkowanych do danego kubełka (hashowanie bezpośrednie); x h(x) k B r,, r n r,, r n * Ogólny schemat haszowania pośredniego: tablica haszowa identyfikuje kubełki i zawiera wskaźniki na listy bloków rekordów o jednakowej wartości funkcji haszującej Haszowanie, T. Pankowski Haszowanie, T. Pankowski 4

x Haszowanie bezpośrednie h(x) B Funkcja haszująca wskazuje na pierwszy blok rekordów. Rekordy nadmiarowe umieszczane są w blokach przepełnień. Haszowanie jako metoda indeksowania Zauważmy, że jeśli w blokach pamiętane są nie całe rekordy (krotki), ale adresy rekordów (wskaźniki do rekordów pamiętanych w plikach), to haszowanie, podobnie jak na przykład indeksy o strukturze B-drzewa, może być traktowane jako metoda szybkiego dostępu do tych rekordów. Wówczas celowe jest współistnienie wiele ścieżek dostępu (adresowań haszujących), a których każda organizowana jest dla innych atrybutów (kluczy) wyszukiwania. Haszowanie, T. Pankowski 5 Haszowanie, T. Pankowski 6 Haszowanie operacja dołączania Haszowanie operacja usuwania INSERT: h(a) = h(b) = h(c) = h(d) = h(e) = d a c b e Pamięć haszowana. Blok mieści rekordy. Rekordy nadmiarowe umieszczane są w blokach nadmiarów (przepełnień). Delete: e f c a b c e f g d być może g do góry d Haszowanie, T. Pankowski 7 Haszowanie, T. Pankowski 8

Funkcja haszująca przykład klucz = x x x n n-bajtowy ciąg znaków B liczba kubełków h:= x + x +.. x n (suma kodów znaków) adres := h mod B, (liczba od do B-) Ta funkcja może być niedobra Patrz: Knuth Vol. przegląd funkcji haszujących. Dobra funkcja haszująca: równomiernie rozprasza wartości kluczy na wszystkie kubełki niski koszt obliczenia wartości Haszowanie, T. Pankowski 9 Haszowanie, T. Pankowski Rozmieszczanie rekordów w kubełkach Czy rekordy posortowane wg klucza? Tak, jeśli czas CPU jest parametrem krytycznym i operacje Insert/Delete niezbyt częste Reguła efektywności Współczynnik wykorzystania pamięci między 5% a 8% Wsp.wykorzystania = faktyczna liczba kluczy maksymalna liczba kluczy Jeśli < 5%, marnowanie pamięci Jeśli > 8%, częste przepełnienia zależy od jakości funkcji haszującej i od liczby kluczy na blok Haszowanie, T. Pankowski Haszowanie, T. Pankowski

Jak radzić sobie ze wzrostem liczby kluczy? Haszowanie dynamiczne Przepełnienia i ich reorganizacja Haszowanie dynamiczne Rozszerzalne (Extensible) Liniowe (Linear) Haszowanie, T. Pankowski 4 Haszowanie rozszerzalne Różnica względem statycznych tablic haszowych:. Istnieje poziom pośredni zawierający tablicę haszową kubełków, tj. wskaźników na bloki reprezentujące kubełki (pierwsze bloki tych kubełków).. Tablica haszowa może się zwiększać. Jej długość jest zawsze potęgą liczby. Przy zwiększaniu tablica podwaja swoją długość.. Nie muszą istnieć bloki danych dla każdego kubełka; niektóre kubełki mogą wskazywać na ten sam blok, jeśli blok ten może pomieścić rekordy należące teoretycznie do różnych kubełków. 4. Funkcja haszująca oblicza dla każdego klucza ciąg b bitów (np. b=). Jednak na danym kroku haszowania wykorzystywana jest mniejsza liczba bitów, tj. i bitów początkowych ciągu. Oznacza to, że tablica haszowa kubełków zawiera wówczas i pozycji. Haszowanie rozszerzalne Wykorzystanie pierwszych i spośród b bitów tworzonych przez funkcję haszującą h(k) b wybieramy i zwiększa się w czasie. Haszowanie, T. Pankowski 5 Haszowanie, T. Pankowski 6

Haszowanie rozszerzalne Dołączanie przy haszowaniu rozszerzalnym powstanie przepełnienia i = Adres bloku dla kluczy zaczynających się na Wskazuje ile bitów jest branych pod uwagę i =. Wymagane jest utworzenie dodatkowego kubełka.. Konieczne staje się powiększenie (podwojenie) wielkości tablicy haszowej.. Przyjmujemy i =. b=4, i= Tablica haszowa ma tylko dwie pozycje. Pierwsza wskazuje na kubełek rekordów, dla których pierwszy bit wartości funkcji haszującej h(x) jest, a druga dla których pierwszy bit jest równy. Z każdym kubełkiem związana jest liczba i wskazująca liczbę rozróżnialnych bitów Haszowanie, T. Pankowski 7 Insert Haszowanie, T. Pankowski 8 Dołączanie przy przy haszowaniu rozszerzalnym rozwiązanie problemu przepełnienia i = i= Insert Nowa tablica haszowa Zawartość dwóch kubełków ( i ) umieszczona jest w jednym bloku Haszowanie, T. Pankowski 9 Dołączanie przy przy haszowaniu rozszerzalnym tworzenie nowego bloku dla kubełka i = Insert: Dołączenie wymaga utworzenia nowego bloku dla kubełka i rehaszowania dotychczasowego bloku. Nie ma potrzeby zmiany tablicy haszowej.

Przykład c.d. i = i = Haszowanie rozszerzalne usuwanie Bez łączenia bloków Łączenie bloków i skracanie tablicy haszowej (Procedura odwrotna do insert) Insert: Haszowanie, T. Pankowski Przykład Deletion : Prześledzić odwrotne działanie względem Insert! + Haszowanie rozszerzalne podsumowanie Obsługuje pliki o wzrastających rozmiarach -przy małym marnowaniu pamięci - bez potrzeby pełnej reorganizacji - - Pośredni dostęp (Mała wada, gdy tablica haszowa w pamięci) Podwajający się rozmiar tablicy haszowej (Tabela haszowa może nie mieścić się w pamięci) Haszowanie, T. Pankowski Haszowanie, T. Pankowski 4

Haszowanie liniowe Inny schemat haszowania dynamicznego Dwie cechy: (a) Wykorzystuje i ostatnich bitów wartości funkcji haszującej (b) Rozmiar pliku wzrasta liniowo wzrost b i Haszowanie liniowe zasady. Liczba bloków n jest tak dobierana, by średnia liczba rekordów na blok wynosiła ok. 8% pojemności bloku.. Dopuszczalne są bloki przepełnień, jednak ich średnia liczba na blok jest dużo mniejsza od.. Liczba bitów do identyfikowania bloków wynosi log n, gdzie n jest liczbą bloków. Bity te są brane z prawej (niższej) strony ciągu bitów tworzonych przez funkcję haszującą. 4. Przypuśćmy, że rekord o kluczu K ma być umieszczony w bloku a a a i, tzn. ciąg a a a i ciągiem ostatnich i bitów wartości h(k). Niech m= a a a i będzie liczbą całkowitą (numerem bloku). Jeśli m<n, to blok m istnieje i umieszczamy w nim rekord. Jeśli n m < i-, to blok m nie istnieje. Wówczas rekord umieszczamy w bloku o numerze m- i-, tzn. o numerze odpowiadającym ciągowi a a i. Haszowanie, T. Pankowski 5 Haszowanie, T. Pankowski 6 Przykład: i = bit, n = bloki, r = rekordy Przykład: i = bit, n = bloki, r = rekordy (c.d.) m = (max zajęty blok) h(k) zwraca 4 bity n/r.6 wymaganie na współczynnik wypełnienia (naruszenie warunku wymusza zwiększenie n) Insert Przyjmujemy: n=, r=4, ¾=.75! i = log = -dołączamy nowy blok, - rozdzielamy blok na i - blok nie zmienia się, ma numer pozostaje w, gdyż jest to numer powstały przez zastąpienie zerem pierwszej cyfry w (!)?? Narusza to warunek: n/r.6 r=4 /4 =.5 i = bity, n = bloki, r = 4 rekordy

Przykład: i = bity, n = bloki, r = 4 rekordy Insert: Przykład: i = bity, n = bloki, r = 4 rekordy Insert: n=, r=5, n/r=.6, nie musimy tworzyć nowego bloku! dopuszczalny łańcuch przepełnień! Przykład: i = bity, n = bloki, r = 5 rekordów Przykład: i = bity, n = bloki, r = 6 rekordów Insert: brak bloku rekord kierujemy do umieszczamy go w bloku przepełnień? n=, r=6, n/r=.5 <.6, Tworzymy nowy blok Rozdzielamy rekordy z

Przykład: i = bity, n = 4 bloki, r = 6 rekordów Dalszy wzrost rozmiaru pliku i =... n=4, r=6, n/r=.66 m = (max blok) Haszowanie, T. Pankowski 4 Kiedy powiększać pulę bloków? Pamiętać współczynnik: m liczba bloków = Jeśli U > wart.progowej, wówczas powiększ m (i być może też i) r liczba rekordów = U + + - Haszowanie liniowe Podsumowanie Może obsługiwać duże pliki -z małą stratą pamięci -bez pełnej reorganizacji Nie ma pośredniego poziomu, jak w przypadku haszowania rozszerzanego Ciągle istnieją łańcuchy bloków przepełnień Haszowanie, T. Pankowski 5 Haszowanie, T. Pankowski 6