Systemy zarządzania bazami danych 14. Strojenie schematu.

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Modelowanie logiczne (dla relacyjnych SZBD)
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
S – student, P – przedmiot, W – wykładowca
Relacyjny model danych
Komponenty bazy danych Baza danych Jest to uporządkowany zbiór powiązanych ze sobą danych charakterystycznych dla pewnej klasy obiektów lub zdarzeń,
WPROWADZENIE DO BAZ DANYCH
MS Access 2000 Normalizacja Paweł Górczyński 2005.
Domknięcie przechodnie (również) w bazach danych
Hurtownie Danych Mariusz Dołęga.
Systemy zarządzania bazami danych 10. Strojenie. Oryginał: Shasha & Bonnet10. Strojenie2.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 8: Perspektywy i sekwencery.
SQL-owskie szlaki górskie
Normalizacja : Głównym celem projektowania bazy przeznaczonej dla systemu relacyjnego jest właściwa reprezentacja danych, związków i więzów. W identyfikowaniu.
Zapytania SQL: wydajność i optymalizacja
BD-LAB6 Wojciech Pieprzyca
Wykład 4 Wojciech Pieprzyca
Projektowanie fizycznej bazy danych
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Modele baz danych - spojrzenie na poziom fizyczny
Bazy Danych Wykład 1 S. Kozielski.
Projektowanie struktury logicznej (schematu) relacyjnych baz danych
Systemy plików.
Teoria relacyjnych baz danych
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
Zależności funkcyjne.
SQL – zapytania posumowanie
DIAGRAMY ER 2 (ENTITY-RELATIONSHIP DIAGRAMS 2) Ćwiczenia 2.
SQL – Structured Query Language (3)
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
Linux - polecenia.
Systemy baz danych Wykład 1
Dysk fizyczny i logiczny
Budowa i organizacja zapisu danych na dysku twardym
Andrzej Macioł Bazy danych – model relacyjny – cz. 1 Andrzej Macioł
SQL - Structured Query Language
Defragmentacja dysku Jednym z kluczowych czynników wydajności operacji wejścia/wyjścia jest poziom fragmentacji plików. Fragmentacja oznacza zapisywanie.
Wybrane zagadnienia relacyjnych baz danych
WPROWADZENIE DO BAZ DANYCH
Model relacyjny.
Bazy danych - podstawowe pojęcia
PL/SQL – dalsza wędrówka
Projektowanie relacyjnych baz danych – postacie normalne
Projektowanie bazy danych
Łódź 2008 Banki danych WYKŁAD 2 dr Łukasz Murowaniecki T-109.
Wykład I Podstawy relacyjnych baz danych Powtórzenie wiadomości
Michał Krawczykowski kl. IIIB
Podstawowe informacje
Definiowanie kluczy w tabelach RBD
Slajd 1© J.Rumiński Jacek Rumiński  Bazy danych Kontakt: Katedra Inżynierii Biomedycznej, pk. 106, tel.: , fax: ,
Systemy informatyczne
Projektowanie relacyjnych baz danych – diagramy związków encji
Typy danych, klucz podstawowy, klucz obcy
Komendy SQL do pracy z danymi
Optymalna konfiguracja Microsoft SQL Server 2014
Projektowanie postaci formularza:
BAZY DANYCH MS Access.
Bazy Danych Wprowadzenie
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
Współpraca PHP i MySQL Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z danych zapisanych na serwerze jest współpraca z relacyjna.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Bazy danych. Baza danych (database) – magazyn danych – informacji powiązanych tematycznie, umożliwiający ich wyszukiwanie według zadanych kryteriów Baza.
Temat: Tworzenie bazy danych
Transformacja modelu EER do modelu relacyjnego
Indeksy.
Nieprawidłowo zaprojektowana tabela
Technologie Informacyjne Bazy danych
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Systemy zarządzania bazami danych 14. Strojenie schematu

