Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Podobne dokumenty
Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Internetowe Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Internetowe Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Hurtownie danych. 31 stycznia 2017

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Bazy Danych. dr inż. Roman Ptak Katedra Informatyki Technicznej

Optymalizacja zapytań SQL

1 Instalowanie i uaktualnianie serwera SQL Server

NARZĘDZIA WIZUALIZACJI

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Microsoft SQL Server Podstawy T-SQL

Technologia informacyjna

Model logiczny SZBD. Model fizyczny. Systemy klientserwer. Systemy rozproszone BD. No SQL

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Usługi analityczne budowa kostki analitycznej Część pierwsza.

Microsoft SQL Server 2012 Krok po kroku

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Wprowadzenie do Hurtowni Danych

Administracja bazami danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki Robert.Wrembel@cs.put.poznan.pl

Hurtownie danych - przegląd technologii

Modele danych - wykład V

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Tuning SQL Server dla serwerów WWW

Bazy danych - wykład wstępny

Język SQL, zajęcia nr 1

SQL SERVER 2012 i nie tylko:

Modele danych - wykład V. Zagadnienia. 1. Wprowadzenie 2. MOLAP modele danych 3. ROLAP modele danych 4. Podsumowanie 5. Zadanie fajne WPROWADZENIE

Nowe technologie baz danych

Podstawowe informacje o bazach danych. Technologie Informacyjne

Hurtownie danych. Wstęp. Architektura hurtowni danych. CO TO JEST HURTOWNIA DANYCH

NARZĘDZIA WIZUALIZACJI

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Administracja i programowanie pod Microsoft SQL Server 2000

Plan wykładu. Hurtownie danych. Problematyka integracji danych. Cechy systemów informatycznych

Pojęcie systemu baz danych

Spis treści. Przedmowa

Wykład I. Wprowadzenie do baz danych

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Internetowe bazy danych

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Bazy danych 2. Wykład 1

LITERATURA. C. J. Date; Wprowadzenie do systemów baz danych WNT Warszawa 2000 ( seria Klasyka Informatyki )

Oracle11g: Wprowadzenie do SQL

Ramowy plan kursu. Lp. Moduły Wyk. Lab. Przekazywane treści

Hurtownie danych a transakcyjne bazy danych

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Fizyczna struktura bazy danych w SQL Serwerze

Bazy danych. Dr inż. Paweł Kasprowski

Projektowanie systemów baz danych

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Część I Istota analizy biznesowej a Analysis Services

Wprowadzenie do technologii Business Intelligence i hurtowni danych

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Zapytania, złączenia, optymalizacja zapytań, planowanie zapytań, optymalizacja indeksów.

Systemowe aspekty baz

Pojęcie bazy danych. Funkcje i możliwości.

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Szkolenie autoryzowane. MS 6232 Wdrażanie bazy danych Microsoft SQL Server 2008 R2

Bazy danych i usługi sieciowe

Hurtownie danych i business intelligence - wykład II. Zagadnienia do omówienia. Miejsce i rola HD w firmie

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

Wstęp do Business Intelligence

Baza danych. Modele danych

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Indeksowanie w bazach danych

Programowanie po stronie serwera w SZBD. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

PODSTAWY BAZ DANYCH 13. PL/SQL

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Systemowe aspekty baz danych

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Hbase, Hive i BigSQL

NARZĘDZIA WIZUALIZACJI

Rok szkolny 2015/16 Sylwester Gieszczyk. Wymagania edukacyjne w technikum. ADMINISTROWANIE BAZAMI DANYCH kl. 4c

SQL Server. Odtwarzanie baz danych.

Procesowanie i partycjonowanie Analysis Services od podszewki (300) Adrian Chodkowski Adrian.Chodkowski@outlook.com

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Spis tre±ci. Przedmowa... Cz ± I

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Wprowadzenie do systemów baz danych. Wykład 1

Tworzenie zapytań do Microsoft SQL Server

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

Microsoft SQL Server 2012 : krok po kroku / Patrick LeBlanc. Warszawa, Spis treści

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Projektowanie i programowanie aplikacji biznesowych. wykład 1

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Transkrypt:

Bazy Danych dr inż. Roman Ptak Katedra Informatyki Technicznej roman.ptak@pwr.edu.pl

Plan wykładu 7. 2 Microsoft SQL Server Struktura logiczna systemu Struktura fizyczna systemu Język Transact-SQL Inne systemy baz danych: MySQL, SQLite, PostgreSQL Hurtownie danych Cele i techniki replikacji i fragmentacji danych

Microsoft SQL Server

Microsoft SQL Server Producent: Microsoft Licencja: Microsoft EULA Najnowsza wersja stabilna: 12.00 (IV 2014 r.) Na serwerze MS SQL Server jedna instalacja (instancja) serwera zawiera wiele baz danych. Bazy danych dzielą się na systemowe (jak np. master) i użytkownika. 4

