Internetowe Bazy Danych -...
Transcript of Internetowe Bazy Danych -...
![Page 2: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/2.jpg)
Plan wykładu 3.
• Microsoft SQL Server
– Struktura logiczna systemu
– Struktura fizyczna systemu
• Języki SQL, Transact-SQL
• Inne systemy baz danych: MySQL, SQLite,
PostgreSQL
• Hurtownie danych, cele i techniki
replikacji i fragmentacji danych
2
![Page 3: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/3.jpg)
Microsoft SQL Server
![Page 4: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/4.jpg)
Microsoft SQL Server
• Producent: Microsoft
• Licencja: Microsoft EULA
• Najnowsza wersja stabilna: 2019 (15.00)
• 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
![Page 5: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/5.jpg)
Architektura MS SQL Server
źródło: http://it-szkola.edu.pl/upload/kuznia/akademia_bd/main.html5
![Page 6: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/6.jpg)
Główne składniki silnika bazy danych SQL Server
• Menadżer Wejścia/Wyjścia
Protokoły
• Parser, Optymalizator, Menadżer SQL
• Menadżer baz danych, Moduł wykonujący kwerendy, …Część relacyjna
• Menadżer transakcji, Menadżer blokad
• Menadżer indeksów, Menadżer buforowania, …
Interfejs OLE DB
Aparat składowania danych
SQLOS API
6
![Page 7: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/7.jpg)
MS SQL Server
• Struktura logiczna
• Struktura fizyczna
7
![Page 8: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/8.jpg)
STRUKTURA LOGICZNA
SYSTEMU MS SQL SERVER
8
![Page 9: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/9.jpg)
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
![Page 10: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/10.jpg)
STRUKTURA FIZYCZNA SYSTEMU
MS SQL SERVER
10
![Page 11: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/11.jpg)
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
![Page 12: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/12.jpg)
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
![Page 13: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/13.jpg)
Pliki pomocnicze (NDF)
• Partycjonowanie danych
• Artykuł:https://msdn.microsoft.com/pl-pl/library/tworzenie-
bazy-danych-w-sql-server.aspx
13
![Page 14: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/14.jpg)
Pliki pomocnicze (NDF)
Logiczna struktura przechowywania danych w SQL Serverźródło: https://msdn.microsoft.com/pl-pl/library/tworzenie-bazy-danych-w-sql-server.aspx14
![Page 15: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/15.jpg)
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
15
![Page 16: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/16.jpg)
Pliki dziennika powtórzeń (LDF)
• *.ldf
• Dziennik powtórzeń – chronologiczny
rejestr działań na bazie danych
• Wykorzystywany do odzyskiwania danych
po awarii
16
![Page 17: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/17.jpg)
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
17
![Page 18: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/18.jpg)
Struktura widoku sys.master_files
• źródło: https://msdn.microsoft.com/en-
us/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
![Page 19: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/19.jpg)
Dołączanie bazy danych
• Databases → Attach…
19
![Page 20: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/20.jpg)
Podział bazy danych na pliki,
ekstenty i strony
źródło: http://edu.pjwstk.edu.pl/wyklady/szb/scb/wyklad15/w15.htm20
![Page 21: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/21.jpg)
• 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
Rodzaje stron
21
![Page 22: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/22.jpg)
Struktura strony danych
Nagłówek strony
96 bajtów
Wiersze danych
Tablica przesunięć
wierszy22
![Page 23: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/23.jpg)
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 31
Wiersz 62
Wiersz 13
…
Sterta (ang. heap)
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 51
Wiersz 32
Wiersz 73
…
• 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
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 1
Wiersz 6
Wiersz 3
…
Nagłówek
Wiersz 4
Wiersz 74
Wiersz 60
…
23
![Page 24: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/24.jpg)
• 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
Fizyczna organizacja danych w SQL Server
IAM
24
![Page 25: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/25.jpg)
B-drzewo
• Drzewo zbalansowane
• Węzły mogą mieć strukturę listy dwukierunkowej
• W praktyce do 5 poziomów
25
![Page 26: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/26.jpg)
• 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 (z danymi)
26
![Page 27: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/27.jpg)
Indeks zgrupowany
Klucz 1
Klucz 2
Klucz 3
…
Poprzednia Następna
Klucz 4
Klucz 5
Klucz 6
…
P N
Wiersz danych 1
Wiersz danych 2
Wiersz danych 3
…
P N
Klucz 7
Klucz 8
Klucz 9
…
P N
Klucz 10
Klucz 11
Klucz 12
…
P N
Wiersz danych 7
Wiersz danych 8
Wiersz danych 9
…
P N
Wiersz danych 4
Wiersz danych 5
Wiersz danych 6
…
P N
Wiersz danych 10
Wiersz danych 11
Wiersz danych 12
…27
![Page 28: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/28.jpg)
• 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
Na jakich kolumnach tworzyć indeks
zgrupowany?
28
![Page 29: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/29.jpg)
• 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 249 indeksów niezgrupowanych
na tabeli (od SQL Server 2008 do 999)
• Stosowane są, gdy dane wyszukiwane są według
wielu kryteriów
• Maksymalnie 16 kolumn w kluczu
Indeks niezgrupowany
29
![Page 30: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/30.jpg)
Indeksy niezgrupowany budowany na
indeksie zgrupowanym
• Indeks niezgrupowany
• Indeks zgrupowany
źródło: http://edu.pjwstk.edu.pl/wyklady/szb/scb/wyklad15/w15.htm
B-drzewo
30
![Page 31: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/31.jpg)
Kwestie wydajnościowe
• Fizyczna organizacja danych wpływa na
wydajność pracy BD
• Plan wykonania
31
![Page 32: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/32.jpg)
PLAN WYKONANIA W MS SQL
SERVER
32
![Page 33: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/33.jpg)
• MS SQL Server Management Studio
– Plan wykonania
• Database Engine Tuning Advisor
Narzędzia wspierające optymalizację
33
![Page 34: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/34.jpg)
• 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.
Rola optymalizatora zapytań
34
![Page 35: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/35.jpg)
Fazy przetwarzania zapytania
Dekompozycja zapytania
Optymalizacja zapytania
Generacja kodu
Wykonanie zapytania
zapytanie SQL
wynik zapytania
wyrażenie algebry relacji
plan wykonania zapytania
kod zapytania
35
![Page 36: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/36.jpg)
• Estymowany plan wykonania (ang.
estimated execution plan)
• Rzeczywisty plan wykonania (ang. actual
execution plan)
Plan wykonania MS SQL Server
36
![Page 37: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/37.jpg)
• 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)
Graficzny plan wykonania w SQL Server
Management Studio
37
![Page 38: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/38.jpg)
Ikona Element języka/Operator (ang.)
Wynik Result
Skanowanie indeksu
zgrupowanego
Clustered Index Scan
Szukanie indeksu
zgrupowanego
Clustered Index Seek
Skanowanie indeksu zwykłego Nonclustered Index Scan
Szukanie indeksu zwykłego Nonclustered Index Seek
Pętla zagnieżdżona Nested Loops
Wyszukiwanie zakładki Bookmark Lookup
Sortowanie Sort
Dopasowanie wartości
mieszającej
Hash Match
Ikony planu wykonania (wybór)
38
![Page 39: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/39.jpg)
Ikona Element języka/Operator (ang.)
Obliczanie wartość skalarna Compute Scalar
Top Top
Filtruj Filtr
Obliczanie wartość skalarnej Compute Scalar
Agregat strumienia Stream Aggregate
(…)
Ikony planu wykonania (cd.)
39
![Page 40: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/40.jpg)
Interpretacja planu wykonania
40
![Page 41: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/41.jpg)
Okno podpowiedzi
z informacjami o operatorze
41
![Page 42: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/42.jpg)
Przykład z BD AdventureWorks2008
42
![Page 43: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/43.jpg)
Indeksy w tabeli Person.Person
43
![Page 44: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/44.jpg)
44
![Page 45: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/45.jpg)
45
![Page 46: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/46.jpg)
SELECT *
FROM BazaRelacyjna.dbo.Klienci k
WHERE k.IdMiasta IN
(SELECT [IdMiasta]
FROM [BazaRelacyjna].[dbo].[Miasta] m
WHERE IdWojewodztwa=12)
GO
SELECT *
FROM BazaRelacyjna.dbo.Klienci k
JOIN [BazaRelacyjna].[dbo].[Miasta] m
ON k.IdMiasta=m.IdMiasta
AND m.IdWojewodztwa=12
GO
Dwie wersje zapytania SQL
46
![Page 47: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/47.jpg)
Uzyskane plany wykonania
47
![Page 48: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/48.jpg)
SQL
Structured Query Language
48
![Page 49: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/49.jpg)
Język SQL
• Structured Query Language - strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz do zarządzania danymi.
• Język deklaratywny – „co system ma zrobić a nie jak”.
• Decyzję o sposobie przechowywania i pobrania danych pozostawia się systemowi zarządzania bazą danych (DBMS).
• Opracowany w latach 70 XX w.
49
![Page 50: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/50.jpg)
Standardy SQL
• SQL-86,
• SQL-89,
• SQL-92,
• SQL:1999, SQL:2003,
• SQL:2006, SQL:2008
• Aktualna wersja stabilna SQL:2016
50
![Page 51: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/51.jpg)
• DDL (ang. Data Definition Language) –„język definicji danych”,
• DML (ang. Data Manipulation Language ) –„język manipulacji danymi”,
• DCL (ang. Data Control Language ) – „język kontroli nad danymi”,
• DQL (ang. Data Query Language ) – „język definiowania zapytań”.
Podzbiory języka SQL
51
![Page 52: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/52.jpg)
• CREATE– utworzenie struktury (bazy, tabeli, indeksu itp.)(np. CREATE DATABASE, CREATE TABLE, ...),
• ALTER – zmiana struktury (dodanie kolumny do tabeli, zmiana typu danych w kolumnie tabeli)(np. ALTER TABLE ADD COLUMN ...),
• DROP – usunięcie struktury(np. DROP TABLE, DROP DATABASE, ...).
DDL
52
![Page 53: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/53.jpg)
• CREATE TABLE
CREATE TABLE Osoby (OsobaID INT NOT NULL UNIQUE,Imie VARCHAR(25) NOT NULL,Nazwisko VARCHAR(50) NOT NULL,Wiek INT
);
DDL
53
![Page 54: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/54.jpg)
• ALTER TABLE
ALTER TABLE OsobyMODIFY Wiek INT NOT NULL;
ALTER TABLE OsobyADD Urodziny DATE
DDL
54
![Page 55: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/55.jpg)
• Wiązania poprzez klucze
CREATE TABLE Zamowienia (ZamowienieID INT NOT NULL PRIMARY KEY,NumerZamowienia INT NOT NULL,OsobaID INT FOREIGN KEY REFERENCES
Osoby(OsobaID));
DDL
55
![Page 56: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/56.jpg)
• CREATE INDEX
CREATE INDEX idx_NazwiskoON Osoby (Nazwisko);
CREATE INDEX idx_ImieNazwiskoON Osoby (Nazwisko, Imie);
DDL
56
![Page 57: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/57.jpg)
• INSERT – umieszczenie danych w bazie,
• UPDATE – zmiana danych,
• DELETE – usunięcie danych z bazy.
DML
57
![Page 58: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/58.jpg)
• INSERT
INSERT INTO Osoby (Imie, Nazwisko, Wiek)VALUES ('Jan', 'Kowalski', '21');
DML
58
![Page 59: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/59.jpg)
• GRANT – służące do nadawania uprawnień do pojedynczych obiektów lub globalnie konkretnemu użytkownikowi (np. GRANT ALL PRIVILEGES ON EMPLOYEE TO PIOTR WITH GRANT OPTION – przyznanie wszystkich praw do tabeli EMPLOYEE użytkownikowi PIOTR z opcją pozwalającą mu nadawać prawa do tej tabeli).
• REVOKE – służące do odbierania wskazanych uprawnień konkretnemu użytkownikowi (np. REVOKE ALL PRIVILEGES ON EMPLOYEE FROM PIOTR –odebranie użytkownikowi wszystkich praw do tabeli EMPLOYEE).
• DENY - służące do zabraniania wykonywania operacji
DCL
59
![Page 60: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/60.jpg)
• SELECT
SELECT *
FROM pracownicy
WHERE pensja > 2000
ORDER BY staz DESC;
DQL
60
![Page 61: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/61.jpg)
SELECT Zamowienia.IdZamowienia, Klienci.NazwaKlienta, Zamowienia.DataZamowieniaFROM ZamowieniaINNER JOIN Klienci ONZamowienia.IdKlienta=Klienci.IdKlienta;
Przykład złączenia
61
![Page 62: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/62.jpg)
• Wewnętrzne➢ INNER JOIN
▪ równozłączenie – Equi-join,
▪ złączenie naturalne - Natural Join,
• Zewnętrzne➢ LEFT OUTER JOIN,
➢ RIGHT OUTER JOIN,
➢ FULL OUTER JOIN,
• CROSS JOIN (iloczyn kartezjański).
Rodzaje złączeń
62
![Page 63: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/63.jpg)
Złączenia SQLa
63
![Page 64: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/64.jpg)
Składnia złączeń w klauzuli FROM
64
![Page 65: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/65.jpg)
T-SQL
Transact-SQL
65
![Page 66: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/66.jpg)
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
66
![Page 67: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/67.jpg)
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
67
![Page 68: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/68.jpg)
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.
68
![Page 69: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/69.jpg)
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
69
![Page 70: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/70.jpg)
Konwersja typów
• Polecenie CASTCAST (wyrażenie AS typ_danych)
• Polecenie CONVERCONVEERT (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)
70
![Page 71: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/71.jpg)
Instrukcje sterujące
• Instrukcja warunkowa:IF wyrażenie_logiczne {polecenie_SQL|blok_poleceń}
ELSE {polecenie_SQL|blok_poleceń}
• PętleWHILE wyrażenie_logiczne
{polecenie_SQL|blok_poleceń}
71
![Page 72: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/72.jpg)
Przykład użycia instrukcji warunkowej
DECLARE @i int
SET @i = 1
IF @i = 1
BEGIN
SELECT 'tak'
END
ELSE
BEGIN
SELECT 'nie'
END
72
![Page 73: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/73.jpg)
Przykład użycia pętli
SET @licznik = 1
WHILE @licznik < 100
BEGIN
INSERT INTO #tmp(liczba) VALUES (@licznik)
SET @licznik=@licznik+1
END
73
![Page 74: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/74.jpg)
Przykład tworzenia widoku
CREATE VIEW Klienci
AS
SELECT imie, nazwisko
FROM BazaFirmy.dbo.Klienci_firmy
WHERE rodzaj = 'staly'
74
![Page 75: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/75.jpg)
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
75
![Page 76: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/76.jpg)
Obsługa błędów
BEGIN TRY
Instrukcje
END TRY
BEGIN CATCH
Instrukcje_obsługi_błędów
ENT CATCH
76
![Page 77: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/77.jpg)
Funkcje
• Konfiguracyjne
• Kursora
• Daty i czasu
• Matematyczne
• Metadanych
• Bezpieczeństwa
• Operujące na łańcuchach znaków
• Systemowe
• Statystyki systemowej
• Tekstu i obrazu
77
![Page 78: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/78.jpg)
Przegląd innych systemów baz
danych
MySQL, SQLite, PostgreSQL
![Page 79: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/79.jpg)
Wersje BD
Produkt Producent Najnowsza wersja Licencja
Oracle
Database
Oracle 19c komercyjna
Microsoft SQL
Server
Microsoft 15.00 Microsoft EULA
MySQL Oracle 8.0.19 GPL lub komercyjna
MariaDB Monty Program Ab 10.4.12 GPL v. 2
PostgreSQL PostgreSQL Global
Development Group
12.2 PostgreSQL
SQLite D. Richard Hipp 3.31.1 Public domain
Informix IBM 14.10.FC3 EULA
DB2 IBM 11.5 EULA
79
![Page 80: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/80.jpg)
Duże bazy danych
• Microsoft SQL Server 2019, Azure SQL Database
• Oracle 11g, 12c, 19c
• IBM Informix Extended Parallel Server (XPS)
• SAP Sybase Adaptive Server Enterprise 16.0
(ASE)
• Interbase XE3
80
![Page 81: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/81.jpg)
Średnie bazy danych
• MySQL
• MariaDB
• PostgreSQL
• Firebird 3.0.2
• Microsoft Visual FoxPro 9.0
• MS Access 2016
81
![Page 82: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/82.jpg)
Małe bazy danych
• mSQL 4.0
• SQLite
• Nie nadają się do tworzenia
wielodstępowych aplikacji internetowych.
82
![Page 83: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/83.jpg)
MYSQL/MARIADB
83
![Page 84: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/84.jpg)
MySQL
• SZRBD dla Linux/Unix, Windows, …
• Pierwsze wydanie: 1995 r.
• Licencja: GPL lub komercyjna (Oracle)
MariaDB – GPL wersja 2
• Aktualna wersja stabilna: 8.0.19
• 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.
84
![Page 85: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/85.jpg)
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, …
CREATE TABLE test ENGINE=MEMORY85
![Page 86: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/86.jpg)
Silniki baz danych MariaDB
• MyISAM
• XtraDB – kompatybilny z InnoDB
• Aria – nowy silnik bazy danych
• Inne: FederatedX, OQGRAPH, SphinxSE, …
86
![Page 87: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/87.jpg)
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
87
![Page 88: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/88.jpg)
MyISAM - architektura fizyczna
• Każda tabela zapisywana w trzech plikach:
– nazwa_tabeli_.FRM – definicja tabeli
– nazwa_tabeli_.MYD - dane
– nazwa_tabeli_.MYI – indeksy
88
![Page 89: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/89.jpg)
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
źródło: http://osworld.pl/czym-sie-rozni-innodb-od-myisam/89
![Page 90: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/90.jpg)
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
źródło: http://osworld.pl/czym-sie-rozni-innodb-od-myisam/90
![Page 91: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/91.jpg)
ACID
• 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.
91
![Page 92: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/92.jpg)
InnoDB
• Zalety
+ obsługa transakcji
+ gwarantuje integralność danych
+ lepiej sprawuje się podczas replikacji typu master –
slave
• Wady
− wolniejszy odczyt danych
− trudniejsze wykonywanie backupów
źródło: http://osworld.pl/czym-sie-rozni-innodb-od-myisam/92
![Page 93: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/93.jpg)
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
93
![Page 94: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/94.jpg)
Uproszczony schemat architektury LAMP
źródło: wikipedia.org94
![Page 95: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/95.jpg)
Funkcje MySQL w PHP
• 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 query95
![Page 96: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/96.jpg)
Łączenie z serwerem i bazą danych w PHP
<?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);
?> 96
![Page 97: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/97.jpg)
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;
?>
97
![Page 98: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/98.jpg)
Wstawianie danych do bazy
<?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;
?>98
![Page 99: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/99.jpg)
Pobieranie danych z bazy
<?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>";
}
?>99
![Page 100: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/100.jpg)
Narzędzia administracyjne
• phpMyAdmin – za pomocą przeglądarki
internetowej
• MySQL Workbench
100
![Page 101: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/101.jpg)
SQLITE
101
![Page 102: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/102.jpg)
SQLite
• Bezserwerowa relacyjna baza danych
• Pierwsze wydanie: 2000 r.
• Licencja: Public domain
• Aktualna wersja: 3.31.1
102
![Page 103: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/103.jpg)
SQLite - cechy
• 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.103
![Page 104: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/104.jpg)
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;
}
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;
}104
![Page 105: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/105.jpg)
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
105
![Page 106: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/106.jpg)
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.
106
![Page 107: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/107.jpg)
POSTGRESQL
107
![Page 108: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/108.jpg)
PostgreSQL
• Wielodostępny, serwerowy SZBD
• Pierwsze wydanie: 1995 r.
• Platformy: Linux/Unix, Windows, …
• Licencja: PostgreSQL
• Aktualna wersja: 12.2
108
![Page 109: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/109.jpg)
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.
109
![Page 110: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/110.jpg)
Narzędzia administracyjne
• pgAdmin
• phpPgAdmin - administracja za pomocą
przeglądarki internetowej
110
![Page 111: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/111.jpg)
Hurtownie danych.
Cele i techniki replikacji
oraz fragmentacji danych
Serwery lustrzane, obiekty partycjonowane
![Page 112: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/112.jpg)
HURTOWNIE DANYCH
112
![Page 113: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/113.jpg)
Podstawowe pojęcia
• 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.113
![Page 114: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/114.jpg)
Zależność wagi i liczby decyzji
OLAP
OLTP
Waga decyzji
Liczba decyzji114
![Page 115: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/115.jpg)
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
115
![Page 116: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/116.jpg)
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)
116
![Page 117: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/117.jpg)
Architektura hurtowni danych
117
![Page 118: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/118.jpg)
Proces integracji danych - ETL
• Extract, Transform, Load
• SQL Server Integration Services (SSIS) – graficzne
narzędzie ETL firmy Microsoft włączone do Microsoft
SQL Server od wersji 2005.118
![Page 119: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/119.jpg)
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
119
![Page 120: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/120.jpg)
Kostka MOLAP - przykład
• Trójwymiarowa kostka z wymiarami: Sklep,
Czas, Produkt i zagregowanymi danymi o
sprzedaży.
120
![Page 121: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/121.jpg)
Model danych ROLAP
• Relational OLAP
• fakty przechowywane w tabelach faktów
• wymiary przechowywane w tabelach
wymiarów
+ nie potrzeba dodatkowej pamięci
− niska efektywność
121
![Page 122: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/122.jpg)
Stosowane schematy w ROLAP
• Schematy podstawowe
– gwiazda
– płatek śniegu
• Schematy pochodne
– Konstelacja faktów
– Gwiazda – płatek śniegu
122
![Page 123: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/123.jpg)
Schemat gwiazdy
123
![Page 124: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/124.jpg)
Schemat płatka śniegu
124
![Page 125: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/125.jpg)
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”)
125
![Page 126: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/126.jpg)
Systemy hurtowni danych
• 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 Intelligence126
![Page 127: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/127.jpg)
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
127
![Page 128: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/128.jpg)
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
128
![Page 129: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/129.jpg)
CELE I TECHNIKI
REPLIKACJI/FRAGMENTACJI
DANYCH
129
![Page 130: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/130.jpg)
Replikacja danych
• Replikacja danych – proces powielania
danych pomiędzy różnymi serwerami baz
danych.
• Serwery lustrzane.
130
![Page 131: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/131.jpg)
Replikacja danych - cel
• 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 systemu131
![Page 132: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/132.jpg)
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.
132
![Page 133: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/133.jpg)
Klient
Serwer
głównySerwer
lustrzany
Ogólna architektura technologii
tworzenia lustrzanej kopii bazy danych
BD BDLog Log
Serwer
nadzorujący
Zapis w
dzienniku
lokalnym
Zatwierdzenie
w dzienniku
Zapis w
dzienniku
zdalnym Ciągłe
odtwarzanie
w kopii
lustrzanej
PotwierdzenieWykonanie
Potwierdzenie
Transmisja do
kopii lustrzanej
133
![Page 134: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/134.jpg)
Fragmentacja (partycjonowanie) danych
• Obiekty partycjonowane
• Podział tabeli na części, zwane
fragmentami lub partycjami
• Techniki fragmentacji
– pozioma
– pionowa
– mieszana
134
![Page 135: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/135.jpg)
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
135
![Page 136: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/136.jpg)
Fragmentacja pozioma
• 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)136
![Page 137: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/137.jpg)
Fragmentacja pionowa
• Rozbicie tabeli na fragmenty złożone z
podzbioru atrybutów
• Każdy fragment zawiera identyczną liczbę
rekordów
• Atrybut niekluczowy An może się znaleźć
tylko w jednym fragmencie
• Atrybut kluczowy znajduje się w każdym
fragmencie – służy do łączenia fragmentów
137
![Page 138: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/138.jpg)
Fragmentacja mieszana
• Połączenie fragmentacji poziomej i
pionowej
• Warianty
– Fragmentacja pozioma + pionowa
– Fragmentacja pionowa + pozioma
138
![Page 139: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/139.jpg)
Rodzaje fragmentacji - przykład
A1 A2 A3 A4 A5
1
2
3
4
5
6
7
8
9
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
1
2
3
4
A1 A2 A3 A4 A5
5
6
7
8
9
A1 A2
1
2
3
4
A1 A4 A5
5
6
7
8
9
A1 A3 A4 A5
1
2
3
4
A1 A2 A3
5
6
7
8
9
mieszana
pozioma
pionowa
139
![Page 140: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/140.jpg)
Podsumowanie
• Języki SQL, T-SQL
• 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
140
![Page 141: Internetowe Bazy Danych - roman.ptak.staff.iiar.pwr.wroc.plroman.ptak.staff.iiar.pwr.wroc.pl/BD_wyklad_nr3_2020_ver1.pdf · po awarii 16. Informacje o plikach fizycznych •Informacje](https://reader033.fdocument.pub/reader033/viewer/2022050508/5f992efb8fba813be97317bf/html5/thumbnails/141.jpg)
DZIĘKUJĘ ZA UWAGĘ
Pytania?