Oryginał: Shasha & Bonnet214. Strojenie schematu Schemat bazy danych Schemat relacji składa się z nazwy relacji i zbioru atrybutów R(a int, b varchar[20]); Egzemplarz relacji o schemacie R to skończony zbiór rekordów z atrybutami schematu R

Oryginał: Shasha & Bonnet314. Strojenie schematu Pewne schematy są lepsze od innych Schemat 1: OnOrder1(supplier_id, part_id, quantity, supplier_address) Schemat 2: OnOrder2(supplier_id, part_id, quantity); Supplier(supplier_id, supplier_address); Przestrzeń –Schemat 2 zajmuje mniej miejsca Zachowywanie informacji –Schemat 1 może gubić adresy dostawców (anomalie aktualizacyjne) Wydajność –Jeśli często odczytuje się adres dostawcy na podstawie numeru zamówionej części, to schemat 1 jest dobry –Jeśli jest wiele dodawanych wiele zamówień, schemat 1 jest słaby.

Oryginał: Shasha & Bonnet414. Strojenie schematu Zależności funkcyjne X to podzbiór atrybutów relacji R, a A pojedynczy atrybut R. –X determinuje A (w R zachodzi zależność funkcyjna X A) wtw: Dla każdego egzemplarza I relacji R, jeśli w dwóch rekordach r i r egzemplarza I są te same wartości atrybutów ze zbioru X, to rekordy r i r mają też tę samą wartość atrybutu A. OnOrder1(supplier_id, part_id, quantity, supplier_address) –supplier_id supplier_address to istotna zależność funkcyjna

Oryginał: Shasha & Bonnet514. Strojenie schematu Klucz relacji Atrybuty ze zbioru X zawartego w R stanowią klucz R, wtw. X determinuje każdy atrybut R i żaden podzbiór właściwy X nie determinuje wszystkich atrybutów R OnOrder1(supplier_id, part_id, quantity, supplier_address) –{ supplier_id, part_id } jest kluczem Supplier(supplier_id, supplier_address); –{ supplier_id } jest kluczem

Oryginał: Shasha & Bonnet614. Strojenie schematu Normalizacja Relacja jest znormalizowana, wtw. w każdej istotnej zależności funkcyjnej X A na atrybutach R X jest kluczem R. –OnOrder1 nie jest znormalizowana OnOrder1(supplier_id, part_id, quantity, supplier_address) –OnOrder2 i Supplier są znormalizowane OnOrder2(supplier_id, part_id, quantity) Supplier(supplier_id, supplier_address)

Oryginał: Shasha & Bonnet714. Strojenie schematu Przykład #1 Bank przypisuje każdemu klientowi oddział. Każdy oddział podlega jakiemuś sądowi. –Czy poniższa relacja jest znormalizowana? R(customer, branch, jurisdiction)

Oryginał: Shasha & Bonnet814. Strojenie schematu Przykład #1 – analiza Jakie są zależności funkcyjne? –customer branch –branch jurisdiction –customer jurisdiction Kluczem jest zbiór { customer } Zależność funkcyjna bez udziału atrybutu customer R nie jest znormalizowana

Oryginał: Shasha & Bonnet914. Strojenie schematu Przykład #2 Lekarz może pracować w kilku szpitalach i dostaje osobne wynagrodzenie od każdego z nich. –Czy poniższa relacja jest znormalizowana? R(doctor, hospital, salary)

Oryginał: Shasha & Bonnet1014. Strojenie schematu Przykład #2 – analiza Jakie są zależności funkcyjne? –doctor, hospital salary Kluczem jest zbiór { doctor, hospital } Relacja jest więc znormalizowana

Oryginał: Shasha & Bonnet1114. Strojenie schematu Przykład #3 Do relacji R(doctor, hospital, salary) dodajemy atrybut primary_home_address Każdy lekarz ma adres stałego zamieszkania Kilku lekarzy może mieć ten sam adres stałego zamieszkania (przychodzi baba do lekarza a lekarz też baba) –Czy poniższa relacja jest znormalizowana? R(doctor, hospital, salary, primary_home_address)