Architektura MS SQL Server 5 źródło: http://it-szkola.edu.pl/upload/kuznia/akademia_bd/main.html

6 Główne składniki silnika bazy danych SQL Server Protokoły Część relacyjna Parser, Optymalizator, Menadżer SQL Menadżer baz danych, Moduł wykonujący kwerendy, Interfejs OLE DB Aparat składowania danych Menadżer transakcji, Menadżer blokad Menadżer indeksów, Menadżer buforowania, SQLOS API Menadżer Wejścia/Wyjścia

MS SQL Server Struktura logiczna Struktura fizyczna 7

8 STRUKTURA LOGICZNA SYSTEMU MS SQL SERVER

Struktura logiczna systemu: Tabele Widoki Indeksy Procedury składowane Wyzwalacze typu AFTER po operacji DML typu BEFORE przed operacją DML typu INSTEAD of zamiast operacji DML 9

10 STRUKTURA FIZYCZNA SYSTEMU MS SQL SERVER

Struktura fizyczna pliki: MDF (ang. main data file, master data file) główny plik bazy danych NDF (ang. next data file) pliki pomocnicze (grupa plików) LDF (ang. log data file) plik dziennika powtórzeń (logi) 11

Pliki danych (MDF) Plik główny danych (ang. primary file) stanowi punkt startowy bazy danych i zawiera informacje o innych plikach w bazie danych. Każda baza danych ma dokładnie jeden plik główny danych - ma on zwykle rozszerzenie.mdf. 12

Pliki pomocnicze (NDF) Partycjonowanie danych Artykuł: https://msdn.microsoft.com/pl-pl/library/tworzeniebazy-danych-w-sql-server.aspx 13

Pliki pomocnicze (NDF) 14 Logiczna struktura przechowywania danych w SQL Server źródło: https://msdn.microsoft.com/pl-pl/library/tworzenie-bazy-danych-w-sql-server.aspx

15 Pliki pomocnicze (NDF) CREATE DATABASE [Test_Database] ON PRIMARY ( NAME = N'my_database_primary', FILENAME = N'C:\Temp\Database\my_database_primary.mdf', SIZE = 3072KB, FILEGROWTH = 1024KB), FILEGROUP [Filegroup1] ( NAME = N'my_database_secondary', FILENAME = N'C:\Temp\Database\Secondary\my_database_secondary.ndf', SIZE = 3027KB, FILEGROWTH = 1024KB) LOG ON ( NAME = N'my_database_log', FILENAME = N'C:\Temp\Database\Log\my_database_log.ldf', SIZE = 1024KB, FILEGROWTH = 10%) GO

Pliki dziennika powtórzeń (LDF) *.ldf Dziennik powtórzeń chronologiczny rejestr działań na bazie danych Wykorzystywany do odzyskiwania danych po awarii 16

17 Informacje o plikach fizycznych Informacje o bazach danych widok sys.master_files (Databases System Databases master Views System Views) SELECT * FROM sys.master_files Informacje o plikach fizycznych sp_helpdb BazaDanych

Struktura widoku sys.master_files źródło: https://msdn.microsoft.com/enus/library/ms186782.aspx file_id, file_guid, type, type_desc, data_space_id, name, physical_name, state, state_desc, size, max_size, growth, is_media_read_only, is_read_only, is_sparse, is_percent_growth, is_name_reserved, create_lsn, drop_lsn, read_only_lsn, read_write_lsn, differential_base_lsn, differential_base_guid, differential_base_time, redo_start_lsn, redo_start_fork_guid, redo_target_lsn, redo_target_fork_guid, backup_lsn 18

19 Dołączanie bazy danych Databases Attach

20 źródło: http://edu.pjwstk.edu.pl/wyklady/szb/scb/wyklad15/w15.htm Podział bazy danych na pliki, ekstenty i strony

Rodzaje stron 21 data wszystkie dane z wyjątkiem atrybutów typów LOB (ang. Large OBject) index wpisy indeksów text/image typy LOB: text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml GAM (Global Allocation Map), SGAM (Shered GAM), IAM (Index Allocation Map) bitowe mapy alokacji

Struktura strony danych Nagłówek strony 96 bajtów Wiersze danych 22 Tablica przesunięć wierszy

