Współczesne systemy baz danych dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu Zakład Systemów Informatycznych i Mechatronicznych (SIMT) 2019
Prowadzący Dr hab. inż. Andrzej Czerepicki E-mail: a.czerepicki@wt.pw.edu.pl http://www2.wt.pw.edu.pl/~a.czerepicki/ pok. 221 NK (II p.) Dyżury: wt. 13:15-14:00, śr. 9:15 10:00
Sprawy organizacyjne Stopień znajomości zagadnień informatycznych, w tym BD Poziom umiejętności programowania oraz znajomości języków programowania Obszary zainteresowań w zakresie ewentualnego zastosowania BD w doktoracie
Plan kursu Charakterystyki i przeznaczenie baz danych Rodzaje współczesnych systemów baz danych Podstawy relacyjnych baz danych Język SQL Podstawy programowania aplikacji bazodanowych Podstawy bezpieczeństwa oraz administrowania bazami danych
Plan wykładu Definicja systemu baz danych Modele danych Relacyjne bazy danych Język SQL
Baza danych Baza danych (ang. Database, DB) zbiór uporządkowanych informacji przechowywanych w postaci cyfrowej Database
Charakterystyki baz danych Trwałość Dane są przechowywane w pamięci stałej, zawartość której nie jest kasowana po wyłączeniu komputera Dane są przechowywane przez wiele lat Złożoność Baza danych przechowuje informacje o obiektach oraz powiązania między nimi Struktury danych są złożone Powiązania są również złożone Ograniczenia na przechowywane dane Wielkość Dane nie mogą być umieszczone w RAM Stosowana jest pamięć zewnętrzna Rozmiar danych nie pozwana na liniowe przeglądanie ich przez użytkowników Niezależność Dane istnieją niezależnie od użytkowników oraz aplikacji ich wykorzystujących
System zarządzania bazą danych System zarządzania bazą danych (SZBD, ang. Database Management System, DBMS) oprogramowanie realizujące funkcje dostępu do bazy danych, zarządzanie danymi oraz zapewniające bezpieczeństwo danych System baz danych SBD = BD + SZBD System baz danych (SBD) SZBD BD
Zadania SZBD Użytkownik SZBD System plików Aplikacja Bezpieczeństwo dostępu Kopia zapasowa
Aplikacja bazodanowa Aplikacja bazodanowa program komputerowy realizujący określone zadanie (algorytmy) oraz wykorzystujący SZBD w celu zapisywania, przetwarzania oraz pobierania danych z BD Aplikacje systemowe: zarządzanie BD Aplikacje stosowane: zorientowane na końcowego użytkownika
Użytkownik SBD Użytkownik aplikacji bazodanowej (może nie wiedzieć że BD istnieje) Analityk systemowy Korzysta z gotowych narzędzi oraz zgromadzonych danych Fachowcy od informatyki: Administrator bazy danych Operator kopii zapasowych Programista aplikacji bazodanowej Administrator sieci lub serwera na którym jest zainstalowana baza danych Etc.
Sterownik BD System informatyczny bazodanowy System informatyczny Aplikacja WWW System bazy danych (SBD) Użytkownik aplikacji bazodanowej Aplikacja Desktop Kli SZBD BD Aplikacja Mobilna SBD = Baza danych + System zarządzania SIBD = SBD + Aplikacja + Użytkownik
Rodzaje baz danych Lokalne Działają w ramach jednego stanowiska Z reguły obsługują jednego użytkownika Sieciowe SZBD działa w sieci na serwerze Baza z reguły jest dostępna dla wielu użytkowników Rozproszone Baza jest utrzymywana na wielu serwerach sieciowych Dostęp wielu użytkowników
Modele baz danych Baza danych przechowuje informacje o obiektach świata rzeczywistego (ich uproszczone abstrakcje) model bazy danych - sposób odwzorowania obiektów świata rzeczywistego na struktury i powiązania w BD Student Analiza obiektowa Imię Nazwisko Grupa Rok Świat rzeczywisty Grupa Wykładowca Model (abstrakcja)
Elementy modelu danych Struktury danych W jakim formacie są przechowywane dane w bazie (tabela, graf, drzewo, lista, etc.) Operacje na danych Dodawanie, usuwanie, edycja, przeglądanie (tzw. CRUD) Nawigacja (np. w grafie lub drzewie) Ograniczenia Rekord BD musi zawierać określone wartości (ograniczenie dziedziny) Wartość pola nie może być pusta Krawędź grafu musi łączyć dwa wierzchołki, etc.
Ewolucja modeli danych Przed relacyjnymi Hierarchiczny, sieciowy, etc. RELACYJNY MODEL DANYCH Modele NoSQL Grafowy, obiektowy, dokumentowy, kolumnowy, etc.
Hierarchiczny model danych Koncepcja kartoteki hierarchia przodek potomek (struktura drzewa) Administracja Rektorat Dziekani Uczelnia Edukacja Wydział Transportu Wydział Elektryczny Studia stacjonarne Studia niestacjonarne Jan Kowalski Anna Nowak
Hierarchiczny model przykład
Hierarchiczny model danych (c.d.) Zalety dobrze odzwierciedla wybrane struktury świata rzeczywistego (np. organizacje, system plików itp.) szybkie wyszukiwanie od góry w dół Wady jeden obiekt należy tylko do jednej kategorii Dobrze się nadaje do systemu plików ale co z wykładowcą który może prowadzić zajęcia na kilku wydziałach?! problemy z implementacją innych niż rodzicpotomek zależności Np. powiązania pomiędzy przedmiotami na uczelni
Sieciowy model danych Rozwinięcie modelu hierarchicznego o związki pomiędzy elementami w różnych gałęziach (spójny graf vs. drzewo) Zalety większa elastyczność Wady większe problemy z zarządzaniem oraz niższa wydajność, skomplikowane procedury wyszukiwania
Sieciowy model danych - przykład
Obiektowy model danych Klasa szablon do tworzenia obiektów o identycznych cechach oraz zachowaniu np. Student { Imię, Nazwisko, NumerAlbumu } Obiekt egzemplarz pewnej klasy Jan Kowalski : Student o konkretnych cechach Imię := Jan, Nazwisko := Kowalski, NumerAlbumu := 12345 Dziedziczenie cech klas Student jest klasą pochodną klasy Osoba i ma cechy Imię i Nazwisko Powiązania pomiędzy obiektami Student należy do Grupy
Obiektowy model danych - przykład
Obiektowy model danych (c.d.) Zalety: możliwość przechowania obiektów w bazie w takiej postaci jak są one przetwarzane w programie Ścisła integracja z kodem programu Wady: Problemy współbieżnego dostępu do danych przez różnych użytkowników Problemy nadania uprawnień dostępu Brak standardowego języka programowania
Modele danych NoSQL Not Only SQL współczesny trend rozwoju BD Przesłanki: znaczący wzrost liczby użytkowników BD (systemy o skali ogólnoświatowej), liczby danych oraz wymagań Założenia: odejście od modelu relacyjnego Rodzaje baz danych NoSQL: grafowe, kluczwartość, kolumnowe, dokumentowe, etc.
Grafowy model danych Struktura: graf (wierzchołki, krawędzie, atrybuty) Operacje: CRUD + wyszukiwanie ścieżki
GBD model połączeń w komunikacji miejskiej
Grafowy model danych (c.d.) Zalety: Naturalna forma reprezentacji struktury wielu systemów transportowych Wbudowane operacje wyszukiwania ścieżek w grafie Brak sztywnych schematów Wady: Ograniczony zakres zastosowania Małe doświadczenie dot. wykorzystania w komercyjnych systemach
Wybrane implementacje grafowego modelu danych
Model key-value
Model key-value (c.d.) Wartości danych (ang. values) są przechowywane w prostych strukturach (tablice, listy) Adresacja danych odbywa się poprzez klucze (ang. keys) Zalety: prosta struktura i wysoka szybkość działania Wady: problemy z implementacją skomplikowanych semantycznie struktur danych
Wybrane implementacje modelu key-value https://redis.io InfinityDB
Kolumnowy model danych Struktura tabeli w bazie danych nr_rej pozycja_gps prędkość Przechowanie danych wierszami WB4534 (52.2328, 20.9093) 55,2 Przechowanie danych kolumnami WB4534 (52.2328, 20.9093) 55,2 Umieszczenie rekordów danych na nośniku fizycznym
Kolumnowy model danych (c.d.) Podstawową jednostka przechowania danych jest tabela (jak w relacyjnych BD) Dane fizycznie są przechowywane w kolumnach (nie wierszach) Daje to możliwość: Bardzo szybkiego odczytu danych z wybranej kolumny Umieszczenia tabeli na różnych serwerach Efektywnej kompresji danych kosztem złożonych algorytmów zapisu Przykład: MonetDB, MS SQL Server Column Index
Indeksy kolumnowe
Wybrane implementacje kolumnowego modelu danych
Dokumentowy model danych Baza danych przechowuje dokumenty: XML, JSON, BSON, etc. Dokumenty stanowią hierarchiczną strukturę Wartości Listy i kolekcje (mapy) Dokumenty są opisywane za pomocą schematów
Dokumentowy model danych
Cechy dokumentowego modelu Obiekty należące do listy, mogą posiadać odmienna strukturę Pojedyncze dokumenty mogą być powiązane przez referencje Dokumenty mogą zawierać włożone dokumenty Dokumenty są indeksowane w celu przyspieszenia wykonania operacji
Wybrane implementacje dokumentowego modelu danych
Relacyjny model danych Najbardziej rozpowszechniony model danych Podstawy matematyczne: teoria zbiorów Dane są przechowywane w tabelach Tabele są połączone ze sobą Student należy Grupa Imię Nazwisko NumerGrupy Przedmiot studiuje Indeks wykłada Wykładowca
Tabele Dane są przechowywane w tabelach Każda tabela ma własną nazwę niepowtarzalną w skali całej BD Kolumny tabeli przechowują atrybuty (pola) obiektów Każdy wiersz (syn. rekord) przechowuje informacje o jednym obiekcie (instancja) Indeks Imię Nazwisko NumerGrupy 262345 Jan Nowak T5 274568 Alicja Kowalska T5 258905 Piotr Lesiak T2 Tabela STUDENT
Kolumny tabeli Kolumna = atrybut obiektu (pole klasy) W kolumnie Imię są przechowywane imiona studentów Rodzaj wartości przechowywanych zależy od atrybutu: Nazwisko: Tekst Grupa: Tekst Indeks: Liczba całkowita NumerGrupy: tablica char[2] Etc. Tabela zawiera przynajmniej jedną kolumnę Liczba kolumn w tabeli nie jest ograniczona
Wybrane typy danych kolumn MS SQL Server varchar, nvarchar char(n) int, numeric decimal, real bit datetime, date Odpowiednik w Java String char[n] int, long double, float boolean Date
Rekordy tabeli Rekordy tabeli przechowują informacje o obiektach (w programowaniu: egzemplarze klas) Jeden rekord = 1 obiekt Student: { Jan, Nowak, T5, 262345 } Kolejność rekordów w tabeli nie ma znaczenia Tabela może nie zawierać żadnych rekordów Liczba rekordów w tabeli nie jest ograniczona
Klucz własny tabeli Kolumna przechowująca wartości jednoznacznie identyfikujące obiekt nazywa się kluczem własnym tabeli Student: kolumna Indeks Tabela nie może zawierać dwóch rekordów o tej samej wartości w kolumnie klucza własnego Klucz własny (identyfikator)
Klucz obcy tabeli W tabeli STUDENT kolumna NumerGrupy przechowuje wartości z kolumny NumerGrupy tabeli GRUPA Kolumna NumerGrupy w tabeli STUDENT jest kluczem obcym Wartości klucza obcego mogą się powtarzać Wiele studentów należy do tej samej grupy Wartości klucza obcego muszą pochodzić ze zbioru wartości klucza głównego innej tabeli Dopuszcza się wartość specjalna NULL (student nie należy do żadnej grupy)
Powiązania tabel Relacje pomiędzy tabelami są budowane za pomocą powiązań kluczy własnych z kluczami obcymi Grupa składa się ze Student należy do. Kolumna Student.NumerGrupy może zawierać tylko te wartości, które występują w kolumnie Grupa.NumerGrupy
Przykład struktury RBD Student należy do jednej grupy Grupa składa się z wielu studentów Grupa należy do jednego wydziału Wydział składa się z wielu grup
Komunikacja z bazą danych - SQL Użytkownik potrzebuje interfejsu umożliwiającego wykonanie operacji zapisu, odczytu oraz modyfikacji danych w bazie Uniwersalnym standardem komunikacji z bazą danych stał się język SQL (ang. Structured Query Language) Zbiór zapytań (kwerend) Użytkownik określa w zapytaniu co chce uzyskać, a nie jak (deklaratywny język programowania) Jest uniwersalnym językiem programowania stosowanym przez większość RBD
Interakcja z RBD za pomocą SQL Polecenie SQL (tekst) System bazy danych SZBD BD Wynik: - Tabela - Pojedyncza wartość - Brak
Rodzaje poleceń SQL DML data manipulation language DDL data definitione language DCL data control language
Podstawowe polecenia DML języka SQL INSERT UPDATE DELETE SELECT Wstawianie danych Modyfikacja danych Usuwanie danych Odczyt danych
Przykład polecenia SELECT SELECT Nazwisko, Imie, Indeks FROM STUDENT WHERE NumerGrupy > 'T2' AND NumerGrupy<'T6' AND Imie LIKE '_a%' ORDER BY Imie DESC Kolumny (w dowolnej kolejności) Tabela (lub lista tabel) Warunek, który muszą spełniać znalezione rekordy Sortowanie wyniku
Przykład polecenia INSERT Tabela Kolumny INSERT INTO STUDENT ( Imie, Nazwisko, Indeks, NumerGrupy ) VALUES ( 'Mikołaj', 'Nowak', 26523, 'T5' ) Wartości (zgodnie z kolejnością kolumn)
Przykład polecenia UPDATE Tabela UPDATE STUDENT SET Imie = 'Piotr', Nazwisko = 'Kowalski' WHERE Indeks=26523 Kolumny modyfikowane Rekordy, których dotyczy modyfikacja
Przykład polecenia DELETE Tabela DELETE FROM STUDENT WHERE Indeks BETWEEN 26500 AND 27000 AND GRUPA='T7' Warunek, który muszą spełnić rekordy usuwane
Infrastruktura aplikacji bazodanowej Aplikacja Interfejs wprowadzania danych Interfejs prezentacji danych Logika aplikacji SQL SBD Raporty
Interfejs użytkownika aplikacji bazodanowej Język SQL nie posiada wbudowanych mechanizmów wprowadzania / wyświetlania danych Aplikacja bazodanowa musi realizować interfejs użytkownika Opracowanie własnego interfejsu Wykorzystanie interfejsu udostępnianego przez SBD: Oracle Forms Microsoft Access Etc.
Raporty Większość współczesnych SBD posiadają zaawansowane mechanizmy tworzenia raportów ( kreatory ) Microsoft Reporting Services Oracle Reporting
Bazy danych przetwarzania transakcyjnego OLTP ang. Online Transactional Processing Charakteryzują się dużą liczbą jednocześnie wykonywanych transakcji Wiele równolegle działających użytkowników Operacje wstawiania, modyfikacji oraz usuwania danych Operacje są stosunkowo proste oraz krótkie Domyślny tryb działania większości współczesnych BD
Bazy danych przetwarzania analitycznego OLAP ang. Online Analytical Processing Bazy danych zorientowane na przechowanie (bardzo) dużych zbiorów danych (hurtownie) Przeznaczenie pozyskiwanie informacji zagregowanych, trendów oraz wniosków na bazie zgromadzonych w bazie faktów Operacje wstawiania danych są rzadkie i są wykonywane grupowo (np. raz na koniec miesiąca) Priorytetową operacją jest operacja wybierania danych
Hurtownia danych Hurtownia danych (ang. Data Warehouse) bardzo duża baza danych zawierająca dane historyczne oraz bieżące Dane są uzupełniane okresowo W trybie codziennym dane są dostępne tylko do odczytu Dane mogą być zagregowane (przechowanie podsumowań zamiast danych bieżących) Dane są pogrupowane tematycznie
Architektura hurtowni danych
Wielowymiarowy model danych FAKTY informacje podlegające analizie, charakteryzują się ilościowo za pomocą miar Cena, liczba sztuk, etc. WYMIARY hierarchia kategorii wg których odbywa się analiza Lokalizacja (np. wg sklepów -> miast -> państw) Czas (np. Rok, Miesiąc) inne
Fakty i wymiary (przykład) Samochód Wymiar Lokalizacja Sprzedaż Marka samochodu Miasto Data sprzedaży Cena jedn. Liczba sztuk Fakty Czas Wymiar Wymiar
Reprezentacja danych w postaci tzw. kostki analitycznej Źródło: http://wazniak.mimuw.edu.pl/index.php?title=zsbd-2st-1.2-w12.tresc-1.1-slajd21
Rozwijanie danych Źródło: http://wazniak.mimuw.edu.pl/index.php?title=zsbd-2st-1.2-w12.tresc-1.1-slajd21
Zwijanie danych Źródło: http://wazniak.mimuw.edu.pl/index.php?title=zsbd-2st-1.2-w12.tresc-1.1-slajd21
Wycinanie danych Źródło: http://wazniak.mimuw.edu.pl/index.php?title=zsbd-2st-1.2-w12.tresc-1.1-slajd21
Popularne współczesne relacyjne SBD Komercyjne ORACLE Microsoft SQL Server IBM DB2 Sybase Enterprise Server Informix (IBM) Niekomercyjne MySQL Firebird PostgreSQL
Problemy relacyjnych baz danych Słaba skalowalność => niska wydajność przetwarzania bardzo dużych zbiorów danych RDBMS są systemami skalowalnymi w pionie: wynika to z konieczności zapewnienia referencyjnej integralności danych (klucze) Zwiększenie częstotliwości CPU daje większy efekt niż dołożenie kolejnego Problemy podziału zadań współbieżnego przetwarzania danych
Stopień powiązania danych Porównanie wybranych SZBD względem powiązań danych Bazy danych grafowe Bazy danych kolumnowe Bazy danych klucz - wartość 90% Rozmiar przechowywanych danych
Twierdzenie CAP W systemach informatycznych rozproszonych jednocześnie można zapewnić najwyżej dwie z trzech cech: Consistency Integralność danych Availability Dostępność danych odpowiedź systemu na każde zapytanie użytkownika Partition tolerance Partycjonowanie system działa poprawnie po rozdzieleniu na fragmenty
Koncepcja baz danych NoSQL Not Only SQL Databases grupa współczesnych systemów baz danych przeznaczonych do efektywnego przetwarzania dużych zbiorów danych
Analiza SWOT baz danych NoSQL Mocne strony rozproszona architektura, wydajność przetwarzania danych, wysoka skalowalność, obsługa złożonych oraz nieregularnych struktur danych, możliwość asynchronicznego zapisu Perspektywy systemy z duża liczbą użytkowników, wydajna obsługa prostych jednorazowych transakcji, integracja z usługami sieci WWW, perspektywy szybkiego rozwoju jako nowego segmentu baz danych. Słabe strony brak uniwersalnego języka zapytań, brak ogólnie przyjętych standardów, wysokie wymagania sprzętowe, słaba kontrola integralności danych, mały wybór narzędzi do analizy analitycznej. Zagrożenia odczyt niepewnej lub nieaktualnej informacji wyklucza zastosowanie w systemach krytycznych, wysoki koszt realizacji w systemach o mocnych związkach semantycznych danych, względnie krótki czas istnienia na rynku, mała liczba zrealizowanych projektów oraz mniejsze doświadczenie projektantów.
Microsoft SQL Server 2017
Edycje SQL Server 2017
Porównanie edycji SQL Server 2017 Funkcje SQL Server 2017 SQL Server 2017 SQL Server 2017 SQL Server 2017 Enterprise Standard Express Developer Maksymalna liczba rdzeni Bez ograniczeń 24 rdzenie 4 rdzenie Bez ograniczeń Pamięć: maksymalny Maks. dla Maks. dla systemu rozmiar puli buforów na 128 GB 1410 MB systemu operacyjnego wystąpienie operacyjnego Pamięć: maksymalna pamięć podręczna segmentu magazynu kolumn na wystąpienie Pamięć: maksymalna ilość danych zoptymalizowanych pod kątem pamięci na bazę danych Maksymalny rozmiar bazy danych Prawa do użycia produkcyjnego Nieograniczona wirtualizacja w ramach programu Software Assurance Maks. dla systemu operacyjnego Maks. dla systemu operacyjnego 32 GB 352 MB 32 GB 352 MB Maks. dla systemu operacyjnego Maks. dla systemu operacyjnego 524 PB 524 PB 10 GB 524 PB tak tak tak tak
Modele licencjonowania Edycje programu SQL Server 2017 Idealny do... Model licencjonowania Dostępność w handlu Cena licencji Open no level (USD) Enterprise Kompleksowa wydajność o znaczeniu strategicznym na potrzeby wymagających baz danych i analiz biznesowych. Zapewnia najwyższe poziomy usług i wydajności dla aplikacji warstwy 1.* Na rdzeń** Licencjonowanie zbiorowe, hosting $14,256* ** Standard Podstawowe funkcje zarządzania danymi i analiz biznesowych dla aplikacji niemających strategicznego znaczenia, przy minimalnych zasobach IT. Na rdzeń** Licencjonowanie zbiorowe, hosting $3,717*** Serwer + licencja dostępowa**** Licencjonowanie zbiorowe, hosting, sprzedaż detaliczna $931*** Developer Web W pełni funkcjonalna wersja programu SQL Server umożliwiająca programistom ekonomiczne tworzenie, testowanie i prezentowanie aplikacji opartych na oprogramowaniu SQL Server. Bezpieczna, ekonomiczna i wysoko skalowalna platforma danych dla publicznych witryn internetowych. Dostępna jedynie dla innych dostawców usług. Na użytkownika Pobierz bezpłatnie Bezpłatn a - Tylko hosting? Express Bezpłatna podstawowa baza danych idealna do nauki i tworzenia aplikacji klasycznych oraz niewielkich (do 10 GB) aplikacji serwerowych działających w oparciu o dane. - Pobierz bezpłatnie Bezpłatn a
Źródło instalacji https://www.microsoft.com/pl-pl/sqlserver/sql-server-editions-express