Oryginał: Shasha & Bonnet1214. Strojenie schematu Przykład #3 – analiza Jakie są zależności funkcyjne? –doctor, hospital salary –doctor primary_home_address –doctor, hospital primary_home_address Klucz jest ten sam { doctor, hospital } Tym razem mamy jednak zależność częściową Dekompozycja na schematy znormalizowane: –R1(doctor, hospital, salary) –R2(doctor, primary_home_address)

Oryginał: Shasha & Bonnet1314. Strojenie schematu Projektowanie schematu w praktyce Zidentyfikuj encje aplikacji (np., lekarze, szpitale, dostawcy) Każdej encji dodaj atrybuty (szpital ma adres…). Dwa ograniczenia na atrybuty: 1.Atrybut nie może mieć atrybutów 2.Encja atrybutu musi ten atrybut funkcyjnie determinować

Oryginał: Shasha & Bonnet1414. Strojenie schematu Projekt logiczny Każda encja staje się relacją Do tych relacji dodaje się relacje odzwierciedlające związki, np. –WorksIn (doctor_ID, hospital_ID) Znajdź zależności funkcyjne między atrybutami i sprawdź, czy schemat jest znormalizowany: –Jeśli zachodzi zależność funkcyjna AB C, to AB powinno być (nad)kluczem

Oryginał: Shasha & Bonnet1514. Strojenie schematu Fragmentacja pionowa Trzy atrybuty: account_ID, balance, address Zależności funkcyjne –account_ID balance –account_ID address Dwa znormalizowane schematy –(account_ID, balance, address) ORAZ –(account_ID, balance) –(account_ID, address) Który z nich jest lepszy?

Oryginał: Shasha & Bonnet1614. Strojenie schematu Fragmentacja pionowa – analiza Wybór projektu zależy od wzorca zapytań: –Aplikacja wysyłająca miesięczny wyciąg z konta jest głównym użytkownikiem adresu właściciela konta –Saldo jest czytane i modyfikowane kilka razy dziennie Projekt 2 może być lepszy, ponieważ relacja (account_ID, balance) jest mniejsza –Więcej par (account_ID, balance) mieści się w pamięci, więc zwiększa się współczynnik trafień –Pełny przegląd zadziała szybciej, ponieważ przeczyta mniej stron

Oryginał: Shasha & Bonnet1714. Strojenie schematu Strojenie normalizacji Pojedyncza znormalizowana relacja XYZ jest lepsza od dwóch znormalizowanych relacji XY i XZ, o ile częste są zapytania o atrybuty XYZ (wtedy nie jest wymagane złączenie) Dwie znormalizowane relacje są lepsze, o ile: –Użytkownicy zazwyczaj korzystają z atrybutów ze zbiorów Y i Z oddzielnie –Rozmiar wartości atrybutów Y i Z jest duży

Oryginał: Shasha & Bonnet1814. Strojenie schematu Antyfragmentacja pozioma Dealerzy opierają swoje strategie kupna obligacji na trendach ich cen. Baza danych przechowuje ceny zamknięcia z ostatnich 3000 sesji, ale 10 ostatnich sesji jest szczególnie ważnych Jaki schemat? –(bond_id, issue_date, maturity, …) (bond_id, date, price) Czy? –(bond_id, issue_date, maturity, today_price,…10dayago_price) (bond_id, date, price) Inna możliwość: perspektywa zmaterializowana

Oryginał: Shasha & Bonnet1914. Strojenie schematu Fragmentacja pionowa i przegląd R (X,Y,Z) –X to liczba całkowita –YZ to długie napisy Pełny przegląd Fragmentacja pionowa jest wyraźnie gorsza, gdy oba atrybuty są czytane razem Fragmentacja pionowa daje przyspieszenie, o ile tylko jeden z Y albo Z jest odczytywany

Oryginał: Shasha & Bonnet2014. Strojenie schematu Fragmentacja i zapytania punktowe R (X,Y,Z) –X to liczba całkowita –YZ to długie napisy Zapytania punktowe czytające XYZ lub XY Fragmentacja pionowa poprawia wydajność, jeśli odsetek zapytań czytających tylko XY jest większy niż 20% Złączenie nie jest kosztowne w porównaniu z pojedynczym odczytem