23 Sterta (ang. heap) Zbiór obszarów zawierających dane z jednej tabeli (lub partycji) Dane nie są ze sobą powiązane Wyszukiwanie wymaga przejrzenia wszystkich stron Nagłówek Nagłówek Nagłówek Nagłówek Nagłówek Nagłówek Nagłówek Nagłówek Nagłówek Nagłówek Nagłówek Nagłówek Nagłówek Wiersz 1 Nagłówek Wiersz 1 Nagłówek Nagłówek Wiersz 1 Nagłówek Wiersz 1 Nagłówek Wiersz 1 Nagłówek Nagłówek Wiersz 1 Nagłówek Wiersz 1 Nagłówek Wiersz 1 Wiersz 1 Nagłówek Nagłówek Wiersz Wiersz 1 Wiersz 6 Nagłówek Wiersz 1 Nagłówek Wiersz 1 Wiersz Wiersz 1 6 Nagłówek Nagłówek Wiersz 1 Wiersz 6 Nagłówek Wiersz Wiersz Wiersz 1 Wiersz 1 6 Nagłówek Wiersz 1 6 Nagłówek Wiersz Wiersz 1 Wiersz 6 Wiersz Wiersz 1 Wiersz 1 6 Nagłówek Wiersz Wiersz 1 Wiersz 6 6 Wiersz Wiersz 1 Wiersz Wiersz 6 Wiersz 1 3 Wiersz Wiersz 1 Wiersz 1 Wiersz 1 6 Wiersz 6 Wiersz 6 3 Wiersz Wiersz 6 Wiersz 3 Wiersz Wiersz 31 Wiersz 1 Wiersz 1 Wiersz 6 Wiersz 6 3 Wiersz 6 3 Wiersz Wiersz 51 Wiersz 1 Wiersz 6 Wiersz 3 Wiersz Wiersz 6 Wiersz 6 3 Wiersz Wiersz 6 Wiersz 4 3 3 Wiersz Wiersz 6 Wiersz 3 Wiersz Wiersz 6 Wiersz 6 Wiersz 6 3 Wiersz 3 3 Wiersz Wiersz 6 3 Wiersz Wiersz 62 Wiersz 6 Wiersz 6 3 Wiersz 3 Wiersz 3 Wiersz 32 Wiersz 6 Wiersz 3 Wiersz 3 3 Wiersz 3 Wiersz 74 Wiersz Wiersz 3 Wiersz 3 3 3 Wiersz Wiersz Wiersz 3 Wiersz 13 3 3 Wiersz Wiersz 73 3 Wiersz 60

24 Fizyczna organizacja danych w SQL Server Strony GAM, SGAM informują, które obszary są wolne, zajęte GAM informacje o zajętych obszarach jednolitych (uniform) SGAM informacje o zajętych obszarach mieszanych (mixed) Strony IAM informacje o przynależności obszarów do obiektów IAM

25 B-drzewo Drzewo zbalansowane Węzły mogą mieć strukturę listy dwukierunkowej W praktyce do 5 poziomów

Indeks zgrupowany (z danymi) 26 ang. clustered index Struktura drzewa (B-tree) Na poziomie korzeni i gałęzi strony indeksu Na poziomie liści strony z danymi z tabel Fizycznie porządkuje dane Dane fizyczne uporządkowane rosnące wg klucza indeksu Może istnieć tylko 1 indeks zgrupowany Zakładany najczęściej na sztucznym kluczy podstawowym tzw. id

Indeks zgrupowany Klucz 1 Klucz 2 Klucz 3 Poprzednia Następna P N P N Klucz 4 Klucz 7 Klucz 10 Klucz 5 Klucz 8 Klucz 11 Klucz 6 Klucz 9 Klucz 12 P N P N P N P N Wiersz danych 1 Wiersz danych 4 Wiersz danych 7 Wiersz danych 10 Wiersz danych 2 Wiersz danych 5 Wiersz danych 8 Wiersz danych 11 Wiersz danych 3 Wiersz danych 6 Wiersz danych 9 Wiersz danych 12 27

Na jakich kolumnach tworzyć indeks zgrupowany? Mała długość atrybutu (klucza) Wysoka selektywność (mało powtarzających się wartości klucza indeksu) Rzadko bądź wcale nie zmieniane wartości Wartości klucza dla kolejno dodawanych wierszy są rosnące 28

Indeks niezgrupowany 29 Struktura drzewa (B-tree) Na wszystkich poziomach drzewa mamy strony indeksu Może być budowany na stercie lub na indeksie zgrupowanym Można stworzyć do 248 indeksów niezgrupowanych na tabeli Stosowane są, gdy dane wyszukiwane są według wielu kryteriów Maksymalnie 16 kolumn w kluczu

Indeksy niezgrupowany budowany na indeksie zgrupowanym Indeks niezgrupowany Indeks zgrupowany B-drzewo 30 źródło: http://edu.pjwstk.edu.pl/wyklady/szb/scb/wyklad15/w15.htm

Kwestie wydajnościowe Fizyczna organizacja danych wpływa na wydajność pracy BD Plan wykonania 31

32 PLAN WYKONANIA W MS SQL SERVER

Narzędzia wspierające optymalizację MS SQL Server Management Studio Plan wykonania Database Engine Tuning Advisor 33

