Fizyczne struktury danych 1
Plan rozdziału 2 Nośniki danych hierarchia nośników budowa dysku magnetycznego macierze RAID Buforowanie Rekordy i pliki Operacje na plikach plik nieuporządkowany plik uporządkowany
Kategorie nośników danych 3 Kategorie nośników nośniki podstawowe: bezpośrednio manipulowane przez CPU, obejmują pamięć operacyjną i pamięci podręczne nośniki wtórne: dane kopiowane do nośników podstawowych, obejmują pamięci magnetyczne, optyczne, taśmowe nośniki ulotne: nie przechowują danych przez dłuższy czas nośniki trwałe: przechowują dane przez dłuższy czas nośniki on-line: dane dostępne w dowolnym momencie nośniki off-line: przed udostępnieniem danych konieczna interwencja operatora lub automatu ładującego
Hierarchia nośników danych 4 Pamięć podręczna (ang. cache memory): Static RAM Pamięć główna (ang. main memory): Dynamic RAM Pamięć flash: Electronically Erasable Programmable ROM Pamięć magnetyczna macierze dyskowe Pamięć optyczna: Compact Disk ROM (WORM) pamięć optical juke box Pamięć taśmowa pamięć tape juke box
Schemat dysku magnetycznego 5 cylinder ścieżka głowica ramię
Własności dysków magnetycznych 6 Podstawowe cechy dysków bity łączą się w bajty (najczęściej 4-8 bitów/bajt) dyski mogą być jednostronne lub dwustronne ścieżki tworzą koncentryczne okręgi lub (rzadko) spirale ścieżki dysków o tym samym promieniu tworzą cylinder ścieżki są dzielone na bloki dyskowe (strony) podczas formatowania typowy rozmiar bloku dyskowego to 512-8196 bajtów pomiędzy blokami występują specjalne przerwy (ang. interblock gaps) z informacjami kontrolnymi
Prawo Krydera 7 Analogia do Prawa Moore'a szybszy wzrost pojemności niż gęstości tranzystorów od kilku lat obserwowany spadek tempa wzrostu czas dostępu poprawia się tylko o 10% rocznie!!! czas transferu poprawia się tylko o 20% rocznie!!!
Sektory na dysku 8 Charakterystyka sektorów ścieżka dzieli się na sektory, podział na sektory jest fizyczny sektor może zajmować stały kąt lub stałą długość ścieżki nie każdy dysk dzieli się na sektory ścieżka sektor
Dostęp do sektorów dyskowych 9 Dysk magnetyczny jest urządzeniem o dostępie swobodnym Adres bloku dyskowego numer powierzchni, numer ścieżki, numer bloku adres bufora w pamięci operacyjnej Głowica nieruchoma głowica nad każdą ścieżką ruchoma głowica nad każdą powierzchnią Kontroler odpowiedzialny za przesunięcie głowicy nad ścieżkę i transfer bloku dyskowego do buforów Czas dostępu przesunięcie głowicy nad ścieżkę (ang. seek time): 8-14 msec obrót dysku (ang. latency): 2-6 msec transfer bloku do bufora (ang. block transfer time): < 1 msec
Macierze RAID 10 RAID (ang. Redundant Array of Independend Disks) Podział pliku między dyski (ang. data stripping) transparentne rozproszenie pliku między wieloma dyskami równoległe operacje I/O do różnych części pliku zrównoważenie obciążenia dysków zwiększenie niezawodności przez składowanie kodów parzystości lub innych kodów detekcji błędów Plik A A 1 A 2 A 3 A 4
RAID a niezawodność dysków 11 Duża liczba dysków skraca MTTF (ang. mean time to failure) 1 dysk: MTTF = 200 000 godzin = 23 lata 100 dysków: MTTF = 2000 godzin = 83 dni Shadow copy (mirroring): dwie identyczne kopie pliku MTTR (ang. mean time to repair) = 24 godziny 100 dysków: MTTF = (200 000) 2 /(2*24) = 95 000 lat Jakie informacje przechowywać nadmiarowo? parzystość, kody Hamminga Gdzie przechowywać nadmiarowe informacje? niewielki zbiór specjalizowanych dysków równomierne rozłożenie po wszystkich dyskach
RAID a wydajność dysków 12 Poziomy podziału pliku podział bajtów (ang. bit-level stripping): j-ty bit każdego bajtu jest zapisywany na j-ty dysk, dla 8-bitowych bajtów następuje ośmiokrotne przyspieszenie działania dysku podział pliku (ang. block-level stripping): kolejne bloki dysku rozrzucane po dyskach, wielokrotne przyspieszenie kosztem niezawodności, szybki odczyt wieloblokowy
Poziomy RAID 13 Level 0 mirrors Level 1 Level 2 Level 3 Level 4 parzystość ECC Level 5 rozproszona parzystość Level 6 P+Q
Buforowanie bloków 14 Jedna jednostka CPU współbieżny przeplatany odczyt Wiele jednostek CPU współbieżny równoległy odczyt Podwójne buforowanie blok dyskowy I/O blok dyskowy CPU i i+1 i+2 i+3 i+4 wypełnij A wypełnij B wypełnij A wypełnij B wypełnij A i i+1 i+2 i+3 przetwórz A przetwórz B przetwórz A przetwórz B czas
Rekordy i typy rekordowe 15 Dane przechowywane w postaci rekordów rekord to kolekcja wartości (elementów) danych Każdy rekord posiada typ rekordowy kolekcja nazw i typów danych pól w rekordzie nietypowe typy danych (np. BLOB) Przykład rekordu struct employee { char name[30]; char ssn[9]; int salary; int jobcode; char department[20]; }
Pliki danych 16 Plik jest sekwencją rekordów Typy plików plik rekordów o stałej długości (ang. fixed-length records) plik rekordów o zmiennej długości (ang. variable-length records) niektóre pola w rekordzie mają zmienną długość (ang. variable-length fields), np. nazwisko niektóre pola w rekordzie przechowują zbiory wartości (ang. repeating fields), np. języki obce niektóre pola w rekordzie są opcjonalne (ang. optional fields), np. telefon plik zawiera rekordy różnych typów (ang. mixed file), np. w wyniku organizacji klastrowej
Formaty rekordów 17 NAME SSN JOB 1 8 15 NAME SSN JOB Smith, John 0123456789 Key Account Manager NAME = Smith, John SSN = 0123456789 JOB = Key
Formaty rekordów - problemy 18 Pola opcjonalne fizycznie implementowane jak pola wymagane ze specjalnym znacznikiem NULL sekwencje par <nazwa-pola,wartość-pola> sekwencje par <typ-pola,wartość-pola> Pola ze zbiorami wartości alokacja maksymalnej liczby wartości dozwolonej dla pola specjalny separator powtarzanych wartości Pola o zmiennej długości specjalny znak separatora do demarkacji końca pola specjalny znak separatora do demarkacji końca rekordu
19 Alokacja rekordów do bloków dyskowych Blok dyskowy jest jednostką transferu danych między dyskiem i pamięcią operacyjną Blocking factor bfr: liczba rekordów mieszczących się w jednym bloku dyskowym bfr = B/R, gdzie B rozmiar bloku, R rozmiar rekordu b = r/bfr, gdzie r liczba rekordów, b liczba bloków Organizacje rekordów niedzielona (ang. unspanned) rekord 1 rekord 2 rekord 3 rekord 4 dzielona (ang. spanned) rekord 1 rekord 2 rekord 3 rekord 3 rekord 4
Alokacja bloków na dysku 20 Rodzaje alokacji alokacja ciągła (ang. contiguous allocation): bloki dyskowe alokowane do pliku tworzą ciągłą sekwencję bloków w sektorze alokacja łańcuchowa (ang. linked allocation): każdy blok dyskowy alokowany do pliku posiada wskaźnik na kolejny blok alokacja klastrowa (ang. cluster allocation): ciągłe sekwencje bloków są łączone w klastry, każdy klaster zawiera wskaźnik na kolejny klaster, klastry nazywa się czasem segmentami lub rozszerzeniami (ang. extent) alokacja indeksowa (ang. indexed allocation): wydzielone bloki pełnią rolę indeksów zawierających wskaźniki na bloki alokowane do pliku
Nagłówki plików danych 21 Nagłówek pliku (ang. file header) zawiera informacje o: adresach bloków alokowanych do pliku formatach rekordów w pliku nazwie, typie i długości każdego pola w rekordzie (dla plików z rekordami o stałej długości) kodach typów i separatorach (dla plików z rekordami o zmiennej długości)
Plik nieuporządkowany 24 Plik nieuporządkowany (ang. heap file, pile file) to sekwencja rekordów umieszczonych w blokach dyskowych w dowolnej kolejności NAME JOB SALARY block 1 block 2 block n Donahue, Philip Adams, William Wilkes, Stephen Warren, Allice Billow, Susan Chapswick, Ann Abbot, John Barklay, Casey Beresford, Jim Dubbs, Ted Woods, Christopher Zimmer, Byron
Operacje na pliku nieuporządkowanym 25 Wyszukiwanie rekordów konieczność liniowego przeszukiwania pliku (b/2 lub b odczytów) Dodawanie rekordów bardzo szybkie, wymaga wczytania ostatniego bloku dyskowego do bufora, dodania rekordu, i zapisania bufora na dysk Usuwanie rekordów wymaga zlokalizowania bloku dyskowego, wczytania bloku do bufora, zmodyfikowania bufora, zapisania bufora na dysk alternatywa: marker usuniętych rekordów pozostawia pustą przestrzeń w pliku (konieczna reorganizacja) Dla rekordów o stałej długości w alokacji ciągłej niedzielonej możliwy dostęp bezpośredni poprzez pozycję rekordu i -ty rekord: block number i/bfr record number (i mod bfr)
Plik uporządkowany 26 Plik uporządkowany (ang. sorted file, ordered file) to sekwencja rekordów umieszczonych w blokach dyskowych w kolejności określonej przez pole porządkujące NAME JOB SALARY block 1 block 2 block n Abbot, John Adams, William Barklay, Casey Beresford, Jim Billow, Susan Chapswick, Ann Donahue, Philip Dubbs, Ted Warren, Allice Wilkes, Stephen Woods, Christopher Zimmer, Byron
Cechy plików uporządkowanych 27 Porządek rekordów rekordy posortowane wg pola porządkującego (ang. ordering field) pole porządkujące może być kluczem (ang. ordering key) Dostęp do rekordów wg pola porządkującego efektywne połowienie binarne wg pozostałych pól dostęp sekwencyjny Modyfikacja danych wstawianie jest operacją bardzo kosztowną, możliwa relokacja połowy rekordów pliku usuwanie jest operacją tańszą jeśli wykorzystamy markery i okresową reorganizację pliku modyfikacja: koszt zależy od warunku wyszukiwania i modyfikowanego pola, modyfikacja pola porządkującego tak samo kosztowna jak wstawienie rekordu
Połowienie binarne 28 l 1; u b; while (u l ) do begin i ( l + u ) div 2; read block i of the file into the buffer; if K < ( ordering key field value of the first record in block i) then u i 1; else if K > (ordering key field value of the first record in block i) then l i + 1; else if the record with ordering key field value = K is in the buffer then goto found; else goto notfound; end; goto notfound; Algorytm wymaga za zwyczaj log 2 (b) odczytów niezależnie od tego, czy rekord został znaleziony.
Zadania 29 Dane są parametry dysku: rozmiar bloku B = 512, rozmiar przerwy między blokami G = 128, liczba bloków na ścieżce bpt = 20, liczba ścieżek na talerzu 400. Dysk składa się z 15 dwustronnych talerzy. Odpowiedz na pytania: jaka jest pojemność całkowita i użyteczna ścieżki? ile jest cylindrów? jaka jest pojemność całkowita i użyteczna cylindra? jaka jest pojemność całkowita i użyteczna dysku? prędkość obrotowa dysku wynosi 2400 rpm, ile wynosi transfer liczony w bajtach na milisekundę? ile wynosi czas transferu bloku? jakie jest średnie opóźnienie w milisekundach? jeśli czas szukania ścieżki wynosi 30 milisekund, to ile wynosi średni czas znalezienia i transferu jednego bloku dyskowego, dla którego znany jest adres? porównaj czas transferu 20 losowych bloków i 20 ciągłych bloków z wykorzystaniem podwójnego buforowania
Zadania 30 Plik Studenci ma r = 20 000 rekordów o stałej długości. Każdy rekord ma pola: nazwisko (30B), indeks (9B), adres (40B), telefon (9B), data_ur (8B), płeć (1B), kierunek (3B). Plik jest składowany na dysku o parametrach jak poprzednio. wylicz rozmiar R rekordu wylicz współczynnik blokowania bfr oraz liczbę potrzebnych bloków b zakładając alokację niedzieloną wylicz średni czas dostępu do rekordu przy wykorzystaniu wyszukiwania liniowego zakładając (i) alokację ciągłą i podwójne buforowanie odczytów (ii) alokację losową wylicz średni czas dostępu do rekordu poprzez numer indeksu, zakładając że plik jest uporządkowany wg pola indeks i wykorzystano połowienie binarne