Oryginał: Shasha & Bonnet2114. Strojenie schematu Strojenie denormalizacji Denormalizacja oznacza pogwałcenie normalizacji w imię lepszej wydajności Denormalizacja poprawia wydajność, jeśli atrybuty różnych znormalizowanych relacji są często odczytywane razem Denormalizacja obniża wydajność, jeśli dane w relacjach są często modyfikowane

Oryginał: Shasha & Bonnet2214. Strojenie schematu Denormalizacja – stan przed Schemat: lineitem ( L_ORDERKEY, L_PARTKEY, L_SUPPKEY, L_LINENUMBER, L_QUANTITY, L_EXTENDEDPRICE, L_DISCOUNT, L_TAX, L_RETURNFLAG, L_LINESTATUS, L_SHIPDATE, L_COMMITDATE, L_RECEIPTDATE, L_SHIPINSTRUCT, L_SHIPMODE, L_COMMENT ); region( R_REGIONKEY, R_NAME, R_COMMENT ); nation( N_NATIONKEY, N_NAME, N_REGIONKEY, N_COMMENT,); supplier( S_SUPPKEY, S_NAME, S_ADDRESS, S_NATIONKEY, S_PHONE, S_ACCTBAL, S_COMMENT); Wiersze lineitem = , nation = 25, region = 5, supplier = 500

Oryginał: Shasha & Bonnet2314. Strojenie schematu Denormalizacja – stan po L_REGIONNAME lineitemdenormalized ( L_ORDERKEY, L_PARTKEY, L_SUPPKEY, L_LINENUMBER, L_QUANTITY, L_EXTENDEDPRICE, L_DISCOUNT, L_TAX, L_RETURNFLAG, L_LINESTATUS, L_SHIPDATE, L_COMMITDATE, L_RECEIPTDATE, L_SHIPINSTRUCT, L_SHIPMODE, L_COMMENT, L_REGIONNAME); – wierszy w lineitemdenormalized –Pusty bufor –Dual Pentium II (450MHz, 512Kb), 512 Mb RAM, dyski 3x18Gb (10000RPM), Windows 2000.

Oryginał: Shasha & Bonnet2414. Strojenie schematu Zapytania do obu schematów select L_ORDERKEY, L_PARTKEY, L_SUPPKEY, L_LINENUMBER, L_QUANTITY, L_EXTENDEDPRICE, L_DISCOUNT, L_TAX, L_RETURNFLAG, L_LINESTATUS, L_SHIPDATE, L_COMMITDATE, L_RECEIPTDATE, L_SHIPINSTRUCT, L_SHIPMODE, L_COMMENT, R_NAME from LINEITEM, REGION, SUPPLIER, NATION where L_SUPPKEY = S_SUPPKEY and S_NATIONKEY = N_NATIONKEY and N_REGIONKEY = R_REGIONKEY and R_NAME = 'EUROPE'; select L_ORDERKEY, L_PARTKEY, L_SUPPKEY, L_LINENUMBER, L_QUANTITY, L_EXTENDEDPRICE, L_DISCOUNT, L_TAX, L_RETURNFLAG, L_LINESTATUS, L_SHIPDATE, L_COMMITDATE, L_RECEIPTDATE, L_SHIPINSTRUCT, L_SHIPMODE, L_COMMENT, L_REGIONNAME from LINEITEMDENORMALIZED where L_REGIONNAME = 'EUROPE';

Oryginał: Shasha & Bonnet2514. Strojenie schematu Wyniki eksperymentu Schemat TPC-H Zapytanie: znajdź wszystkie pozycje zamówień dla dostawców w Europie Schemat znormalizowany wymaga poczwórnego złączenia Po denormalizacji lineitem i wprowadzeniu nazwy regionu do lineitem otrzymujemy 30% poprawę wydajności