Rola optymalizatora zapytań T-SQL jest językiem deklaratywnym. Używając go, stwierdzamy co chcemy zrobić, a nie jak to zrobić. System zarządzania bazą danych posługując się optymalizatorem zapytań decyduje o sposobie wykonania zapytania. 34

Fazy przetwarzania zapytania zapytanie SQL Dekompozycja zapytania wyrażenie algebry relacji Optymalizacja zapytania plan wykonania zapytania Generacja kodu kod zapytania Wykonanie zapytania 35 wynik zapytania

Plan wykonania MS SQL Server Estymowany plan wykonania (ang. estimated execution plan) Rzeczywisty plan wykonania (ang. actual execution plan) 36

Graficzny plan wykonania w SQL Server Management Studio Dostarcza możliwość reprezentacji graficznej planów zapytań w postaci drzewa operatorów Podpowiada kroki warte podjęcia celem optymalizacji zapytań (np. wykrywa brakujące indeksy) 37

Ikony planu wykonania (wybór) Ikona Element języka/operator (ang.) Wynik Result 38 Skanowanie indeksu zgrupowanego Szukanie indeksu zgrupowanego Skanowanie indeksu zwykłego Szukanie indeksu zwykłego Pętla zagnieżdżona Wyszukiwanie zakładki Sortowanie Dopasowanie wartości mieszającej Clustered Index Scan Clustered Index Seek Nonclustered Index Scan Nonclustered Index Seek Nested Loops Bookmark Lookup Sort Hash Match

39 Ikony planu wykonania (cd.) Ikona Element języka/operator (ang.) Obliczanie wartość skalarna Compute Scalar Top Filtruj Obliczanie wartość skalarnej Agregat strumienia Top Filtr Compute Scalar Stream Aggregate ( )

40 Interpretacja planu wykonania

41 Okno podpowiedzi z informacjami o operatorze

42 Przykład z BD AdventureWorks2008

43 Indeksy w tabeli Person.Person

44

45

Dwie wersje zapytania SQL SELECT * FROM BazaRelacyjna.dbo.Klienci k WHERE k.idmiasta IN (SELECT [IdMiasta] FROM [BazaRelacyjna].[dbo].[Miasta] m WHERE IdWojewodztwa=12) GO 46 SELECT * FROM BazaRelacyjna.dbo.Klienci k JOIN [BazaRelacyjna].[dbo].[Miasta] m ON k.idmiasta=m.idmiasta AND m.idwojewodztwa=12 GO

47 Uzyskane plany wykonania

48 TRANSACT-SQL

49 Transact-SQL (T-SQL) Został stworzony przez Sybase; później prawa kupiła firma Microsoft i wykorzystuje ten język w kolejnych wersjach MS SQL Server

Klasyczny język SQL a T-SQL SQL język deklaratywny w SZBD Sekwencje poleceń Nie ma konstrukcji sterujących: instrukcji warunkowych, pętli, zmiennych T-SQL rozszerzenie języka ale nie pełny język programowania Programowanie zadań po stronie serwera BD W T-SQL osadzony jest standardowy język SQL 50

T-SQL Rozszerzenie języka SQL umożliwiające tworzenie konstrukcji takich jak: pętle, instrukcje warunkowe oraz zmienne tabele tymczasowe. Zastosowanie: do tworzenia wyzwalaczy, procedur i funkcji składowanych w bazie. 51

Zmienne w T-SQL Wymóg jawnej deklaracji Nazwa zmiennej lokalnej musi rozpoczyna się od znaku @ zmienna globalna od @@ Typy zmiennych mogą być takie, jak wbudowane MS SQL Servera: CHAR, VCHAR, NCHAR, NVCHAR, INT, DATETIME, Przykład: DECLARE @licznik int = 1 52

Konwersja typów Polecenie CAST CAST (wyrażenie AS typ_danych) Polecenie CONVER CONVEERT (typ_danych[(rozmiar)], wyrażenie [,styl]) Przykłady: PRINT CAST(12.34 AS int) PRINT CONVERT(int 12.34) PRINT CONVERT(char(24), GETDATE(), 9) 53

Instrukcje sterujące Instrukcja warunkowa: IF wyrażenie_logiczne {polecenie_sql blok_poleceń} ELSE {polecenie_sql blok_poleceń} Pętle WHILE wyrażenie_logiczne {polecenie_sql blok_poleceń} 54

55 Przykład użycia instrukcji warunkowej DECLARE @i int SET @i = 1 IF @i = 1 BEGIN SELECT 'tak' END ELSE BEGIN SELECT 'nie' END

56 Przykład użycia pętli SET @licznik = 1 WHILE @licznik < 100 BEGIN INSERT INTO #tmp(liczba) VALUSE (@licznik) SET @licznik=@licznik+1 END

