Jarosł Jarosław Kuchta Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych [email protected] [email protected] Zagadnienia Sposoby zapisu danych zewnę zewnętrznych Odwzorowanie dziedziny problemu w dziedzinę dziedzinę danych Normalizacja relacyjnej bazy danych Optymalizacja relacyjnej bazy danych dla przechowywania obiektó obiektów Wykorzystanie indeksó indeksów w relacyjnej bazie danych Szacowanie rozmiaru relacyjnej bazy danych Problemy synchronizacji w rozproszonej bazie danych Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 2/30 Sposoby zapisu danych Pliki Pliki sekwencyjne Nieuporzą Nieuporządkowane Uporzą Uporządkowane Pliki swobodnego dostę dostępu Bazy danych Relacyjne RelacyjnoRelacyjno-Obiektowe Obiektowe Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 3/30 1 Zalety i wady zapisu w plikach Zalety Elastyczność Elastyczność zwią związana z zastosowaniem obiektowego języka programowania Dowolność Dowolność typó typów i formató formatów danych DuŜ DuŜa wydajność wydajność odczytu/zapisu Brak koniecznoś konieczności zakupu systemu bazy danych Projektowanie Aplikacji Rozproszonych Wady Redundancja danych Brak zewnę zewnętrznego mechanizmu modyfikacji struktury danych (konieczność (konieczność pisania specjalnych programó programów) Brak mechanizmu kontroli dostę dostępu do danych Projektowanie struktury danych 4/30 Zastosowanie plikó plików Pliki gł główne (master (master files) files) Pliki przeglą przeglądowe (look (look--up files) files) Pliki transakcyjne Pliki kontrolne (audit (audit files) files) Pliki archiwalne (history (history files, files, archive files) files) Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 5/30 Zastosowanie systemu bazy danych (DBMS) Systemy transakcyjne Systemy wspierania decyzji Systemy informowania kierownictwa Systemy eksperckie Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 6/30 2 Rodzaje systemó systemów baz danych RDBMS - Relational Database Management System ORDBMS - ObjectObject-relational Database Management System OODBMS - Object Oriented Database Managemend System Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 7/30 Zalety i wady RDBMS Zalety Szybkie wyszukiwanie danych Standardowy ję język dostę dostępu do danych (SQL) Kontrola spó spójnoś jności danych Łatwość atwość modyfikacji struktury danych Dobrze sprawdzone systemy na rynku Kontrola dostę dostępu do danych Łatwość atwość wspó współdzielenia struktury danych Projektowanie Aplikacji Rozproszonych Wady Brak moŜ moŜliwoś liwości obsł obsługi złoŜonych typó typów danych (dodawane w niektó niektórych RDBMS) Niecał Niecałkowita zgodność zgodność podstawowych typó typów danych z OOPL Brak wsparcia dla zapisu danych obiektowych Projektowanie struktury danych 8/30 Zalety i wady ORDBMS Zalety MoŜ MoŜliwoś liwości obsł obsługi złoŜonych typó typów danych Zbudowane na SQL Kontrola spó spójnoś jności danych Łatwość atwość modyfikacji struktury danych Kontrola dostę dostępu do danych Łatwość atwość wspó współdzielenia struktury danych Projektowanie Aplikacji Rozproszonych Wady Niecał Niecałkowita zgodność zgodność podstawowych typó typów danych z OOPL Ograniczone wsparcie dla zapisu danych obiektowych Projektowanie struktury danych 9/30 3 Zalety i wady OODBMS Zalety MoŜ MoŜliwoś liwości obsł obsługi złoŜonych typó typów danych Bezpoś Bezpośrednie wsparcie dla zapisu danych obiektowych Kontrola spó spójnoś jności danych Łatwość atwość modyfikacji struktury danych Kontrola dostę dostępu do danych Łatwość atwość wspó współdzielenia struktury danych Projektowanie Aplikacji Rozproszonych Wady Brak uznanego standardu Konieczność Konieczność dopasowania OODBMS do OOPL Niedojrzał Niedojrzałość narzę narzędzi Projektowanie struktury danych 10/30 Odwzorowanie klas PD w DM w OODBMS Warstwa PD Klient Zamówienie DMKlient DMZamówienie Warstwa DM Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 11/30 Problem dziedziczenia wielokrotnego NadklasaA -atrybutA1 -atrybutA2 NadklasaB -atrybutB1 -atrybutB2 KlasaC -atrybutC1 -atrybutC2 Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 12/30 4 Rozwią Rozwiązanie a) NadklasaA -atrybutA1 -atrybutA2 KlasaC -atrybutC1 -atrybutC2 -NadklasaB Utworzyć Utworzyć instancję instancję dodatkowej nadklasy w warstwie DM i dodać dodać atrybut, któ czy który połą połączy instancję instancję nadklasy z instancją instancją podklasy. 1 Projektowanie Aplikacji Rozproszonych NadklasaB 1 -atrybutB1 -atrybutB2 Projektowanie struktury danych 13/30 Rozwią Rozwiązanie b) NadklasaA -atrybutA1 -atrybutA2 Spł Spłaszczyć aszczyć hierarchię hierarchię dziedziczenia w warstwie DM przez skopiowanie atrybutó atrybutów i metod nadklas do podklas. KlasaC -atrybutB1 -atrybutB2 -atrybutC1 -atrybutC2 Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 14/30 Odwzorowanie klas PD w DM w ORDBMS (zał (załoŜenia) ORDBMS obsł obsługuje: identyfikator obiektu (OID) kolumny wielowartoś wielowartościowe (np. tel[*]: tel[*]: string) string) procedury przechowywane ORDBMS nie obsł obsługuje: Ŝadnego rodzaju dziedziczenia kolumn zł złoŜonych Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 15/30 5 Odwzorowanie klas PD w DM w ORDBMS PD DM ORDBMS klasa klasa tabela atrybut jednowartoś jednowartościowy metody dostę dostępu kolumna procedura przechowywana atrybut pochodny metoda dostę dostępu asocjacja pojedyncza metody dostę dostępu kolumna typu OID atrybut wielowartoś wielowartościowy metody dostę dostępu kolumna wielowartoś wielowartościowa atrybut zł złoŜony metody dostę dostępu nowa tabela + relacja jedenjedenwiele asocjacja jedenjeden-wiele metody dostę dostępu kolumna wielowartoś wielowartościowa typu OID asocjacja wielostronna metody dostę dostępu kolumna wielowartoś wielowartościowa typu OID po kaŜ kaŜdej ze stron Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 16/30 Rozwią Rozwiązanie problemu dziedziczenia w ORDBMS Kolumna zawierają zawierająca OID instancji przechowywanej w tablicy reprezentują reprezentującej nadklasę nadklasę. Spł Spłaszczenie hierarchii dziedziczenia Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 17/30 Odwzorowanie klas PD w DM w ORDBMS przykł przykład Warstwa PD Osoba Imię: string Nazwisko: string Klient Adres: (Kod, Miejscowość, Ulica) Tel[*]: string NIP: string Warstwa DM DMOsoba DMKlient «table» DTOsoba «table» DTKlient Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych «table» DTAdres 18/30 6 Struktura klas DM w ORDBMS - przykł przykład DMOsoba DMKlient Get Osoba() Set Osoba() Get Klient() Set Klient() Osoba «table» DTOsoba «table» DTKlient Adres: OID Tel[*]: string NIP: string Osoba: OID Imię: string Nazwisko: string Projektowanie Aplikacji Rozproszonych Adres * «table» DTAdres Kod: string Miejscowość: string Ulica: string Projektowanie struktury danych 19/30 Odwzorowanie klas PD w DM w RDBMS (zał (załoŜenia) RDBMS obsł obsługuje: RDBMS nie obsł obsługuje: automatyczny identyfikator rekordu (ID) procedury przechowywane Ŝadnego rodzaju dziedziczenia kolumn wielowartoś wielowartościowych kolumn zł złoŜonych Zał ZałoŜenia dodatkowe: kolumny - klucze są są typu integer (32(32-bitowe) kolumna automatycznie ustawiana przez RDBMS jest oznaczana zastrzeŜ } zastrzeŜeniem {autoset {autoset} kolumna z kluczem wł własnym jest oznaczana zastrzeŜ zastrzeŜeniem {PK} kolumna z kluczem obcym jest oznaczana zastrzeŜ zastrzeŜeniem {FK} Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 20/30 Odwzorowanie klas PD w DM w RDBMS DM RDBMS klasa PD klasa tabela + kolumna ID: integer {autoset, autoset, PK} atrybut jednowartoś jednowartościowy metody dostę dostępu kolumna atrybut pochodny metoda dostę dostępu procedura przechowywana asocjacja pojedyncza metody dostę dostępu kolumna typu integer {FK} + relacja jedenjeden-jeden atrybut wielowartoś wielowartościowy metody dostę dostępu nowa tabela + relacja jedenjeden-wiele nowa tabela + relacja jedenjeden-wiele atrybut zł złoŜony metody dostę dostępu asocjacja jedenjeden-wiele metody dostę dostępu kolumna typu integer {FK} + relacja jedenjeden-wiele asocjacja wielostronna metody dostę dostępu nowa tabela z kolumnami typu integer {FK} + relacje jedenjeden-wiele Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 21/30 7 Struktura klas DM w RDBMS - przykł przykład DMOsoba DMKlient Get Osoba() Set Osoba() «table» DTOsoba ID: integer {autoset, PK} Imię: string Nazwisko: string «table» DTAdres Get Klient() Set Klient() Osoba «table» DTKlient 1 ID: integer {autoset, PK} NIP: string 1 Osoba: integer {FK} ID: integer {autoset, PK} Klient: integer {FK} Kod: string 1 Miejscowość: string Ulica: string Klient 1 «table» DTTel Klient 1 * Projektowanie Aplikacji Rozproszonych ID: integer {autoset, PK} Klient: integer {FK} Tel: string Projektowanie struktury danych 22/30 Optymalizacja obiektu w RDBMS Optymalizacja wydajnoś wydajności (normalizacja) Optymalizacja szybkoś szybkości (denormalizacja (denormalizacja,, indeksowanie) Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 23/30 Normalizacja 0NF Czy któraś tablica zawiera powtarzające się pola? Czy pewne rekordy mają róŜną liczbę kolumn od innych rekordów? Usuń powtarzające się lub nadmiarowe pola. Stwórz nową tablicę, która będzie przechowywała usunięte dane. Skopiuj PK nowej tablicy do poprzedniej tablicy jako FK 1NF Czy PK jest tworzony z więcej niŜ jednego pola? Jeśli tak, to czy są pola zaleŜne tylko od części PK? Usuń częściową zaleŜność. Dodaj nową tablicę, która będzie zawierała pola, które były częściowo zaleŜne. Skopiuj PK nowej tablicy do poprzedniej tablicy jako FK. 2NF Czy są pola zaleŜne od innego drugoplanowego pola kluczowego? Usuń zaleŜnośc przechodnią Dodaj nową tablicę, która będzie zawierała usunięte pola. Skopiuj PK nowej tablicy do poprzedniej tablicy jako FK Projektowanie Aplikacji Rozproszonych 3NF Projektowanie struktury danych 24/30 8 Denormalizacja Tablice przeglą przeglądowe (look (look--up tables) tables) Relacje jedenjeden-jeden Relacje jedenjeden-wiele Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 25/30 Indeksowanie - zasady Dla kaŜ kaŜdej tablicy tworzy się się indeks unikalny w oparciu o PK. Dla kaŜ kaŜdej tablicy tworzy się się indeksy w oparciu o FK. Dodatkowe indeksy tworzy się się dla pó pól czę często wykorzystywanych przy grupowaniu, sortowaniu lub wyszukiwaniu rekordó rekordów. W systemie transakcyjnym rzadko stosuje się się dodatkowe indeksy. W systemach decyzyjnych tworzy się się wiele indeksó indeksów. Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 26/30 Indeksowanie - prezentacja ZastrzeŜ ZastrzeŜenia {index} index} – indeks nie zapewniają zapewniający unikatowoś unikatowości {unique} unique} – indeks zapewniają zapewniający unikatowość unikatowość {not null} null} – kolumna nie dopuszcza wartoś wartości pustej Przedział Przedział indexes nazwiskonazwisko-i-imię imię = nazwisko + imię imię {unique, unique, not null} null} Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 27/30 9 Szacowanie rozmiaru bazy danych Średni rozmiar rekordu = Suma średniego rozmiaru pó pól. Szacowanie liczby rekordó rekordów Narzut DBMS Przyrost miesię miesięczny/roczny Średni rozmiar pó pól tekstowych - szacowanie Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 28/30 Problemy z rozproszoną rozproszoną bazą bazą danych Centralna baza danych – lokalne repliki bazy danych Synchronizacja okresowa Konflikty synchronizacji: konflikt blokowania konflikt klucza unikatowego konflikt klucza obcego konflikt poprawnoś poprawności na poziomie tabeli konflikt naruszenia wię więzów integralnoś integralności konflikt wielkoś wielkości liter i porzą porządkó dków sortowania Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 29/30 Literatura Dennis A., Wixom B.H., Tegarden D., Systems Analysis & Design. An ObjectObject-Oriented Approach with UML, UML, John Wiley and Sons, Sons, USA, 2002 Projektowanie Aplikacji Rozproszonych Projektowanie struktury danych 30/30 10