Bazy danych Baza danych • pojęcie sięgające wieków • informacja – pewien zasób • ludzie od zawsze próbują gromadzić informację i wnioskować na jej podstawie • komputery – tylko ułatwiają przetwarzanie informacji Informacja ma wartość gdy jest: • dokładna (nie za dużo, ani nie za mało) • dostępna gdy mamy „zły” sposób poszukiwania informacji możemy nie być w stanie jej odszukać - może nam zabraknąć życia! - komputer tu nic nie pomoże Baza danych • metoda strukturalizacji zarządzania informacją • dotyczy fragmentu rzeczywistości i stanowi kolekcję danych • część systemu informacyjnego - aplikacja bazy danych (oprogramowanie) - system informatyczny (sprzęt) Przykładowa baza danych dla diagnostyki Funkcjonalna struktura bazy danych Elementy bazy danych dla diagnostyki Bazy danych często służą do wspomagania procesów zarządzania System zarządzania bazami danych (SZBD) (ang. Data Base Management System, DBMS) SZBD to oprogramowanie służące do zarządzania komputerowymi bazami danych. Systemy baz danych mogą być sieciowymi serwerami baz danych lub udostępniać bazę danych lokalnie Większość obecnie spotykanych systemów działa w trybie klient-serwer, gdzie baza danych jest udostępniana klientom przez SZBD będący serwerem. Serwer baz danych może udostępniać dane klientom bezpośrednio lub przez inny serwer pośredniczący (np. serwer WWW lub aplikacji). Podstawowe pojęcia ze słownika baz danych … • • • • Co to jest baza danych ? Rekordy, pola, klucze Co to jest język SQL ? Rodzaje baz danych: – – – – – plikowe, relacyjne, obiektowe obiektowo-relacyjne sieciowe Cechy bazy danych • trwałość (aplikacja powinna działać przez długi okres czasu – dane są przechowywane „latami”) • zgodność z rzeczywistością zmiana rzeczywistości musi być uwzględniona w bazie danych Przykład danych do bazy Tytuł: Potop Tytuł: Pan Tadeusz Tytuł: Quo Vadis Autor:H.Sienkiewicz Autor: A.Mickiewicz Autor: H.Sienkiewicz ISBN: ....... ISBN: ....... ISBN: ....... POLE REKORD BIBLIOTEKA Ujęcie projektowe Atrybuty Dane przechowywane w tabeli: Tytuł Autor ISBN Rok Wydania ... Potop H.Sienkiewicz 23xc4 1970 Quo Vadis H.Sienkiewicz 3e45d 1985 Pan Tadeusz A.Mickiewicz 231ws 1990 ... ... ... ... ... Klucz ... Pole ... ... Rekordy Przykładowa struktura rzeczywistego rekordu medycznej bazy danych W bazie danych, musimy • kontrolować redundancję (powtarzanie się danych) • jeden fakt powinien być reprezentowany na jeden sposób • problem dostępności i dokładności poszukiwanych danych (czas dostępu oraz nadmiar danych) Posługiwanie się bazą danych • • • • wyszukiwanie danych modyfikacja (aktualizacja) danych dopisywanie danych usuwanie danych Problem jednej tabeli Tytuł Autor ISBN Rok Wydania ... Potop H.Sienkiewicz 23xc4 1970 Quo Vadis H.Sienkiewicz 3e45d 1985 Pan Tadeusz A.Mickiewicz 231ws 1990 ... ... ... ... ... ... ... ... ... ... ... H.Sienkiewicz A.Mickiewicz ... ... ... Najbardziej popularne są relacyjne bazy danych Relacyjny model danych • twórca E.F.Codd (1970) • terminologia matematyczna – baza danych to zbiór relacji • relacja jest reprezentowana przez tablicę (kolumny i wiersze) – np. dla zadanej kolumny mamy w wierszu odpowiednią wartość Model relacyjny -rys historyczny 1970 Najbardziej znany, najczęściej cytowany artykuł E.F.Codd’a z IBM proponujący oparcie się na teorii relacji jako podstawie ideologicznej i teoretycznej architektury, języków i interfejsów systemów zarządzania bazami danych. Koncepcja została określona jako “relacyjny model danych”, RDM. 1971 - 1975 Zażarta walka ideologiczna pomiędzy zwolennikami RDM a zwolennikami koncepcji sieciowych baz danych opartych o propozycję grupy DBTG komitetu CODASYL. Walka toczy się o pieniądze rzędu 100 miliardów $ w skali 20 lat. 1971 - 1985 Intensywny rozwój teorii związanych z RDM. RDM stał się ulubionym konikiem grup teoretycznych na całym świecie (kilka tysięcy publikacji). 1975-1989 Intensywny rozwój technologii opartych o RDM. Kariera wielu systemów zarzadzania relacyjnymi bazami danych, takich jak: DB2, Oracle, Ingres, dBase; następnie Informix, Progress, Sybase, i wiele innych. Szerokie zastosowania na skalę przemysłową, ogromna popularność i pieniądze. Model relacyjny - rys historyczny – cd. 1975 Pierwsze publikacje na temat języka Sequel, poprzednika SQL, autorów z IBM (Chamberlin). 1986 Pierwszy standard języka SQL zaaprobowany przez ANSI. Wykazuje liczne odstępstwa od RDM. 1989, 1992 Następne standardy SQL. 1987 E.F.Codd, sfrustrowany odstępstwami od RDM, publikuje słynne 12 reguł “prawdziwego” systemu relacyjnego. Żaden z istniejących systemów nie jest “prawdziwym” systemem relacyjnym. Ma rację, ale nikt tym się nie przejmuje. “Prawdziwego” systemu relacyjnego chyba już nigdy nie będzie. 1985-2006 Intensywna krytyka wad RDM. Świat naukowy zredukował swoje zainteresowanie RDM praktycznie do zera. Świat komercyjny rozbudowuje systemy bez jakiejkolwiek troski o ideologię RDM. Model relacyjny - podstawowe założenia Baza danych składa się z prostokątnych tablic, każda o określonej liczbie kolumn i dowolnej liczbie wierszy. Takie tablice sa okreslane jako relacje. Wiersz relacji jest nazywany krotką. Elementy krotek są atomowe (niepodzielne) i są bezpośrednio wartościami. Niedozwolone jest tworzenie wskaźników prowadzących do innych krotek. Niedozwolone jest, aby element krotki był zbiorem wartości. Jest to tzw pierwsza forma normalna (1NF). Porządek krotek nie ma znaczenia. Porządek kolumn również nie ma znaczenia. Jakiekolwiek cechy odnoszące się do reprezentacji relacji lub usprawnienia dostępu do relacji są ukryte przed użytkownikiem. Model relacyjny - podstawowe założenia- cd. Relacje i ich kolumny posiadają nazwy. Nazwy kolumn są określane jako atrybuty. Każda relacja posiada wyróżniony atrybut lub grupę atrybutów określną jako klucz. Wartość klucza w unikalny sposób identyfikuje krotkę relacji. Jakakolwiek inna identyfikacja krotki (np. wewnętrzny identyfikator) jest niewidoczna dla użytkownika. Manipulacja relacjami odbywa się w sposób makroskopowy przy pomocy operatorów algebry relacji lub innego tego rodzaju języka. Przetwarzanie “krotka po krotce” jest niedozwolone. Zalety i wady relacyjnych baz danych Zalety Oparte na solidnych podstawach teoretycznych, zainteresowanie świata nauki oraz biznesu Stabilna pozycja na rynku Optymalizacja zapytań Niezależność od języka programowania Możliwość zarządzania wielką ilością danych Możliwość stosowania złożonych kryteriów wyszukiwania Możliwość dostępu do danych fizycznych Dobre mechanizmy kontroli dostępu do danych, mechanizmy perspektyw Wady Brak środków hermetyzacji i modularyzacji (brak oddzielenia implementacji od specyfikacji) Ograniczona podatność na zmiany Mało naturalna reprezentacja danych Brak środków do przechowywania informacji proceduralnych Z góry ustalony konstruktor, brak złożonych obiektów Trudne odwzorowanie złożonych relacji Niezgodność modelu pojęciowego z modelem implementacyjnym Niezgodność z modelem używanym przez języki ogólnego przeznaczenia Ważnym pojęciem w bazie danych jest dziedzina danych Przykład: Nie wystarczy stwierdzenie, że dane mają postać liczb całkowitych. Dziedzina precyzuje to dokładniej. Nazwa Typ danych Format danych Numery telefonów lokalnych Ciąg cyfr ddd-dd-dd* Numery PESEL Ciąg cyfr ddddddddd* Wiek pracowników Ciąg cyfr dd* Opis Zbiór siedmiocyfrowych prawidłowych numerów telefonów na obszarze obowiązywania tego samego numeru kierunkowego w Polsce Zbiór poprawnych jedenastocyfrowych numerów PESEL Liczby całkowite z przedziału <15,80> Bazy danych - transakcyjne i analityczne Porównanie modeli przetwarzania danych Kryterium Zastosowanie Rodzaj użytkowników Liczba użytkowników Operacje wykonywane na danych Cel wykonywanych operacji Szczegółowość danych Rząd wielkości bazy danych Przetwarzanie OLTP Przetwarzanie OLAP Prowadzenie biznesu Podejmowanie decyzji Szeregowi pracownicy, Analitycy, menedżerowie menedżerowie średniego szczebla wyższego szczebla Duża Stosunkowo niewielka Zapis, odczyt Odczyt Wprowadzanie, modyfikowanie Szczegółowe analizy, danych wyszukiwanie informacji Dane szczegółowe, brak agregatów Gigabajty Agregaty, podsumowania, niewielka ilość danych szczegółowych Gigabajty, Terabajty Diagram encji i relacji jako jeden z ważnych składników koncepcji relacyjnej bazy danych session id user time data users session user password function privilege bases user base grants mask Przykładowa struktura fragmentu projektu medycznej bazy danych Proces wprowadzania danych do bazy za pośrednictwem wypełnianych przez użytkownika „formatek ekranowych”. Baza danych na przykładzie Microsoft Access • płaszczyzna projektanta • płaszczyzna użytkownika – wyszukiwanie, modyfikacja, dopisywanie, usuwanie danych – w obu płaszczyznach • na podstawie mechanizmów płaszczyzny projektanta możliwe jest tworzenie płaszczyzny użytkownika (interfejs użytkownika) Wyszukiwanie danych • filtr – doraźnie • kwerenda – trwale Relacyjna Baza Danych Autor Książka Wydawnictwo imię tytuł nazwa nazwisko ISBN adres ... rok wyd ... adres opis Relacyjna Baza Danych Książka Autor imię tytuł ISBN Henryk Sienkiewicz Potop 12234ee4 Adam Quo Vadis 334we2 Pan Tadeusz 23we45 nazwisko Mickiewicz Uczeń Dane osobowe Hobby imię nazwa nazwisko ...... opis ..... Oceny ocena opis Przedmiot nazwa opis Rzeczywiste relacyjne bazy danych bywają dosyć rozbudowane W bazie danych może być wyróżniona warstwa aplikacji i warstwa prezentacji Najważniejsze narzędzie baz danych: SQL Structured Query Language, czyli strukturalny język zapytań SQL jest wszechstronnym językiem baz danych. Obejmuje polecenia związane z definiowaniem danych, tworzeniem zapytań oraz aktualizacją danych. Pełni jednocześnie rolę języka DDL i języka DML. Standard SQL umożliwia definiowanie perspektyw dla baz danych, określanie zabezpieczeń i metod uwierzytelniania, definiowanie więzów integralności oraz sterowanie wykonywaniem transakcji. SQL: podstawowy format zdania select select [all | distinct] expression {, expression} from table_name [corr_name] {.table_name [corr_name] } [where search_condition1] [group by column {, column}] [having search_condition2] Zapytania SQL moga być bardzo złożone. Semantyka jest dość często niejasna (“SQL puzzles”). Oprócz zdania select SQL wprowadza: • zdania definicji danych • zdania manipulacji danymi (update, insert, delete ) Mimo to, SQL nie jest pełnym językiem programowania, w związku z czym wymaga: • Zanurzenia zdań SQL w uniwersalny język programowania • Zdań pośredniczących, które umożliwiają takie zanurzenie Zakładamy tablice: PRACOWNIK( NR, NAZWISKO, ZAROBEK, NRDZ) DZIAŁ( NRDZ, NAZWA, LOKALIZACJA ) SQL: proste zdania select Podaj nazwiska pracowników zarabiających mniej niż 1000: select NAZWISKO from PRACOWNIK where ZAROBEK > 1000 Podaj nazwiska i nazwy działów pracowników pracujących w Radomiu: select P.NAZWISKO, D.NAZWA from PRACOWNIK P, DZIAŁ D where P.NRDZ = D.NRDZ and D.LOKALIZACJA = ‘Radom’ Semantyka Zaczynamy od from: Specyfikujemy tablice do przeszukania oraz ew. ich lokalne synonimy (ściślej: zmienne krotkowe). Tworzymy iloczyn kartezjański tablic. Następnie where: Usuwamy z tablicy lub iloczyny kartezjańskiego takie krotki, które nie spełniają warunku. Na końcu select: Bierzemy z każdej wynikowej krotki to, co jest potrzebne. SQL Na bazie tego prostego pomysłu utworzono gigantyczną odwróconą piramidę (setki stron specyfikacji) Przykład interfejsu użytkownika w klinicznej bazie danych „Neonatologia” Co to jest niezgodność pomiędzy modelem pojęciowym i modelem implementacyjnym? Celem twórcy bazy danych jest uzyskanie jak najmniejszej luki pomiędzy myśleniem o rzeczywistości a myśleniem o danych i procesach, które zachodzą na danych. Mentalna percepcja świata rzeczywistego Model pojęciowy Schemat relacyjnej struktury danych W modelu relacyjnym model pojęciowy jest budowany w oparciu o model encja-związek. Model encja-związek stara się odwzorować świat rzeczywisty, lecz nie może być bezpośrednio zaimplementowany, gdyż relacyjna baza danych na to nie pozwala. W rezultacie: - schemat struktury danych gubi znaczną część semantyki danych, - użytkownik musi kojarzyć dane explicite w zdaniach SQL, co zwiększa ich złożoność i powoduje wzrost czasów wykonania. Niezgodność modelu pojęciowego i relacyjnego(1) Departament NrD NazwaD Lokacja * Zatrudnia Pracownik Pracuje_w NrPrac Zawód * Wypłaty * Szef Osoba Nazwisko Adres * RokUrodz Mama Dziecko Dziecko Tata Ile schematów relacyjnych potrzeba, aby zaimplementować tę strukturę? Departament( NrD, NazwaD ) Lokacja( NrLokacji, NazwaLok, NrD ) Szef( NrD, NrPrac) Pracownik( NrPrac, NrOsoby) PracDept( NrPrac, NrD) Zawód( IdZawodu, NazwaZawodu, NrPrac ) Wypłata ( IdWypłaty,Wysokość, NrPrac ) Osoba( NrOsoby, Nazwisko, RokUrodz ) Adres( NrAdresu, Miejsce, NrOsoby ) Mama( NrOsoby, NrOsoby ) Tata( NrOsoby, NrOsoby ) Czytelna pojęciowa struktura zamieniła się na 11 nieczytelnych schematów relacji Pojawiły się nowe atrybuty - klucze Semantyka wyrażona poprzez liczności została częściowo zgubiona Semantyka dziedziczenia została zgubiona Odtworzenie semantyki - użytkownik musi zrobić explicite poprzez zapytania SQL Niezgodność modelu pojęciowego i relacyjnego(2) Firma Nazwa Miejsce * FZ Zatrudnienie Wypłata * Ocena * PZ Osoba Nazwisko Imię * Adres * Pracownik Zawód * Firma( NrF, Nazwa) Lokal( NrF, Miejsce) Zatrudnienie( NrF, NrP) Pracownik( NrP, NrOs) Oceny( NrOceny, Ocena, NrF, NrP) Dochód( NrDochodu, Wypłata, NrF, NrP) Osoba( NrOs, Nazwisko) Wyszkolenie( Zawód, NrP) Imiona( NrOs, Imię) Adresy( NrOs, Adres) Garby modelu relacyjnego Z góry ustalony konstruktor typu danych (relacja), rozszerzany ad hoc przez wytwórców systemów relacyjnych. Brak złożonych obiektów. Informacje o pojęciach wyróżnialnych i manipulowalnych w rzeczywistości są rozproszone w krotkach wielu tablic. Skojarzenie tych informacji następuje w zapytaniach SQL, przez co wzrasta ich złożoność oraz czas wykonania (optymalizacja zapytań tylko częściowo to rozwiązuje). Brak wyspecjalizowanych środków do realizacji powiązań pomiędzy danymi. Brak środków do przechowywania danych proceduralnych. Wszelkie informacje wykraczające poza strukturę relacyjną (perspektywy, procedury bazy danych, BLOBy, aktywne reguły,...) są implementowane ad hoc. Brak środków hermetyzacji i modularyzacji: wykroczenie przeciwko zasadom abstrakcji i oddzielenia implementacji od specyfikacji. Brak uniwersalności środków dostępu do danych, powodujący konieczność zanurzenia ich w uniwersalne języki programowania, znacznie niższego poziomu; niezgodność impedancji (impedance mismatch). Niespełnione obietnice przetwarzania makroskopowego (wiele-w-tym-samym-czasie); powrót do niewygodnej techniki jeden-w-tym-samym-czasie. Niespójne mechanizmy wartości zerowych, brak wariantów, brak porządku w relacjach. Obiektowe bazy danych Teza: bazy danych zawsze były obiektowe, chociaż nie realizowały wszystkich pojęć obiektowości, takich jak klasy, metody i dziedziczenie. Podstawowy wyróżnik: trwałe obiekty + identyfikatory obiektów Zmniejszenie dystansu pomiędzy fazami analizy, projektowania i implementacji Zwiększenie poziomu abstrakcji w myśleniu programistów i użytkowników Uwzględnienie informacji proceduralnej (metody) Stworzenie nowego potencjału dla ponownego użycia Docelowa tendencja - ortogonalna trwałość: Programista podczas programowania nie musi nic wiedzieć o bazie danych, operując na jej obiektach tak jak na obiektach/zmiennych programu. Baza danych powinna być niewidoczna (przezroczysta). Co zdarzyło się w systemach po przejściu na technologie obiektowe? Część informacji semantycznej, która tradycyjnie tkwiła w bibliotekach, typach, aplikacjach, modułach została umieszczona i usystematyzowana w ramach klas. Relacyjna struktura aplikacji Obiektowa struktura aplikacji Powiązane obiekty Pasywne dane (relacje) ... ... ... ... ... ... ... ... ... ... Klasy i typy ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... Biblioteki procedur i funkcji Słowniki, katalogi Typy Moduły aplikacyjne Procedury bazy danych, perspektywy, reguły Biblioteki procedur i funkcji Słowniki, katalogi ... ... ... Moduły aplikacyjne Procedury bazy danych, perspektywy, reguły Dodatkowe zalety baz obiektowych Klasyczne funkcje SZBD: Zarządzanie pamięcią zewnętrzną Zarządzanie schematem Sterowanie współbieżnością Zarządzanie transakcjami Odtwarzalność Przetwarzanie zapytań Kontrola dostępu Do tych funkcji dołożone są: Złożone obiekty Typy definiowane przez użytkownika Tożsamość obiektów Powiązania pomiędzy obiektami Hermetyzacja, interfejsy do obiektów Typy i/lub klasy oraz hierarchia dziedziczenia Przełanianie/przeciążanie/późne wiązanie Kompletność obliczeniowa (pragmatyczna) Manifest obiektowych baz danych M.Atkinson, F.Bancilhon, D.DeWitt, K.Dittrich, D.Maier, S. Zdonik Cechy obowiązkowe złożone obiekty przesłanianie z dynamicznym wiązaniem tożsamość obiektów rozszerzalność hermetyzacja kompletność obliczeniowa dziedziczenie zarządzanie pamięcią pomocniczą typy lub klasy współbieżność, odtwarzanie trwałość udogodnienia dla zapytań ad hoc Cechy opcyjne Cechy otwarte wielokrotne dziedziczenie, kontrola typów, rozproszenie, transakcje projektowe, wersje paradygmat programowania, metody reprezentacji obiektów, system typów, jednolitość (kompatybilność) Mimo licznych zalet obiektowe bazy danych są ciągle w fazie embrionalnej Jak budujemy bazę danych? • w sposób przyrostowy - dla każdego elementu osobna baza, potem próba łączenia - wada – brak globalnej wizji (redundancja, niespójność) • od razu jako zintegrowany system Budując bazę, bierzemy pod uwagę: • jeden system (model) reprezentacji danych np. model relacyjny • współbieżny dostęp do bazy przez wielu użytkowników • ochrona danych • niezależność (zależność) określonych danych Aplikacje korzystają z bazy: • poprzez model danych – zbiór zasad dotyczących struktur danych, – warunki wspomagające utrzymanie zgodności z rzeczywistością • system zarządzania bazą danych – zbiór narzędzi dających dostęp do danych i ich aktualizacji – np. wyszukiwanie danych, ochrona i dostęp do danych, konta użytkowników Modelowanie danych • specyfikacja wymagań użytkowników • określenie modelu systemowego • konfiguracja sprzętu i oprogramowania projektowanie bazy ~ 80% czasu tworzenia implementacja bazy ~ 20% czasu tworzenia Zaawansowane funkcje baz danych… • • • • • • Transakcje Replikacja bazy danych Procedury i wyzwalacze [triggery] Klucze obce i więzy integralności Podzapytania Wielowątkowość i blokowanie Popularne serwery sieciowych baz danych NAZWA PRODUCENT LICENCJA MySQL MySQL AB Open source PostgreSQL PostgreSQL Open source Group MsSQL Microsoft Closed source ODBC Microsoft Closed source Oracle Oracle Closed source Hurtownia danych TSA Dane operacyjne Hurtownia Danych Składnice danych ODS Zasilanie hurtowni: czyszczenie, transformacja, ładowanie, itd. Dane zewnętrzne Warstwa danych właściwych Metadane Dystrybucja danych Użytkownicy końcowi Schemat gwiazdy Schemat płatka śniegu Integracja danych Hurtownia danych Import/eksport metadanych Adaptery Load Administrowanie Usługi metadanych Repozytorium metadanych Usługi transportowe Extract Menedżer mapowania danych Bazy danych, pliki Inne aplikacje Indeksacja bazy danych Sposób rozwijania zapytań do bazy danych SQL Nazwa Sieciowa Adres IP Dysk Zapytania do bazy danych oraz odpowiedzi Typowa interakcja „klient-serwer” w Internecie Pośrednie sięganie do internetowej bazy danych Model trójwarstwowy sieciowej bazy danych Protokół HTTP Używanie sieciowej bazy danych z wykorzystaniem apletów Javy JDBC = (Java Data Base Connectivity) Dla potrzeb medycyny bardzo często wykorzystywane są multimedialne bazy danych, zawierające obok danych tekstowych i liczbowych także zapisy różnych danych multimedialnych rejestrowanych u pacjenta – w szczególności różnych obrazów medycznych. Najbardziej znanym przykładem są tu bazy PACS Mają one różne zastosowania Przykład japońskiego systemu typu PACS Przykład multimedialnej medycznej bazy danych (mammografia) Przykład indeksacji (tworzenia opisu przypadku) w multimedialnej bazie danych. Opisy takie sporządza się w celu łatwego wyszukiwania danych. Ręczne sporządzanie takich opisów jest bardzo czasochłonne podczas gdy automatyzacja tej operacji jest bardzo trudna. Operacyjne bazy danych Inne źródła danych Architektura złożonej hurtowni danych Pozyskiwanie Transformacja Wprowadzanie HURTOWNIA DANYCH DANE SZCZEGÓŁOWE Sukcesywne generowanie i odświeżanie zestawień Przepisywanie zapytań, kontrola poprawności Ekstrakcja METADANE Hurtownie tematyczne (Data Marts) ZESTAWIENIA Narzędzia analityczne Wyszukiwanie obrazów w multimedialne bazie danych bez angażowania czynnika ich automatycznego rozumienia Różne uproszczone schematy wyszukiwania Przykładowe interfejsy użytkownika stosowane w systemach wyszukiwania obrazów VISUALSEEK VIDEOQ Przykład odpowiedzi systemu wyszukiwania obrazów Automatyczna anotacja obrazów na bazie procesu uczenia Podział obrazu na regiony będący kluczem do procesu auto-anotacji Obraz poddawany auto-anotacji Obraz podzielony na regiony do auto-anotacji Różnej jakości automatyczna anotacja przykładowych obrazów