57 Przykład tworzenia widoku CREATE VIEW Klienci AS SELECT imie, nazwisko FROM BazaFirmy.dbo.Klienci_firmy WHERE rodzaj = 'staly'

Przykład tworzenia wyzwalacza CREATE TRIGGER t_zamowienie ON dbo.orders FOR INSERT, UPDATE, DELETE AS EXEC master..xp_sendmail 'kontroler1', 'Zmieniono zawartość tabeli Orders - proszę uaktualnić zestawienia' GO 58

Obsługa błędów BEGIN TRY Instrukcje END TRY BEGIN CATCH Instrukcje_obsługi_błędów ENT CATCH 59

Funkcje Konfiguracyjne Kursora Daty i czasu Matematyczne Metadanych Bezpieczeństwa Operujące na łańcuchach znaków Systemowe Statystyki systemowej Tekstu i obrazu 60

Przegląd innych systemów baz danych MySQL, SQLite, PostgreSQL

62 Wersje BD Produkt Producent Najnowsza wersja Licencja Oracle Database Microsoft SQL Server Oracle 12c komercyjna Microsoft 12.00 Microsoft EULA MySQL Oracle 5.7.12 GPL lub komercyjna MariaDB Monty Program Ab 10.1.14 GPL v. 2 PostgreSQL PostgreSQL Global Development Group 9.5.3 PostgreSQL SQLite D. Richard Hipp 3.12.2 Public domain Informix IBM 12.10.xC4 EULA DB2 IBM 10.5 EULA

Duże bazy danych Microsoft SQL Server 2014, Azure SQL Database Oracle 11g, 12c IBM Informix Extended Parallel Server (XPS) SAP Sybase Adaptive Server Enterprise 15.7 (ASE) Interbase XE3 63

Średnie bazy danych MySQL MariaDB PostgreSQL Firebird 3.0.05 Microsoft Visual FoxPro 9.0 MS Access 2016 64

Małe bazy danych msql 3.11 SQLite Nie nadają się do tworzenia wielodstępowych aplikacji internetowych. 65

66 MYSQL/MARIADB

MySQL SZRBD dla Linux/Unix, Windows, Pierwsze wydanie: 1995 r. Licencja: GPL lub komercyjna (Oracle) MariaDB GPL wersja 2 Aktualna wersja stabilna: 5.7.12 Posiada wiele silników bazy danych (motor, ang. engine, back end) Dostęp z poziomu wielu języków programowania: m.in. C/C++, Delphi, PHP. 67

Silniki baz danych MySQL InnoDB domyślny od wersji 5.5, obsługuje transakcje MyISAM starszy typ, nie obsługuje transakcji MEMORY (HEAP) - najszybszy typ silnika, gdyż wszystko jest przechowywane wyłącznie w pamięci RAM. Posiada jednak kilka ograniczeń, między innymi nie przechowuje danych po wyłączeniu serwera MySQL. Inne: XtraDB, ISAM, BerkeleyDB (BDB), MERGE, 68 CREATE TABLE test ENGINE=MEMORY

Silniki baz danych MariaDB MyISAM XtraDB kompatybilny z InnoDB Aria nowy silnik bazy danych Inne: FederatedX, OQGRAPH, SphinxSE, 69

MyISAM Domyślny silnik dla wcześniejszych wersji MySQL Rozszerzenie silnika ISAM Zaprojektowane z myślą o podstawowych aplikacjach internetowych i prostocie działania Stosowany ciągle w hurtowniach danych ze względu na możliwość zapytań do bardzo dużych tabel 70

MyISAM - architektura fizyczna Każda tabela zapisywana w trzech plikach: nazwa_tabeli_.frm definicja tabeli nazwa_tabeli_.myd - dane nazwa_tabeli_.myi indeksy 71

MyISAM Zalety szybki odczyt z tabel prostsze wykonywanie kopii zapasowych Wady brak obsługi transakcji brak mechanizmów odpowiedzialnych za integralność danych przy dużych tabelach, długie czasy wykonywania REPAIR TABLE po awarii serwera 72 źródło: http://osworld.pl/czym-sie-rozni-innodb-od-myisam/

InnoDB Zapewnia integralności danych oraz spójności i bezpieczeństwa transakcji. Standard ACID ACID jest skrótem od angielskich słów: atomicity atomowość, consistency spójność, isolation izolacja, durability trwałość. Mechanizm kluczy obcych 73 źródło: http://osworld.pl/czym-sie-rozni-innodb-od-myisam/

ACID 74 Atomowość transakcji oznacza, że albo wykonujemy ją w całości albo wcale. Nie może dojść do sytuacji, w której wykona się część zapytań. Spójność oznacza, że po wykonaniu transakcji system będzie spójny, czyli nie zostaną naruszone żadne zasady integralności. Izolacja transakcji oznacza, iż jeżeli dwie transakcje wykonują się współbieżnie, to zazwyczaj (zależnie od poziomu izolacji) nie widzą zmian przez siebie wprowadzanych. Trwałość danych oznacza, że system potrafi uruchomić się i udostępnić spójne, nienaruszone i aktualne dane zapisane w ramach zatwierdzonych transakcji, na przykład po nagłej awarii zasilania.

InnoDB Zalety obsługa transakcji gwarantuje integralność danych lepiej sprawuje się podczas replikacji typu master slave Wady wolniejszy odczyt danych trudniejsze wykonywanie backupów 75 źródło: http://osworld.pl/czym-sie-rozni-innodb-od-myisam/

Zestaw oprogramowania LAMP Linux + MySQL/MariaDB + PHP/Perl/Python WAMP Windows + Apache + MySQL + PHP MAMP Mac OS X + Apache + MySQL + PHP XAMPP X (Cross-platform) Apache, MySQL, PHP, Perl 76

Uproszczony schemat architektury LAMP 77 źródło: wikipedia.org

Funkcje MySQL w PHP 78 http://php.net/manual/en/ref.mysql.php mysql_close Close MySQL connection mysql_connect Open a connection to a MySQL Server mysql_create_db Create a MySQL database mysql_db_query Selects a database and executes a query on it mysql_error Returns the text of the error message from previous MySQL operation mysql_fetch_array Fetch a result row as an associative array, a numeric array, or both mysql_info Get information about the most recent query mysql_num_rows Get number of rows in result mysql_pconnect Open a persistent connection to a MySQL server mysql_query Send a MySQL query

Łączenie z serwerem i bazą danych w PHP 79 <?php // nawiazujemy polaczenie $connection = @mysql_connect('localhost', 'uzytkownik', 'haslo') // w przypadku niepowodznie wyświetlamy komunikat or die('brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error()); // połączenie nawiązane ;-) echo "Udało się połączyć z serwerem!<br />"; // nawiązujemy połączenie z bazą danych $db = @mysql_select_db('nazwa_bazy', $connection) // w przypadku niepowodzenia wyświetlamy komunikat or die('nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error()); // połączenie nawiązane ;-) echo "Udało się połączyć z bazą danych!"; // zamykamy połączenie mysql_close($connection);?>

Tworzenie bazy danych <?php // otwiera połączenie $polaczenie = mysql_connect("localhost", "juzer", "samopas"); // wybiera bazę mysql_select_db("test",$polaczenie); // tworzy instrukcję SQL $sql = "CREATE TABLE tabelaprobna (id int not null primary key auto_increment, poleprobne varchar (75))"; // wykonuje instrukcję SQL $wynik = mysql_query($sql, $polaczenie) or die(mysql_error()); // wyświetla identyfikator wyniku echo $wynik;?> 80

Wstawianie danych do bazy 81 <?php // otwiera połączenie $polaczenie = mysql_connect("localhost", "juzer", "samopas"); // wybiera bazę mysql_select_db("test",$polaczenie); // tworzy instrukcję SQL $sql = "INSERT INTO tabelaprobna values ('', 'jakaś wartość')"; // wykonuje instrukcję SQL $wynik = mysql_query($sql, $polaczenie) or die(mysql_error()); // wyświetla identyfikator wyniku echo $wynik;?>

Pobieranie danych z bazy 82 <?php // otwiera połączenie $polaczenie = mysql_connect("localhost", "juzer", "samopas"); // wybiera bazę mysql_select_db("test",$polaczenie); // tworzy instrukcję SQL $sql = "SELECT * FROM tabelaprobna"; // wykonuje instrukcję SQL $wynik = mysql_query($sql, $polaczenie) or die(mysql_error()); //przechodzi przez każdy wiersz zbioru wyników i wyświetla dane while ($nowatablica = mysql_fetch_array($wynik)) { // nadaje polom nazwy $id = $nowatablica['id']; $poleprobne = $nowatablica['poleprobne']; //wyświetla rezultaty na ekranie echo "Identyfikator to $id a tekst w polu to $poleprobne <br>"; }?>

Narzędzia administracyjne phpmyadmin za pomocą przeglądarki internetowej MySQL Workbench 83

84 SQLITE

SQLite Bezserwerowa relacyjna baza danych Pierwsze wydanie: 2000 r. Licencja: Public domain Aktualna wersja: 3.12.2 85

SQLite - cechy 86 Cała baza znajduje się w jednym pliku (do 140 TB): tabele, indeksy, widoki, wyzwalacze itd. Baza jest utrzymywana na dysku przy użyciu B-drzew. osobne drzewa są używane dla każdej z tabel i każdego z indeksów. Posiada wsparcie dla prawie całego standardu SQL-92. Wydajność SQLite jest porównywalna do popularnych SZBD typu klient-serwer. Silnik jest napisany w języku C i korzysta tylko z podstawowych funkcji bibliotecznych (sqlite3.c z plikiem nagłówkowym sqlite3.h). Nie zawiera systemu uwierzytelniania.

Przykład użycia biblioteki w C #include <stdio.h> #include <sqlite3.h> static int callback(void *nic, int argc, char **argv, char **kol) { int i; for(i=0; i<argc; i++) printf("%s = %s\n", kol[i], argv[i]? argv[i] : "NULL"); printf("\n"); return 0; } 87 int main(int argc, char **argv) { sqlite3 *db; int rc; rc = sqlite3_open("../demo.db", &db); rc = sqlite3_exec(db, "SELECT * FROM pracownicy", callback, 0, NULL); sqlite3_close(db); return 0; }

Zastosowania SQLite Mozilla Firefox przeglądarka internetowa PHP, Python jedna z dostępnych baz danych Ruby on Rails domyślna baza danych w Ruby on Rails 2.0. Android środowisko programistyczne dla urządzeń przenośnych Oprogramowanie antywirusowe: Avira, Avast Zotero oprogramowanie do zarządzania źródłami informacji. Inne 88

Narzędzia administracyjne SQLite Manager - dodatek przeglądarki Mozilla Firefox do zarządzania bazami danych SQLite. DaDaBIK Database Interface Kreator (Open Source) SQLite Database Browser - graficzne narzędzie do zarządzania bazami danych SQLite. SQLiteSpy (Freeware). Lita - aplikacja Adobe AIR do zarządzania bazami danych SQLite. SQLiteStudio - darmowa aplikacja do zarządzania bazami danych SQLite w wersjach 2 i 3. 89

90 POSTGRESQL

PostgreSQL Wielodostępny, serwerowy SZBD Pierwsze wydanie: 1995 r. Platformy: Linux/Unix, Windows, Licencja: PostgreSQL Aktualna wersja: 9.5.3 91

PostgreSQL - cechy Indeksy: B-drzewo, Hash, R-drzewo, GIST, GIN, SP-GIST Funkcje składowane np. w PL/pgSQL Wyzwalacze Rozszerzona definicja typów danych - m.in. typy danych geograficznych na potrzeby systemów informacji geograficznej (GIS) w module PostGIS. 92

Narzędzia administracyjne pgadmin phppgadmin - administracja za pomocą przeglądarki internetowej 93

Hurtownie danych. Cele i techniki replikacji oraz fragmentacji danych Serwery lustrzane, obiekty partycjonowane

95 HURTOWNIE DANYCH

Podstawowe pojęcia 96 Przetwarzanie operacyjne OLTP (On-line Transaction Processing) - duża ilość prostych transakcji zapisu i odczytu. Główny nacisk kładziony jest na zachowanie integralności danych w środowisku wielodostepowym oraz na efektywność mierzona liczba transakcji w danej jednostce czasu. Przetwarzanie analityczne OLAP (On-line Analytical Processing) - stosunkowo nieliczne, ale za to złożone transakcje odczytu. Miarą efektywności jest czas i jakość odpowiedzi. Powszechnie wykorzystuje sie go w technikach związanych z Data Mining'iem.

97 Liczba decyzji Zależność wagi i liczby decyzji Waga decyzji OLAP OLTP

Hurtownia danych ang. Data Warehouse - DW Analityczna baza danych wykorzystywana jako podstawa systemu wspomagającego podejmowanie decyzji. ang. Data mining - eksploracja danych, drążenie danych 98

Cele stosowania hurtowni danych Przetwarzanie analityczne (OLAP) Wspomaganie decyzji (DSS) Archiwizacja danych Analiza efektywności Wsparcie dla systemów CRM (np. poprzez precyzyjne dobieranie strategii marketingowych na podstawie danych o klientach i sprzedaży) 99

100 Architektura hurtowni danych

Proces integracji danych - ETL Extract, Transform, Load 101 SQL Server Integration Services (SSIS) graficzne narzędzie ETL firmy Microsoft włączone do Microsoft SQL Server od wersji 2005.

Model danych MOLAP Multidimensional OLAP implementacja w serwerach wielowymiarowych dane przechowywane w wielowymiarowych tabelach (ang. data cubes), zwanych potocznie kostkami najlepsza efektywność wymaga dużej dodatkowej pamięci 102

103 Kostka MOLAP - przykład Trójwymiarowa kostka z wymiarami: Sklep, Czas, Produkt i zagregowanymi danymi o sprzedaży.

Model danych ROLAP Relational OLAP fakty przechowywane w tabelach faktów wymiary przechowywane w tabelach wymiarów nie potrzeba dodatkowej pamięci niska efektywność 104

Stosowane schematy w ROLAP Schematy podstawowe gwiazda płatek śniegu Schematy pochodne Konstelacja faktów Gwiazda płatek śniegu 105

106 Schemat gwiazdy

107 Schemat płatka śniegu

Model danych HOLAP Hybrid OLAP - implementacja hybrydowa (relacyjno-wielowymiarowa) dane elementarne (źródłowe) przechowywane w tabelach dane zagregowane przechowywane w kostkach pośrednia struktura pomiędzy ROLAP a MOLAP ( przyśpieszacz ROLAP ) 108

Systemy hurtowni danych 109 Oracle Data Warehousing Microsoft SQL Server Business Intelligence IBM InfoSphere Warehouse Teradata Enterprise Data Warehouse IBM Netezza Data Warehouse Sybase IQ Infobright SAP NetWeaver Business Intelligence

Skala wdrożenia Rozmiar danych > 1TB Liczba użytkowników rzędu 100 (analityków) Typowy czas wdrożenia od 6 miesięcy do 3 lat 110

Inne przyszłościowe modele Data Warehouse Appliances Big data ; paradygmat firmy Google MapReduce (np. Apache Hadoop) Kolumnowe bazy danych Bazy danych klasy NoSQL Rozwiązania in-memory 111

112 CELE I TECHNIKI REPLIKACJI/FRAGMENTACJI DANYCH

Replikacja danych Replikacja danych proces powielania danych pomiędzy różnymi serwerami baz danych. Serwery lustrzane. 113

Replikacja danych - cel 114 przyspieszenie dostępu do danych wykorzystywanych często słownik miast, województw, kodów adresowych katalog produktów równoważenie obciążenia węzłów równoległe wykonywanie zapytań zwiększenie efektywności dostępu do danych przez wybór repliki do której dostęp jest najszybszy bezpieczeństwo danych i całego systemu

Rodzaje replikacja danych Migawkowa rozprowadzane dane mają stan z pewnego określonego momentu w czasie. Transakcyjna dane rozprowadzane są na podstawie logów transakcji. Dwukierunkowa (łącząca) serwer realizuje transakcje zarówno od innego serwera (lustrzanego), jak i od klientów. 115

Ogólna architektura technologii tworzenia lustrzanej kopii bazy danych Klient Serwer nadzorujący Wykonanie Potwierdzenie Potwierdzenie Serwer główny Transmisja do kopii lustrzanej Serwer lustrzany 116 Zapis w dzienniku lokalnym BD Log Zatwierdzenie w dzienniku Zapis w dzienniku zdalnym Log Ciągłe odtwarzanie w kopii lustrzanej BD

Fragmentacja (partycjonowanie) danych Obiekty partycjonowane Podział tabeli na części, zwane fragmentami lub partycjami Techniki fragmentacji pozioma pionowa mieszana 117

Cel fragmentacji Zwiększenie efektywności dostępu do danych zmniejszenie rozmiaru danych, które należy przeszukać zrównoleglenie operacji dostępu do dysków, na których umieszczono fragmenty alokowanie fragmentów blisko miejsca ich wykorzystania - redukcja kosztów transmisji sieciowej 118

Fragmentacja pozioma 119 Podział zbioru rekordów (krotek) na podzbiory Każdy podzbiór opisany jest identyczną liczbą atrybutów Wybór fragmentu (partycji) do której trafia rekord realizowany na podstawie wartości jednego lub kilku wybranych atrybutów tabeli tzw. atrybutów fragmentujących (partycjonujących)

Fragmentacja pionowa Rozbicie tabeli na fragmenty złożone z podzbioru atrybutów Każdy fragment zawiera identyczną liczbę rekordów Atrybut niekluczowy A n może się znaleźć tylko w jednym fragmencie Atrybut kluczowy znajduje się w każdym fragmencie służy do łączenia fragmentów 120

Fragmentacja mieszana Połączenie fragmentacji poziomej i pionowej Warianty Fragmentacja pozioma + pionowa Fragmentacja pionowa + pozioma 121

Rodzaje fragmentacji - przykład A1 A2 A3 A4 A5 1 2 3 4 5 6 7 8 9 pozioma pionowa A1 A2 A3 A4 A5 1 2 3 4 A1 A2 A3 1 2 3 4 5 6 7 8 9 A1 A4 A5 1 2 3 4 5 6 7 8 9 A1 A2 A3 A4 A5 5 6 7 8 9 mieszana A1 A2 A1 A3 A4 A5 A1 A2 A3 A1 A4 A5 122 1 2 3 4 1 2 3 4 5 6 7 8 9 5 6 7 8 9

Podsumowanie Przegląd systemów zarządzania relacyjnymi bazami danych Hurtownie danych specyficzna architektura i zastosowania baz danych Cele i techniki replikacji danych Cele i techniki fragmentacji danych 123

Pytania? DZIĘKUJĘ ZA UWAGĘ