profil

Bazy danych

poleca 87% 102 głosów

Treść
Grafika
Filmy
Komentarze

1 Wstęp do baz Danych
Wymagania SIZ ?
• Obsługa złożonych struktur danych
• Realizacja pracochłonnych procedur przetwarzania
• Wykonywanie zadań za pośrednictwem sieci
komputerowych
• Zapewnienie elastyczności struktur i procedur
• Gwarancja wysokiego poziomu niezawodności i
ochrony
• Możliwość współużytkowania danych (dostęp do
wspólnych
zasobów, obsługa transakcji współbieżnych …)
Rodzaje użytecznych technologii informacyjnych
• Obsługa złożonych struktur danych
• Realizacja pracochłonnych procedur przetwarzania
• Wykonywanie zadań za pośrednictwem sieci
komputerowych
• Zapewnienie elastyczności struktur i procedur
• Gwarancja wysokiego poziomu niezawodności i
ochrony
• Możliwość współużytkowania danych
SZBD – oprogramowanie narzędziowe służące do
obsługi BD; przykłady: MS: Access, SQL Server Oracle
Corp. ...
SiZ – Systemy informatyczne Zarządzania
BD - zbiór wzajemnie powiązanych danych o
organizacji i dostępie ściśle określonym przez SZBD;
Właściwości BD:
– minimalna powtarzalność danych
– integralność i poufność danych
– niezależność danych i programów
– bezpieczeństwo i niezawodność
– wielodostęp (współużytkowanie)
– ...
SBD - system informatyczny zaprojektowany i
eksploatowany zgodnie z technologią BD (aplikacje
użytkowe)
Użytkownicy aplikacji: personel podstawowy,
kierownik, specjalista, zarząd
Informatycy: analityk systemowy, programista,
administrator (BD, sieci …), technolog (BD, sieci …)
Model danych - wynik procesu modelowania
rzeczywistości; składa się z elementów:
• formalnego zapisu dla wyrażania danych i związków
• operacji na danych służących do realizacji
przetwarzania
Typy modeli danych
• „rekordowo” zorientowane (hierarchiczny, sieciowy,
relacyjny)
• obiektowo zorientowane (E-R-A, semantyczne,
obiektowe)
• modele fizyczne (indeksowanie: B-tree, ISAM, Hashbased)
Języki BD - środki wyrażania różnych operacji
podczas tworzenia i eksploatacji BD;
Rodzaje języków BD:
• języki opisu danych ==> definiowanie struktury
(podstruktury) logicznej BD
• języki opisu pamięci ==> definiowanie struktury
fizycznej BD
• języki manipulowania danymi ==> przetwarzanie
aktywne i pasywne BD (tryb programowy)
• języki zapytań ==> przetwarzanie pasywne i aktywne
BD (tryb bezpośredni)
Właściwości relacji:
• nie ma powtarzających się wierszy
• istnieje klucz główny relacji
• wiersze są nieuporządkowane (z góry na dół)
• atrybuty są nieuporządkowane (z lewej na prawą)
• wszystkie wartości atrybutów są elementarne
Reguły integralności relacji:
• zdefiniowanie poprawnego klucza głównego tabeli
(klucze kandydujące, unikalność, minimalność)
• niedopuszczanie do wartości zerowych i nieznanych
(elementów) klucza głównego
• integralność tabeli
• wprowadzanie poprawnych wartości kluczy obcych
• integralność związków między tabelami
Obiektowy model bazy danych:
- przechowuje obiekty
- Obiekt ma tożsamość i jest określany przez atrybuty i
zachowanie
Relacyjny model bazy danych
- przechowuje rekordy w tabelach, z których każda ma
stałą liczbę kolumn
Hermetyzacja polega na oddzieleniu specyfikacji od
implementacji i ukryciu nieistotnych szczegółów
implementacyjnych - jest podstawową zasadą nie tylko
obiektowości, ale całej inżynierii oprogramowania.
Dziedziczenie to wywodzenie nowych typów obiektów
z typów już istniejących
zakres funkcjonalny SZBD
• Udostępnienie języka służącego do konstruowania i
modyfikacji złożonych struktur danych
• Dostarczenie narzędzi pozwalających na efektywne
przetwarzanie BD
• Oferowanie mechanizmów gwarantujących
niezawodność i bezpieczeństwo BD
• Inne funkcje: wymiana danych z otoczeniem, obsługa
BD w środowisku rozproszonym, implementacja baz
wiedzy
1 Języki zapytań
Zapytanie [kwerenda] - dowolna funkcja stosowana
do relacji/klasy, np.: wyszukiwanie, tworzenie i
aktualizacja struktur BD. Zapytania w praktyce są
wyrażane w JZ.
Klasyfikacja języków zapytań:
wykorzystujące algebrę relacji ⇒ (proceduralne)
⇒ wykorzystujące rachunek predykatów
(nieproceduralne)
SQL (Structured Query Language)
⇒ klasyczne operacje algebry relacji:
• suma S=A ∪ B (union)
Suma: S= A UNION B
Kontrahent=Odbiorca UNION Dostawca
• różnica R=A - B (minus, difference)
Różnica: R= A MINUS B
Odbiorca = Kontrahent MINUS Dostawca
• przecięcie P=A ∩ B (intersection)
Przecięcie: P = A INTERSECT B
Kontrahent dost = Kontrahent INTERSECT Dostawca
(ww operacje są wykonywane dla relacji
jednakowych typów)
• iloczyn kartezjański K=A x B (times)
Iloczyn kartezjański K=A TIMES B
Towar zamówiony =Towar TIMES Dostawca
⇒ specjalne operacje relacyjne:
• restrykcja (wybór) W=σw(A) (restrict, select)
Wybór: R= σw(A) ==> operatory:
-- porównania arytmetycznego np.: =,<,>,≠, ...
-- porównania logicznego np.: ∨, ∧, ¬
Dostawca Szczecin = SELECT Dostawca WHERE
Adres = Szczecin*
• rzut RZ=πA1,...,An (A) (project)
CenyTowarów=Dostawa[#Indeks,Cena]
• złączenie Z=A | x | B [where X = Y] (join)
Złączenie: Z=A JOIN B [where X = Y]
Dostawcy Towarów=Dostawca JOIN Dostawa
• podzielenie D=A ÷ B (divide)
Podzielenie: D=A DIVIDE B
Dostawca wszystkiego = Dostawa DIVIDE Dostawca
⇒ dodatkowe operacje relacyjne:
• rozszerzenie RO=(A) + X1,...Xn (extension)
• przemianowanie ŋX= ŋ’X (rename)
Rachunek predykatów krotek (RPK) – definiowanie
wyniku za pośrednictwem wyrażeń, na które składają
się:
• odwołania do relacji, zmiennych i atrybutów,
identyfikowanych przez nazwy,
• operatory arytmetyczne i logiczne m.in.: =,>,<,∀, ∃, ¬,
∧, ∨
• zmienne krotkowe określane poprzez zdanie:
RANGE OF R IS X1,X2,...Xn; są one traktowane jak
zmienne wolne lub związane Np.
RANGE of Towar is Dostawa
RETRIEVE (Towar.I#) where Towar.Cena > 100;
Formalizacja zapytań w języku Quel:
• Podaj dostawców, którzy dostarczyli
drukarkę PRDJ600: ==> RETRIEVE
(Dostawca.D#) WHERE Dostawa.Indeks# =
‘PRDJ600’
• Podaj dostawców, którzy nie dostarczyli
procesora PIP2000: ==> RETRIEVE
(Dostawca.D#) WHERE ANY (Dostawa.D# BY
Dostawca.D# WHERE Dostawca.D# = Dostawa.D#
AND Dostawa.Indeks# = ‘PIP2000’) = 0
Rachunek predykatów dziedzin (RPD)
-definiowanie wyniku za pośrednictwem wyrażeń,
na które składają się:
• odwołania do relacji, zmiennych i atrybutów,
identyfikowanych przez nazwy,
• operatory arytmetyczne i logiczne m.in.:
=,>,<,∀, ∃, ¬, ∧, ∨,
• zmienne dziedzinowe, które odpowiadają zbiorom
atrybutów
Np. (firma) where Dostawca (Kod#: firma, adres:
‘Wroclaw’)
• Formalizacja zapytań w języku QBE:
=> Wykorzystanie szablonów i kodów operacji:
.P (Print, Present), .U(Update), .I(Insert), .D(Delete)
3 SQL
Rodzaje: Interaktywny SQL, Statyczny SQL,
Dynamiczny SQL
Standardy: SQL86, SQL89, SQL92, SQL99(3/4)
Podział poleceń:
• definiujące i modyfikujące obiekty BD
(DDL): Create, Alter, Drop
• aktualizujące BD (DML): Insert, Delete, Update
• wyszukujące dane: Select
• służące do administrowania BD: Desc[ribe],
Grant/Revoke, Commit/Rollback, Connect/Exit,
Startup/Shutdown, Recover, Backup, Analyze, Set,
Execute, ...
Manual:
• Create | Drop | Alter { Database Link | Function |
Index | Package| Procedure | Profile | Role | Synonym
| Snapshot | Table| Type| Trigger | User | View }
• Alter table nazwatabeli {Add | Modify |Drop}
{column}
• Delete from nazwatabeli [where warunek]
• Insert into nazwatabeli (pole1, pole2...)
[where warunek] values (wartość1, wartość2,..,)
• Update nazwatabeli set nazwapola1=wyrażenie ...
[where warunek] ;
Tworzenie tabel:
Create table nazwatabeli (nazwapola1 typpola1, ...
nazwapolan typolan) [NOT NULL],
– [, primary key (nazwapola...)]
– [, foreign key (nazwapola...)...]);
==> Create table Dostawca (Kod char(5),
Nazwa varchar2(30) NOT NULL, Adres
varchar2(40) NOT NULL, Primary key (Kod) );
Definiowane indeksu:
Create [unique] index nazwaindeksu
On nazwatabeli (nazwapola [Order] ... (,nazwapolan
[Order]);
==> Create unique index Dostawcy on
Dostawca (Kod asc);
Modyfikowanie i usuwanie:
Alter table nazwatabeli add nazwapola typpola;
==> Alter table Dostawca add Status char(1);
Drop table nazwatabeli;
Drop index nazwaindeksu;
==> Drop table Dostawca;
==> Drop index Dostawcy;
Przykłady (na bazie przedst. poniżej):
SELECT
Select [Distinct] wyrażenie | nazwapola1,
... nazwapola2 | * [as alias][Rank () Over][…]
– From nazwatabeli1 [,... nazwatabelin]
– [Where warunek] (=,>, <, ..., and, or, not, [Not]
Exists,
– [Not] In, [Not] Like, Is [Not] Null, Between])
– [Group by [Rollup] [Cube] nazwapola1, ...
nazwapolan]
– [Having warunek]
– [Union, Intersect, Except]
– [Order by nazwapola11, ... nazwapolan [Asc|Desc]];
Lista wszystkich pól i pozycji towarów
- Select * from Towar;
Wybranie symboli dostawców ze statusem 'P’ z tabeli
Dostawca
- Select Dostawca, Nazwa from Dostawca where
status='P';
Wybranie pojedynczych symboli towarów z tabeli
Dostawa
- Select distinct Indeks from Dostawa;
Lista towarów z obliczonymi wartościami =cena * ilosc
- Select Indeks, 'Wartość’ AS Cena * Ilosc from
Dostawa;
Lista towarów dostarczonych przez IBM o cenie
powyżej 500
- Select Indeks from Dostawa where Dostawca='IBM'
and cena >500;
Alfabetyczna lista towarów
- Select Indeks,Nazwa from Towar order by nazwa asc;
Zestawienie adresów dostawców
- Select Towar, Adres from Dostawa, Dostawca where
Dostawa. Dostawca = Dostawca.Kod;
Podać liczbę dostawców
- Select count (*) ''Liczba dostawców '' from Dostawca;
Podać najniższą cenę na procesor Pentium 1200
- Select min(Cena) from Dostawa where
Indeks='PIP1200';
Podać ilość dostarczonych drukarek o symbolu
PRDJ600
- Select sum(Ilosc) from Dostawa where
Indeks='PRDJ600';
Podać zagregowane ilości dostarczonych towarów
- Select Indeks, sum(Ilosc) from Dostawa group by
Indeks;
Podać symbole towarów dostarczonych więcej niż
jeden raz
- Select Indeks from Dostawa group by Indeks having
count(*) > 1;
Podać nazwy dostawców, którzy dostarczyli klawiatury
- Select nazwa from Dostawca where Dostawca in
(Select Dostawca from Dostawa where Indeks =
'KBUS101');
Podać dostawców, którzy dostarczyli procesory
Pentium 1000 lub są z Wrocławia
- Select Dostawca from Dostawa where Indeks =
'PIP1000' Union Select Dostawca from Dostawca
where Adres like ‘%Wrocław%';
Rem Tworzenie sum częsciowych (rollup)
- Select dostawca, indeks, sum(ilosc) from dostawa
group by rollup (dostawca, indeks);
Rem Tworzenie sum (cube)
- Select data, indeks, sum(ilosc) from dostawa group by
cube (data, indeks);
- Select indeks, data, sum(ilosc) from dostawa group by
cube (indeks,data)
Rem Szeregowanie danych (rank)
- Select indeks "Produkt", round(sum(ilosc),0) "suma
sprzedaży", rank () over (order by sum(ilosc) desc) as
ranking from dostawa group by indeks;
INSERT
Insert into nazwatabeli [(nazwapola1, ... [,nazwapolan])]
values (wartość1, ... [,wartośćn]);
Insert into nazwatabeli [(nazwapola1,...[,nazwapolan])]
Select ...
Dopisać AE Wrocław do tabeli odbiorców
- Insert into Odbiorca values (‘AEWw', ‘Akademia
Ekonomiczna ...', '...');
Wpisać jako kontrahentów zapisanych w tabelach
dostawców i odbiorców
- Insert into Kontrahent Select * from Dostawca Union
Select * from Odbiorca;
Dopisać dostawę procesora PIP1450
- Insert into Dostawa (Indeks, Ilosc,Dostawca) values
('PIP1450',20,'DEC');
UPDATE
Update nazwatabeli set nazwapola1 = 'wartość1 [,...
nazwapolan = 'wartośćn] [where warunek]
Wstawić cenę dostarczonego przez DEC procesora
PIP1450
- Update Dostawa set Cena = 250 where
Indeks='PIP1450' and Dostawca='DEC';
Wyzerować ilości towarów dostarczonych przez
dostawców zagranicznych
- Update Dostawa set Ilość = 0 where 'Z' =(Select
Status from Dostawcy, Dostawa where
Dostawcy.Kod=Dostawa.Dostawca);
DELETE
Delete from nazwatabeli [where warunek];
Usunąć wszystkich kontrahentów
- Delete from Kontrahent;
Usunąć odbiorców z grupy budżetowej
- Delete from Odbiorca where Status = 'B';
Usunąć dostawy dostawców zagranicznych
- Delete from Dostawa where 'Z' =(Select Status from
Dostawcy, Dostawa where
Dostawca.Kod=Dostawa.Dostawca);
Nowe właściwości SQL3:
• Wprowadzenie obsługi obiektów:
– Definiowanie abstrakcyjnych typów danych (ADT)
– Deklarowanie procedur
– Implementacja właściwości podejścia obiektowego:
hermetyzacja, dziedziczenie, polimorfizm itd.
• Rozbudowana obsługa tabel i relacji:
– Definiowanie typów wierszy
– Deklarowanie tabel podrzędnych
– Nowe typy związków między tabelami
• Wprowadzenie struktur programowych:
– przydzielania/usuwania (Assignement, Destroy)
– sterujące (Call, Return)
– testujące (If-Then, Case, Loop)
– parametryzacja konstrukcji programowych (Public,
Protected, Private)
• Obsługa rozproszonych źródeł danych
(technologia K/S, standard JDBC)
Przykładowe rozszerzenia Oracle 9i/10g:
• operatory: cross join, natural join, using
• opcja case w Select
• wartości default dla pól nieznanych
• funkcje dot. czasu: current_time,
localtimestamp, extract, systimestamp…
• implementacja funkcji znakowych na lob
• analiza online struktury bazy
• wspomaganie analityczne BI
np.:
select aktor.nazwisko, tytul from aktor,obsada;
--w O9i (Cartesian product)
select aktor.nazwisko, tytul from aktor cross join
obsada;
select aktor.nazwisko,tytul from aktor ,obsada where
aktor.nazwisko=obsada.nazwisko;
--w O9i (natural join)
select nazwisko, tytul from aktor natural join obsada;
--w O9i (natural join)
select nazwisko, tytul from aktor join obsada
using(nazwisko);
select nazwisko,
(case plec
when 'M' then 'mężczyzna'
when 'K' then 'kobieta'
else 'nieokreślona'
end) as PLEC from aktor;
select dbtimezone from dual;
select extract (year from systimestamp) rok, extract
(month from systimestamp) miesiąc from dual;
CREATE SEQUENCE nazwasekwencji [INCREMENT
BY LICZBA START WITH LICZBA MAXVALUE
LICZBA MINVALUE LICZBA CYCLE|NOCYCLE];
create sequence licznik increment by 10 start with 10
maxvalue 1000 minvalue 10 nocycle;
insert into dostawca values('abc', 'Dostawca ABC',
'Wroclaw', 'Z', '1234','[email protected]', 'www.abc.pl',
120000, licznik.nextval);
insert into dostawca values('bcd', 'Dostawca BCD',
'Wroclaw', 'Z', '122234','[email protected]', 'www.bcd.pl',
129890000, licznik.nextval);
4 Struktury logiczne
1. Typy odwzorowań w BD
• Modelowanie pojęciowe => E-R-A diagram
• Projektowanie struktur logicznych => schemat BD
• Projektowanie struktur fizycznych:
→ odwzorowanie schematu BD zgodnie
z wymaganiami SZBD
→ fizyczne reprezentowanie BD
→ projektowanie systemu ochrony;
•…
Typy odwzorowań związków:
1:1 → A-B 1:N → A→ B M:N → A ↔ B
Elementy projektowania schematu BD:
• konceptualne (bez odniesienia do SZBD) –
zapisanie informacji o projekcie w standardowej
notacji ER (diagramy Chena lub UML) niezależnej
od docelowego SZBD.
• logiczne (dla SZBD konkretnego typu, np.
relacyjnego lub obiektowego) – podział danych na
struktury dostępne w SZBD.
• fizyczne (dla konkretnego SZBD) – zdefiniowanie
dziedzin, relacji, indeksów, perspektyw,
użytkowników z uprawnieniami itp.
Perspektywa (ang. view) - dynamiczny wynik
wybranych operacji na relacjach/klasach
zapamiętywany jako wirtualna tabela/klasa.
SQL: tworzenie i usuwanie perspektyw
- CREATE VIEW nazwaperspektywy [(nazwakol1
nazwakol2, ...)]
AS kwerenda [WITH [CASCADED | LOCAL]
CHECK OPTION]
CREATE MATERIALIZED VIEW
nazwaperspektywy [REFRESH on ....] [ENABLE
QUERY REWRITE] AS kwerenda;
DROP VIEW nazwaperspektywy [RESTRICT |
CASCADE]
Przykłady perspektyw
Perspektywa pionowa:
CREATE VIEW adresydostawcow
AS SELECT kod, nazwa, adres FROM
⁡ dostawca;
Perspektywa pozioma:
CREATE VIEW dostawyklawiatur
AS SELECT * FROM dostawa WHERE
Indeks = ‘KBUS101’;
Perspektywa złożona:
CREATE VIEW towarydostarczone (Indeks,
Ilosc)
AS SELECT dostawa.indeks, sum( ilosc)
FROM towar, dostawa, dostawca
WHERE towar.indeks=dostawa.indeks and
dostawca.kod=dostawa.dostawca GROUP BY
dostawa.indeks;
Orzykłady perspektyw zmaterializowanych
Odnotowanie tabel w dzienniku:
CREATE MATERIALIZED VIEW LOG ON dostawca
WITH PRIMARY KEY , ROWID(nazwa) INCLUDING
NEW VALUES;
CREATE MATERIALIZED VIEW LOG ON dostawa
WITH PRIMARY KEY , ROWID (indeks, dostawca,
data) INCLUDING NEW VALUES;
CREATE MATERIALIZED VIEW LOG ON towar WITH
PRIMARY KEY , ROWID(indeks) INCLUDING NEW
VALUES;
Perspektywa zmaterializowana:
CREATE MATERIALIZED VIEW towarydostarczone
REFRESH FAST ON COMMIT
ENABLE QUERY REWRITE
AS SELECT dostawa.indeks, sum( ilosc)
FROM towar, dostawa, dostawca
WHERE towar.indeks=dostawa.indeks and
dostawca.kod=dostawa.dostawca
GROUP BY dostawa.indeks;
korzystanie z perspektyw
Select * from adresydostawcow;
Select nazwa, adres from adresydostawcow;
Update adresydostawcow set nazwa='Nowa' where
kod='IBMPol' ;
Select kod from dostawyklawiatur;
Select suma(ilosc) from dostawyklawiatur where data>
'31-01-2007';
Delete from dostawyklawiatur where data< '31-01-
2007';
Select * from towarydostarczone where ilosc <1000;
Insert into towarydostarczone Values('PIP50',20);
- Plusy i minusy perspektyw:
Za:
• logiczna niezależność danych
• wzmocnienie ochrony
• upraszczanie zapytań
• przystosowanie dla użytkowników
• poprawa integralności
Przeciw:
• ograniczenia aktualizacyjne
• ograniczenia strukturalne
• obniżenie wydajności
5 Struktury fizyczne
Rodzaje nośników
Organizacja fizyczna BD
Organizacja plików
Struktury fizyczne w Access:
Struktury fizyczne w Oracle:
Struktury fizyczne w SZBD Oracle
• Instancje (serwer BD)
• Baza danych (Tablespaces, Datafiles)
• Inne pliki (Redologs, Control files, Trace Files, Alert
logs)
• Pliki zarządzane przez Oracle(OMF:katalogi, pliki
OS)
• Procesy (podstawowe i drugoplanowe)
• Struktury BD (table, columns, datatypes, abstract
datatypes, constraints, partitions, users, schemas,
indexes, clusters, views, sequences, procedures,
functions, packages, triggers, synonyms, privileges,
roles, database links, segments, extends, blocks,
undo/rollback segments, materialized views, context
areas, SGA, PGA, backup/recovery/security
capabilities)
Pliki BD Oracle:
• systemowe (System)
• dane (User_Data)
• segmenty wycofywania
(Rollback_Data)
• tymczasowe
(Temporary_Data)
------------------------------------
• dziennika (Redo Log Files)
• sterujące (Control Files)
• startowe (Parameter Files)
FAZY BUDOWY BD:
• Modelowanie pojęciowe
=> E-R-A diagram
• Projektowanie struktur logicznych
=> schemat BD
• Projektowanie struktur fizycznych:
→ odwzorowanie schematu BD zgodnie
z wymaganiami SZBD
→ fizyczne reprezentowanie BD
→ projektowanie systemu ochrony
• Monitorowanie i strojenie BD
Organizacje rekordów w plikach
- sposób pamiętania rekordów i stron:
==> losowa (ang. heap) - sekwencyjny zapis i odczyt
==> indeksowa (ang. ordered, indexed) - pamiętanie i
szukanie rekordów wykorzystujące indeksy
==> bezpośrednia (ang. hash, random, direct) -
zapamiętywanie i odczyt rekordów zgodnie z
procedurą obliczającą bezpośredni adres (statyczną
i dynamiczną)
==> hierarchiczna (ang. B+Tree) – pamiętanie danych i
indeksów w postaci drzew binarnych
Krytyczne zasoby systemowe:
pamięć operacyjna, procesor, pamięć zewnętrzna
(operacje we/wy), sieć
Miary efektywności:
liczba przetwarzanych transakcji, czas reakcji systemu,
zajętość pamięci
Cele projektowania:
• określenie organizacji plików BD
• wyznaczenie metod dostępu do BD
Etapy projektowania:
Analiza transakcji, dobór organizacji plików
definiowanie indeksów, denormalizacja, szacowanie
pojemności dysku.
Analiza transakcji:
cel: zrozumienie wykonywanych
transakcji i analiza krytycznych
- charakterystyka transakcji poprzez określenie
częstotliwości realizacji, wykorzystywane tabele i
atrybuty, rodzaj przetwarzania, oczekiwany czas reakcji
- wyznaczenie zależności między transakcjami
krytycznymi
- analiza rzeczowa i czasowa transakcji
Dobór organizacji plików:
cel: określenie efektywnych
organizacji plików dla relacji
• losowa - dla przetwarzania sekwencyjnego
• indeksowa - dla przetwarzania mieszanego
• bezpośrednia - dla przetwarzania losowego
• hierarchiczna – dla przetwarzania losowego i
sekwencyjnego
Definiowanie indeksów:
cel: wyznaczenie indeksów poprawiających wydajność
przetwarzania
- wyznaczniki indeksowania: rodzaj i częstotliwość
przetwarzania, wykorzystywane atrybuty
- definiowanie indeksów atrybutów kluczy
kandydujących i obcych
Denormalizacja:
cel: rozważenie „kontrolowanej”
redundancji danych poprawiających
efektywność przetwarzania
- analiza przekrojowa transakcji i relacji
- wprowadzanie atrybutów o „wyliczanych”
wartościach
- obsługa „powtarzalnych grup danych”
Szacowanie pojemności dysku:
cel: wyznaczenie niezbędnych zasobów pamięci
zewnętrznej
- szacowanie pamięci indywidualnie dla różnych
organizacji plików
- uwzględnienie aktywności przetwarzania BD wraz
zakładanym rozwojem systemu
Polecenia języka SQL:
• Tworzenie plików BD:
Create {Global|Local} ⇒ Temporary Table ...
⇒ Declare Local Temporary Table ...
⇒ Create Table ...
⇒ Create Tablespace nazwa1 Datafile nazwa2 Size
9999 Autoextend on Next 999 Maxsize 999
•Tworzenie indeksów:
⇒Create Index ...
Tworzenie tabeli partycjonowanej
(partycjonowanie):
create tablespace adresy1 datafile '/adresy1.dbf‘ size
5m reuse
extent management local uniform size 128k;
create tablespace adresy2 datafile '/adresy2.dbf‘ size
5m reuse
extent management local uniform size 128k;
create tablespace adresy3 datafile '/adresy3.dbf‘ size
5m reuse
extent management local uniform size 128k;
Create table adres
(nazwa varchar2(20),
ulica varchar2(30),
dzielnica varchar2(20),
wojewodztwo varchar2(2))
storage (initial 160m next 160m pctincrease 0)
partition by hash (dzielnica)
partitions 3
Store in (adresy1, adresy2, adresy3);
Przeglądanie plików i indeksów BD:
⇒ select substr (owner,1,8) uzytkownik,
substr(table_name,1,25) tabela,
substr(tablespace_name,1,30) plikBD from
sys.dba_tables where owner='SYS’;
⇒ select tablespace_name, bytes, max_bytes from
sys.dba_ts_quotas;
⇒ select substr(table_name,1,15) tabela,
substr(index_name,1,30) indeks,
substr(column_name,1,15) pole, column_position from
sys.dba_ind_columns where table_owner='SYSTEM'
order by 1,2,3;
⇒ select tablespace_name, sum(bytes) from
sys.dba_free_space group by tablespace_name;
⇒ select * from v$filestat;
⇒ select owner, index_name, index_type, table_name
from dba_indexes where owner = ‘s1’
⇒ select owner, segment_name from
sys.dba_rollback_segs;
Pakiety wspomagające: TOAD
• Schema Browser:
⇒ Tables (parametry: size, extents...)
⇒ Indexes (parametry: tablespace, increase...)
• View:
⇒Table Space: objects, free space, storage...
• Tunning:
⇒Estimate Table Size
⇒Estimate Index Size
6 Implementacja wybranych
właściwości BD
Właściwości BD:
• niepowtarzalność danych (+)
• niezależność danych i programów (+)
• integralność (!)
• ochrona (!)
• współbieżność przetwarzania (!)
• niezawodność i bezpieczeństwo
danych (!)
• przetwarzanie rozproszone (?)
Poziom abstrakcji SBD a niepowtarzalność danych:
Poziomy abstrakcji SBD a niezależność danych i
programów:
Integralność BD:
• Integralność, poprawność (ang. integrity) BD -
właściwość polegająca na przechowywaniu danych
zgodnie z rzeczywistością;
• Konotacje integralności:
– BD (struktury danych)
– transakcji (dynamika działania)
• Integralność BD jest uzyskiwana:
– na podstawie zależności funkcjonalnych
atrybutów ==> model BD, projekt BD
– w wyniku zdefiniowanych zasad (więzów,
ograniczeń; ang. constraints) ==> schemat BD
Reguły poprawności baz relacyjnych:
• Atrybutowa (ang. column integrity)
• Dziedzinowa (ang. domain integrity)
• Obiektu (ang. entity integrity)
• Referencyjna (ang. referential integrity)
• Instytucjonalna (ang. enterprise integrity)
są wyrażane jako elementy definicji struktur w
schemacie BD jako charakterystyki pól w tabelach lub
jako samodzielne reguły (asercje, wyzwalacze)
Interpretacja reguł poprawności:
Dziedzinowa (dla wskazanej dziedziny):
• definiowanie dopuszczalnego zakresu wartości
• zwykle powiązana z definiowaniem atrybutu
– Create domain miara as Char(25) Check (Value IN
(‘sztuki', komplety’, ‘kg’, ‘cm’));
– Create domain data_dostawy as date (2,1) Check
(Value between 2000-01-01 and 2007-12-04);
Atrybutowa (dla kolumny w tabeli):
• „wyprowadzana” z definicji dziedziny lub ze
wskazanego typu danych (wartość unikalna czy
„niezerowa”)
• może odwoływać się do innych atrybutów lub swej
poprzedniej wartości (statyczna bądź dynamiczna
interpretacja)
– create table odbiorca (kod char(3) primary key, nazwa
varchar2(30) not null, adres varchar2(30), kodpoczt
char(6), status char, check (status in ('B', 'P', 'H', 'I')));
Obiektu (dla tabeli):
• definiowanie w tabeli atrybutów wzajemnie od siebie
zależnych ==> normalizacja
• definiowanie klucza w tabeli
==> Create table dostawca(Kod char(4) Primary Key,
...);
Referencyjna (dla tabel powiązanych):
• definiowanie właściwych kluczy obcych w tabelach
powiązanych
• definiowanie relacji pomiędzy tabelami (1:1, 1:N)
– Create table dostawa ( Indeks char(10) ..., Foreign
key (Indeks) References Towar(Indeks));
– Alter table dostawa add Foreign key (Indeks)
References Towar(Indeks));
• wyświetlanie definicji więzów integralności:
– select constraint_name,constraint_type from
user_constraints where table_name = 'DOSTAWA';
Instytucjonalna:
• Definiowana z punktu widzenia instytucji
• Dotyczy merytorycznych powiązań między danymi
pamiętanymi w bazie
• Może być wspomagana przez wyzwalacze (ang.
triggers) określające akcje po naruszeniu reguły
– definiowanie zależności między starymi i nowymi
wartościami atrybutów
– definiowanie akcji wynikających z naruszenia reguły
Polecenia tworzące i usuwające
reguły integralności w tabeli BD:
CREATE TABLE naztab1
{(nazkol1 typ1 [NOT NULL] [UNIQUE]
[DEFAULT wartość] CHECK predykat1 [atrybuty
ograniczenia], nazkol2 typ2 ...)}
[PRIMARY KEY (nazkol1, ...),]
{[UNIQUE (nazkol1,...),]
{[FOREIGN KEY (nazkol3)
REFERENCES naztab2(nazkol22)...]
[MATCH {PARTIAL|FULL}
[ON UPDATE reakcja1] [ON DELETE reakcja2][...,]}
{[CHECK predykat [atrybuty]...})
Klauzule wspomagające budowę reguł
• Definiowanie zależności między wartościami w krotce
==> Create assertion datadostawy Check
(dostawa.datadost > dostawa.datazamow)
• Definiowanie zależności między wartościami różnych
krotek
==> Create assertion towardost Check (dostawa.Indeks
Is In (Select Indeks From Towar))
• Modyfikowanie wartości pól na skutek dopisania
nowego rekordu
==> Create Trigger Iloscbiezaca On Insertion Of
Dostawa:
(Update Towar.Ilosc Set Ilosc =Ilosc + Dostawa.Ilosc
Where Towar.Indeks=Dostawa.Indeks)
NP. Create table odbiorca (kod char(3) primary key,
nazwa varchar2(30), adres varchar2(30), kodpoczt
char(6) default '51-200', status char, check (status in
('B', 'P','H', 'I')));
Alter table odbiorca add constraint status ck (check
(status in ('B', 'P', 'H', 'I')));
Create Trigger StanIlosc after Insert Of Dostawa:
(Update Towar Set StanIlosc=StanIlosc+IloscDost
Where Towar.Indeks=Dostawa.Indeks)
Elementy ochrony w BD:
Poufność (ang. data privacy) BD – zapewnienie
ochrony BD przed niepowołanym dostępem; zestaw
zabezpieczeń sterowanego dostępu do bazy dla
upoważnionych użytkowników (więzy autoryzacji)
Sposoby realizacji:
• sterowanie dostępem (prawa dostępu)
• sterowanie przepływem danych (kontrolowanie
przesłań)
• szyfrowanie (przechowywanie, przesyłanie w postaci
zakodowanej)
Przywileje: Obiekty BD:
• odczytu (Select, Read) • tabela
• wprowadzania (Create, Insert) • zapytanie
• usuwania (Drop, Delete) • inne
• modyfikowania (Update)
• dołączania atrybutów (Expand) Użytkownicy
• tworzenia indeksów (Index) (role_:
• inne • ABD
• grupa
• konto
• inne
Przywileje:
• systemowe: Analyze, Audit, Alter, Create/Drop,
Manage
• obiektowe: Alter, Delete, Index, Insert, Select, Update,
Reference, Execute.
Roles:
DBA, Connect, Resource, Exp/Imp DB
Obiekty BD
• schemat: database, table, trigger, index…
• inne: user, role, profile, tablespace, snapshot, view,
synonym, procedure
Polecenia SQL
• nadawanie uprawnień:
==> Create user kowalski identified by jan default
tablespace;
==> Create role student;
==> Grant all privileges to student with grant option;
==> Grant student to kowalski;
==> Grant select on dostawca to student;
• cofanie uprawnień:
==> Revoke create table from student;
==> Revoke all privileges on dostawca from kowalski;
Istota i zagrożenia dotyczące bezpieczeństwa BD:
• Warianty przetwarzania BD:
– sekwencyjne i wyłączne (“małe” BD)
– współbieżne i wspólne (“duże” BD)
• Transakcja - ciąg poleceń dotyczących zmian BD
wykonywany przez użytkownika (zapytanieprogram)
np. ==> dopisanie dostawy
==> zlecenie przelania sumy x z konta A na konto B
• BEGIN TRANSACTION:
– INSERT ({ T#:’2005-03-16’, KN#:’123’, KO#: 234,
Kwota:100,Typ:’P’}) INTO Transakcje;
IF any error occured THEN GO TO UNDO;
– UPDATE Konto WHERE K#=‘123’ Stan:= Stan+100;
IF any error occured THEN GO TO UNDO;
– UPDATE Konto WHERE K#=‘234’ Stan:= Stan-100;
IF any error occured THEN GO TO UNDO;
– COMMIT TRANSACTION;
• GO TO FINISH;
– UNDO;
• ROLLBACK TRANSACTION;
– FINISH;
• RETURN;
Commit = wypełnienie transakcji
Rollback = cofanie transakcji

Transakcja posiada cechy określane jako ACID:
• Atomicity (atomowość= wszystko albo nic)
• Consistency (zgodność = zmiany zgodne z regułami
BD)
• Isolation (izolacja = niezależność od innych transakcji)
• Durability (trwałość skutków = zmiany są
obowiązujące po zakończeniu transakcji).
Konsekwencja własności ACID ==>
szeregowalność (ang. serializability) = skuteknie zależy
od kolejności transakcji
Szeregowalność jest zapewniana przez tzw.
dwufazowe blokowanie (ang. two-phase locking), na
które składa się:
– Faza 1 - przetwarzanie - zgłaszanie
gotowości zapisu do BD koordynatorowi
– Faza 2 - potwierdzanie - zapisanie rezultatów
do BD z potwierdzeniem (kronika)
Niezawodność i bezpieczeństwo danych (ang. data
security) - sprowadza się do zapewnienia ciągłej,
bezkonfliktowej eksploatacji SBD
Sytuacje dotyczące bezpieczeństwa BD:
• utrata poufności
• naruszenie poprawności
• brak dostępu
Przykładowe sytuacje awaryjne Reakcja:
“przerwane” transakcje ==> cofanie BD
uszkodzenia systemowe ==> punkty kontrolne
awarie i inne zdarzenia ==> odtwarzanie BD
Zabezpieczenia przed awariami
==> 1. Zasoby:
• Baza danych (DB)
• Kopie archiwalne (backup)
• Dziennik, kronika (log, journal)
==> 2. Procedury ABD:
• składowanie, odtwarzanie, cofanie, szyfrowanie BD
- Składowanie (ang. Backup) BD -
polega na przygotowaniu kopii bazy, która pozwala na
odtworzenie stanu bazy w przypadku jej uszkodzenia
- Odtwarzanie (ang. Recovering, Repairing) BD -
sprowadza się do naprawienia i poprawnego
zamknięcia bazy w przypadku jej uszkodzenia bądź
awarii
- Cofanie (ang. Rollback) BD - powoduje przywrócenie
stanu BD dla ustalonego punktu kontrolnego BD
- (Od)szyfrowanie [ang. (D)Encrypting]- zapobiega
odczytaniu danych za pośrednictwem standardowych
narzędzi
Współbieżność przetwarzania( ang. concurrency) -
właściwość polegająca na równoczesnym
udostępnieniu wielu użytkownikom fragmentów lub
całej BD
• Problemy wynikające ze współbieżności:
– A. Utrata aktualizacji
• Czytanie danych o towarze (użytkownik A)
• Czytanie danych o towarze (użytkownik B)
• Aktualizacja ceny przez użytkownika A
• Aktualizacja ceny przez użytkownika B
→ Utrata aktualizacji użytkownika A
– B. Konsekwencje niewypełnionych transakcji
• Czytanie danych dot. towaru (użytkownik B)
• Aktualizacja ceny przez użytkownika B
• Czytanie danych dot. towaru (użytkownik A)
• Cofnięcie transakcji przez użytkownika B
→ Użytkownik A ma błędną informację dot. ceny
– C. Niepoprawny stan BD
R1=40 R2=50 R3=30
• Czytanie danych dot. towarów 1-3 (użytkownik A)
• Czytanie danych dot. 3 towaru (użytkownik A)
• Aktualizacja stanu bieżącego 3 towaru przez
użytkownika B
• Obliczanie sumy dot. towarów 1-3 (użytkownik A)
• Obliczanie sumy dot. towarów 1-3 (użytkownik B)
→ Użytkownik A ma błędną informację dot. sumy
towarów
Metody obsługi problemów wynikających z
przetwarzania współbieżnego:
• pesymistyczna (fazy: przygotowania, realizacji)
⇒ Kontrola dostępu przez blokowanie (ang. locking)
⇒ Kontrola dostępu wykorzystująca znaczniki
czasowe transakcji i danych (ang. timestamping)
• optymistyczna (fazy: czytania, kontroli, zapisu)
Blokowanie - uniemożliwienie dostępu
innym transakcjom do czasu
zakończenia bieżącej transakcji
Rodzaje blokowania:
- dzielone (S = ang. Shared)
- wyłączne (X = ang. eXlusive)
⇒ Kontrola dostępu przez blokowanie
(ang. locking)
Impas (ang. deadlock) - oczekiwanie na zwolnienie
dostępu, podczas gdy inne transakcje go uzyskują

Zakres (poziom) blokowania = blokowanie zamierzone
(ang. intent locking)
cała BD, tabela, rekord, pole
7 Koncepcja rozproszonych (R*) i
internetowych (i) BD
Istota i właściwości R*BD
Zasoby komputerowe:
• sprzęt (procesor, pamięci, urządzenia WE/WY, łącza
telekomunikacyjne)
• oprogramowanie(systemowe, narzędziowe, użytkowe)
• BD, pliki danych
• obsługa i użytkownicy
Przetwarzanie:
• scentralizowane /wielodostęp
• zdalne (sieci: lokalne i rozległe)
Komponenty SBD:
• Platforma sprzętowo-operacyjna SO
• Baza danych BD
• Funkcje (programy) użytkownika FU
• System Zarządzania Bazą Danych SZBD
Architektura klient/serwer:
rozdzielenie programów od pozostałych elementów
Standardy architektury K/S:
•SQL/92 (Connect/Disconnect, Set Connection)
•ISO/SAG Remote Data Access (formaty i protokoły)
Rozproszona BD (ang. Distributed Database) - SBD,
w którym wiele węzłów przetwarzania połączono w sieć
i istnieje możliwość dostępu z dowolnego miejsca do
całej BD
Przesłanki realizacji R*BD:
• rozproszenie systemu informacyjnego
• rozwój teleprzetwarzania
• hierarchizacja przetwarzania danych
• poprawa parametrów eksploatacyjnych
Zasady „rozpraszania” BD wg Date’a
0. Fundamentalna (R*BD jak zwykła BD)
1. Lokalna autonomia węzła (local autonomy)
2. Równorzędność wszystkich węzłów (no reliance on a
central site)
3. Ciągłość przetwarzania (continuous operation)
4. Niezależność lokalizacji danych w BD (location
independence)
5. Niezależność fragmentacji BD (fragmentation
independence)
6. Niezależność replikacji BD (replication
independence)
7. Rozproszone przetwarzanie zapytań (distributed
query
processing)
8. Rozproszone zarządzanie transakcjami (distributed
transaction
management)
9. Niezależność sprzętowa BD (hardware
independence)
10. Niezależność „operacyjna” BD (operation system
independence)
11. Niezależność sieci komputerowej BD (network
indepenedence)
12. Niezależność SZBD (DBMS independence)
Właściwości R*BD:
• R*BD stanowi kolekcja logicznie powiązanych i
współużytkowanych danych
• BD jest podzielona na fragmenty
• Fragmenty mogą być replikowane
• Fragmenty/repliki są alokowane w węzłach
• Węzły są połączone w sieć o uzgodnionych
zasadach współpracy
• Dane w każdym węźle są pod kontrolą SZBD
(autonomia)
• Przetwarzania R*BD odbywa się na dwu
poziomach: globalnym i lokalnym
• Każdy SZBD w R*BD uczestniczy przynajmniej w
jednej globalnej aplikacji
R*BD - funkcje SZR*BD
Wszystkie funkcje SZBD obsługującego bazę
scentralizowaną
+ Obsługa komunikacji zapewniającej dostęp do
zasobów
R*BD
+ Administrowanie poszerzonym katalogiem systemu
zawierającym szczegóły „rozpraszania” BD
+ Rozproszone przetwarzanie zapytań (z
optymalizacją)
+ Poszerzona obsługa współbieżnego przetwarzania
zapewniająca spójność replikowanych danych
+ Poszerzona obsługa funkcji odtwarzania R*BD
przeciwdziałająca uszkodzeniom węzłów i połączeń
sieciowych
R*BD – przykład
KSIĘGARNIA
Tabele:
* Towar (Indeks, Nazwa, JM, Cenaśrednia, Stan)
* Kurier(Kod, Nazwa, Adres, Obroty, Status)
* Sprzedaż (Oddział, Indeks, Data, CenaSprzedaży,
WartośćSprzedaży)
* Klient (Kod, Nazwa, Adres, Obroty)
KSIĘGARNIA*
→ Rozproszenie BD:
- Tabele: Kurier, Sprzedaż podzielone na fragmenty
poziome w oddziałach
- Tabele: Towar, Klient powielone w oddziałach lub
przechowywane w centrali
R*BD - czynności (wymiary)
Replikacja Fragmentacja Alokacja
R*BD – fragmentacja (partycjonowanie)
jednostka “rozpraszania”:
- tabele (podschematy są podzbiorami
relacji ==> dobra komunikacja)
- perspektywy (współbieżne wykonywanie
transakcji, złożona obsługa integralności)
alternatywy fragmentacji:
- pozioma (HF) ==> σp (R)
- pionowa (VF) ==> Πa1, a2,...an(R)
- mieszana (H/VF)
R*BD – przykład partycjonowania
Sprzedaż
Oddział Indeks Dział Data Cena Ilosc
W1 8320425415 I 010207 87 3
W2 8320425413 B 010207 17 1
W1 8320425411 K 010206 27 3
S1 8340425412 B 010207 37 5
S3 8323425414 I 211206 43 12
K1 8320222541 F 010207 17 7
G1 8320423517 X 010207 86 2
W2 83205525417 R 010206 80 4
W2 8360425417 R 011206 48 5
W2 8326425417 U 210207 33 6
W2 8327425417 P 010207 12 3
Partycjonowanie poziome (HF)
==> przykład: Książki w oddziałach (W1, W2, S1, …)
Sprzedaż
Oddział Indeks Dział Data Cena Ilosc
W1 8320425415 I 010207 87 3
W1 8320425411 K 010207 27 3
W2 8320425413 B 010206 17 1
W2 8360425417 R 011207 48 5
W2 8326425417 U 210207 33 6
W2 8327425417 P 010207 12 3
W2 83205525417 R 010206 80 4
S1 8340425412 B 010206 37 5
S3 8323425414 I 211206 43 12
K1 8320222541 F 010207 17 7
G1 8320423517 X 010207 86 2
Partycjonowanie pionowe (VF)
==> przykład: Wartosc Sprzedazy, Rodzaj Sprzedazy
Wartosc Sprzedazy Rodzaj Sprzedazy
Oddział Cena Ilosc Oddział Indeks Dział Data
W1 87 3 W1 8320425415 I 010207
W2 17 1 W2 8320425413 B 010207
W1 27 3 W1 8320425411 K 010206
S1 37 5 S1 8340425412 B 010206
S3 43 12 S3 8323425414 I 211206
K1 17 7 K1 8320222541 F 010206
G1 86 2 G1 8320423517 X 010206
W2 80 4 W2 83205525417R 010206
W2 48 5 W2 8360425417 R 011207
W2 33 6 W2 8326425417 U 210207
W2 12 3 W2 8327425417 P 010207
Kryteria oceny poprawności partycjonowania:
• kompletność
==> Dekompozycja relacji R na fragmenty R1, R2, ...,
Rn jest kompletna, jeżeli i tylko jeżeli każda dana z
relacji R może być znaleziona w jakiejś relacji Ri
• odtwarzalność
==> Jeżeli relacja R została zdekomponowana na
fragmenty R1, R2, ... Rn to powinien istnieć taki
operator ∇, że: R = ∇ Ri
• rozłączność
==> Jeżeli relacja R została zdekomponowana na
fragmenty R1, R2, ...Rn i dana di jest w relacji Rj to di
nie powinna być w dowolnym innym fragmencie Rk (k≠j
Partycjonowanie w ORACLE:
Element definicji tabeli:
Create table ….[Partition …];
Partycjonowanie: zakresowe, wg listy, haszowane
CREATE TABLESPACE LATA80 DATAFILE
‘...\LATA80.DBF'
SIZE 30 M AUTOEXTEND ON NEXT 2 M; …
(CREATE TABLESPACE: LATA 90,00…)
CREATE TABLE SPRZEDAZ (INDEKS
VARCHAR2(10), ILOSC NUMBER(10,2), DATA DATE,
CENA NUMBER(10,2),
PARTITION BY RANGE (DATA)
(PARTITION R80 VALUES LESS THAN
(to_date('01-01-1990 00:00:00','mm-dd-yyyy
hh24:mi:ss')) TABLESPACE LATA80, PARTITION
R90 VALUES LESS THAN (to_date('01-01-2000
00:00:00','mm-dd-yyyy hh24:mi:ss'))
TABLESPACE LATA90, PARTITION R00 VALUES
LESS THAN (MAXVALUE) TABLESPACE
LATA00);
Replikacja:
Jeżeli {ZC/ZA} >=1 to replikacja korzystna
<1 to replikacja dyskusyjna
gdzie: ZC – Zapytania czytające
ZA – Zapytania aktualizujące
• rodzaje replikacji: synchroniczna i asynchroniczna
• warianty rozwiązań: częściowa, pełna, niereplikowana
• dodatkowe funkcje replikacji: skalowanie,
transformowanie danych, obsługa obiektów BD,
mechanizmy subskrypcji i inicjacji
R*BD – replikacja
KSIĘGARNIA*
Replikowanie:
Tabele: Towar (pełna replika)
Klient (replika częściowa)
Kurier (niereplikowana)
Replikacja w ORACLE:
Warianty replikacji:
• pełna
• częściowa (migawka)
Właściwości symetrycznej replikacji:
• replikacja synchroniczna i asynchroniczna
• zaawansowane narzędzia obsługi replik: Replication
Catalog, Distributed Schema Management, Oracle
Server Manager, Replication Engine
• obsługiwane konfiguracje: multiple masters, updatable
snapshots, układy hybrydowe
• dostępne modele: primary site lub dynamic ownership
Alokacja
Procedura alokacji - istotne informacje:
• BD: selektywność i rozmiar fragmentów
• aplikacja: typ i liczba dostępów, lokalizacja dostępu
• węzeł: koszt pamiętania i przetwarzaniaw węźle
• sieć:koszt i zakres przesyłania danych
Ograniczenia alokacji:
• czas reakcji: czas realizacji zapytania
<= max. dopuszczalnego czasu
• pamięć: Σfragmenty wymagana. pam. frag.
<= dostępnej pamięci
• przepustowość: Σzapyt. ład. zapyt. węz.
<= wydajność węzła
R*BD – synteza projektowania:
R*BD – utrzymywanie katalogu
Zawartość katalogu systemowego (KSR*BD):
dane o strukturach i użytkownikach BD (schemat i
podschematy BD, indeksy, użytkownicy itp.) ==> SSD
• dane dotyczące przetwarzania rozproszonego
(fragmentacja, alokacja, replikacja) ==> SSR*BD
Warianty przechowywania KSR*BD:
• Scentralizowany (cały katalog w wybranym
węźle)
• Powielony (cały katalog w każdym węźle)
• Podzielony (każdy węzeł utrzymuje katalog dla
własnych obiektów; cały katalog jest sumą
wszystkich katalogów lokalnych)
• Mieszany (1+3; utrzymywanie własnego
katalogu, kopie przechowywane w węźle centralnym)
==> definiowanie:
Create synonym ltowar for jan.towar @ie2
==> utrzymywanie w węźle:
• tabeli synonimów
• informacji o obiektach, które w nim pierwotni
zapamiętano
• informacji o obiektach, które są aktualnie
pamiętane w węźle
==> wykonanie:
• Select ... from ltowar ...; lub
• Select ... from towar ...;
Koncepcja i funkcjonowanie internetowych BD
IBD (ang. Internet DB) – przetwarzanie połączeń
definiowanych w ramach plików tekstowych i innych:
• dokumenty prezentowane w sieci WWW
(formaty: SGML, HTML, XML)
• specjalizowane serwery wykorzystujące: CGI,
JDBC, JRB, ASP, ADO
Przykłady zastosowań:
• organizowanie złożonych strukturalnie zbiorów
informacji
• wyszukiwanie informacji w sieci Web
Architektura WEB
Biblioteki dla BD:
• JDBC - niskopoziomowa biblioteka
umożliwiająca współdziałanie z
dowolnym systemem obiektoworelacyjnej
bazy danych
• SQLJ - technologia/środowisko
prekompilacji kodu SQL zanurzonego
bezpośrednio w kodzie Java
Prekompilacja SQLJ:
8 Przetwarzanie współczesnych
BD
Przykład zadania - założenie: 100 D, 10000 DT, 50
“X”)
Podać nazwy dostawców dostarczających towar X
• Select Distinct D.Nazwa From D,DT Where D.D=DT.D
And Do.I=‘X’;
• Select Distinct D.Nazwa From D Where D.D IN
(Select DT.D From Do Where DT.I=‘X’);
• Select Distinct D.Nazwa From D Where Exists
(Select * From DT Where DT.D=D.D And DT.I=‘X’);
• Select Distinct D.Nazwa From D Where 0 < (Select
Count(*) From DT Where DT.D=D.D And DT.I=‘X’);
Przykład realizacji zadania
- wariant A
A1. Generowanie iloczynu DxDT
100+⇒ 10 000 Read (D+DT)
⇒ 1 000 000 Write (DxDT)
A2. Wybór dostaw 50 towarów “X”
⇒ 1 000 000 Read (DxDT) ⇒ 50
Write(DT.I=“X”)
A3. Dołączenie nazwy dostawcy
⇒ 100 Read (D) ⇒ 50 Write (D.Dnazwa)
==> dla A Σ 2 010 300 I/O
Przykład realizacji zadania
- wariant B
B1. Wybór dostaw towaru “X”:
⇒ 10 000 Read(DT) ⇒ [50 Write (DT)] ==> M w PAO
B2. Połączenie dostawców dostarczających “X”
⇒ 100 Read (D) [⇒ 50 Write (DT.I=“X”)]
==> M’ w PAO
B3. Dołączenie nazwy dostawcy ⇒[50 Read (D)]
<== M’ z PAO ⇒ 50 Write (D.Nazwa)
==> dla B Σ 10 150 I/O
- wariant C
CO. Indeksowanie tablicy DT
C1. Wybór dostaw 50 towarów “X”
⇒ 50 Read (DT.I=“X”)
C2-3. Jak w wariancie B
⇒ 100 Read (D) ⇒ 50 Write (D.Nazwa)
==> dla C Σ 200 I/O
Porównanie wariantów:
⇒ A/B ≅ 200 ⇒ A/C ≅ 10 050 ⇒ B/C ≅ 50
Optymalizacja przetwarzania zapytań - metody
• Optymalizacja wykorzystująca oszacowany
koszt przetwarzania zapytania (czas, zasoby):
– kalkulacja różnych wariantów kosztu
przetwarzania
– wybór wariantu optymalnego
• Optymalizacja heurystyczna:
– opracowanie zasad wynikających z doświadczeń
– dobór operacji i ocena rozwiązania
Alternatywy wyboru - przykład:
• Tabele:
– D(D#, Miasto) - 10 000 alokowanych w węźle A
– T(T#, X) - 100 000 alokowanych w węźle P
– DT(D#, T#) - 1 000 000 alokowanych w węźle B
• Założenie: długość zapisu = 25 bajtów (200 bitów)
Zapytanie ?:
• Podać kody dostawców (D#) z Krakowa
dostarczających towary X
• ==> SELECT D.D# WHERE EXISTS T
(D.Miasto=‘ Kraków’ AND D.D# = DT.D# AND
DT.T# = T.T# AND T.T = ‘X’);
Wstępne założenia:
• Szacowane liczebności rekordów:
- liczba towarów X = 10
- liczba dostaw z Krakowa = 100 000
• Szacowane czasy dotyczące transmisji i dostępu:
- szybkość transmisji (st) = 50 000 bitów/sek
- czas dostępu (cd) = 0,1 sek
Całkowity czas otrzymania odpowiedzi na zapytanie
dla określonej strategii “i”
T(i) = ccd + ( cpd/st ) = ( lk/10 ) + ( lb/50000)
gdzie:
ccd - całkowity czas dostępu
cpd - całkowita pojemność danych
lk - liczba komunikatów
lb - liczba bitów (długość komunikatu)
Wnioski:
• różne techniki prowadzą do odmiennych wyników
(1: 2 000 000)
• szybkość transmisji i czas dostępu są bardzo ważne
• czas dostępu może być ignorowany (porównując z
czasem transmisji) dla słabych strategii
Implementacja języków zapytań w R*BD:
Infrastruktura przetwarzania zapytań:
multibaza, multirelacja, multirelacyjne zapytanie
Przykład bazy BANK
Bank = { PKO, BZ/WBK, BPH/PEKAO } BD PKO
–Oddział(Nrod#, Nazwaod, Adresod, Telefod, Dyrod, ...)
–Rachunek(Nrach#, Kodkl#, Nrod#, Stan, ...)
–Klient(Kodkl#, Nazwiskokl, Telefkl, Typkl, Adreskl)
BD I/O PKO
• Rachunek(Nrach#, Kodkl#, Nrod#, Stan, Dataotw, .)
• Klient(Kodkl#, Nazwiskokl, Telefkl, Typkl, Adreskl)
BD II/O PKO
• Rachunek(Nrach#, Kodkl#, Nrod#, Stan, Dataotw, .)
• Klient (Kodkl#, Nazwiskokl, Telefkl, Typkl, Adreskl)
BD III/O PKO
• Rachunek(Nrach#, Kodkl#, Nrod#, Stan, Dataotw, .)
• Klient (Kodkl#, Nazwiskokl, Telefkl, Typkl, Adreskl)
BD BZ/WBK
• Oddział(Nrod#, Nazwaod, Adresod, Telefod, Faxod,
Dyrod, ...)
• Rachunek(Nrach#, Kodkl#, Nrod#, Stan, ...)
• Klient(Kodkl#, Nazwiskokl, Telefkl, Typkl, Adreskl)
BD BPH/PEKAO
• Oddział(Nrod#,Nazwaod, Adresod, Telefod, Dyrod, ...)
• Rachunek(Nrach#, Kodkl#, Nrod#, Stan, Dataotw,
Kred, ...)
• Klient(Kodkl#, Nazwiskokl, Telefkl, Typkl, Adreskl)
Języki zapytań dla multibaz:
• Algebra multirelacji = (AR + Moperalg}
• Rachunek predykatów multirelacji = {RP + Mforp}
• MSQL = {SQL + Mrozszerzenia}
Multibase SQL obejmuje dodatkowo:
• definiowanie lub zmianę tabeli w dowolnej bazie
• wyszukiwanie wykorzystujące złączenie danych
różnych BD
• dynamiczną agregację danych z różnych baz
• tworzenie multirelacji z wielu baz
Składnia i przykłady połączeń do baz zdalnych:
Create database link nazwa to user identified by pswd
using
nazwa
• Create database link IIE connect to scott identified
by tiger using ‘iie’;
• Select * from dostawa@iie;
• Select lok.indeks, zd.nazwa, lok.ilosc from dostawa
lok,
dostawa@iie zd where zd.indeks = lok.indeks;
• Znaleźć rachunki klientów, którzy są milionerami w
moim oddziale (II/OPKO)
Baza x{BZ/WBK, BPH/PEKAO, I/OPKO, III/OPKO}
==> SELECT * FROM x.Rachunek WHERE
x.Rachunek.Kodkl# = II/OPKO.Rachunek.Kodkl# AND
II/OPKO.Rachunek.Stan >1000000;
• Sprawdzić, czy klient II/OPKO ma rachunki w
innych oddziałach
Baza x{I/OPKO, III/OPKO}
==> SELECT* FROM x.Klient WHERE
x.Klient.Nazwiskokl = II/OPKO.Klient.Nazwiskokl;
Przykład Bazy LOT:
Lot (NrL, DATA, Skąd, Dokąd, Licz_wol, ...)
Klient (Nazwisko, Adres, ...)
Rezerwacja (NrL, DATA, NAZWISKO, Status)
Przykład transakcji - wersja SQL
Begin_transaction Rezerwacja
begin
input(Nr_lotu, Data, Nazwisko)
EXEC SQL SELECT Licz_wol
Into lw1,lw2
From Lot
Where NrL=Nr_lotu And Data=DATA;
if lw1=lw2 then output )„Brak miejsc”);
Abort
Else
EXEC SQL UPDATE Lot
Set Licz_wol= Licz_wol-1
Where NrL=Nr_lotu And DATA=Data;
EXEC SQL INSERT INTO Rezerwacja
(NrL, DATA, NAZWISKO, Status)
Values(Nr_lotu, Data, Nazwisko, null);
output(„Rezerwacja dokonana”)
Przetwarzanie transakcji
Charakterystyka transakcji:
• procedura użytkowa (jednostkowa-rozproszona)
• czas trwania (bezpośrednia-wsadowa)
• struktura (prosta-złożona)
• organizacja procedur read-write (dwu-krokowa,
ograniczona, model akcyjny)
Problemy związane z przetwarzaniem transakcji:
• struktura transakcji (prosta-złożona)
• wewnętrzna spójność BD (semantyczna kontrola
danych)
• protokoły niezawodności (atomalność i trwałość,
lokalne protokoły odtwarzania, globalne protokoły
potwierdzania)
• algorytmy sterowania współbieżnością
• protokoły sterowania replikami (sterowanie
spójnością danych replikowanych)
Dwufazowe zatwierdzanie (2FZ):
• Faza 1 - zgłaszanie gotowości zapisu
do BD koordynatorowi
• Faza 2 - zapisanie rezultatów do BD
z potwierdzeniem (kronika)
Ogólna reguła odrzucania/zatwierdzania:
• Koordynator odrzuca transakcję jeżeli i tylko jeżeli
co najmniej 1 użytkownik“odrzuca” transakcję
• Koordynator zatwierdza transakcję, jeżeli
wszyscy wypełniają transakcję
9 Rozwój BD
• obsługa czasu
• obsługa obiektów
• rozszerzenia bazy o
„meta-przetwarzanie”
(hurtownie danych,
OLAP, drążenie
danych)
Przegląd wybranych postrelacyjnych BD:
aktywne BD
ABD (ang. Active DBs) ==> rozszerzają
typowe przetwarzanie BD o elementy aktywne:
• procedury reagujące na zdarzenia
• procedury “czasowo” uwarunkowane
• przetwarzanie w czasie rzeczywistym
Przykłady ABD
• Starburst
• Chimera (A + ODBs)
• ALGRES (A + DDBs)
• opcje w niektórych SZBD: Oracle, Informix
temporalne BD
TBD (ang. Temporal DBs) ==> rozszerzają typowe
przetwarzanie BD o atrybuty czasowe:
• rejestracja wartości atrybutów
zmieniających się w czasie
• przetwarzanie ciągów czasowych
Przykłady TBD
• opcje w SZBD: Oracle, Sybase (typy zmiennych
czasowych)
• specjalizowany SZBD: TimeDB
przestrzenne BD
PBD (ang. Spatial DB) obejmują
przetwarzanie nietypowych danych
zawierających opisy wielowymiarowe:
• mapy terenu
• dane geograficzne
• złożone obiekty
Przykłady zastosowań:
• projektowanie (CAD)
• obsługa map, atlasów itp. (GIS)
multimedialne BD
MBD (ang. Multimedia DBs) – rozszerzają zakres
prezentowanych danych o niekonwencjonalne media:
• obrazy
• dźwięk
• animacja
Przykłady MBD
• rozpoznawanie obiektów
multimedialnych
• video serwery
dedukcyjne BD
DBD (ang. Deductive DBs) ==> dowodzenie formuł na
podstawie aksjomatów i rachunku zdań
Elementy DBD:
• predykaty (bazowe, wirtualne i zewnętrzne)
• kategorie rachunku zdaniowego (stałe, zmienne,
łączniki logiczne, formuły, reguły wnioskowania)
• aksjomaty dedukcyjne (wyprowadzenie nowych
faktów na podstawie podanych)
Przykłady DDBMS: Datalog, LOGRES ROCK &
ROLL DOOD
Zastosowania DBD:
• dowodzenie twierdzeń i automatyczne
wnioskowanie
• budowa aktywnych BD
• obsługa wybranych problemów funkcjonowania BD
Trzecia gen.- koncepcja Darwen i Date (SQL→D)
• Uwzględnienie wybranych cech modelu relacyjnego:
– zachowanie dziedzin, krotek i relacji
– wprowadzenie zmiennych BD i relacyjnych
–…
• Odrzucenie założeń związanych z modelem
relacyjnym:
– nieuporządkowanie atrybutów i wierszy
– rezygnacja z SQL i obsługi: wartości
nieoznaczonych
–…
• Uwzględnienie wybranych cech modelu
obiektowego:
– warunkowe dziedziczenie
– obsługa transakcji zagłębionych i oznaczonych
–…
• Odrzucenie założeń związanych z modelem
obiektowym:
– przeciwstawienie zmiennych relacyjnych
dziedzinom
– rezygnacja z identyfikatorów obiektów
–…
Trzecia gen. BD- koncepcja M. Stonebrakera i CADF
• dostarczanie obok tradycyjnych usług BD
rozszerzeń obiektowych i regułowych:
– bogaty system typów
– ekstensjonalne i intensjonalne definicje zbiorów
– modyfikowalne perspektywy
– obsługa dziedziczenia i hermetyzacji (np. indeksy,
klastry)
– definiowanie reguł ogólnych BD
• Wspieranie układów otwartych:
– stosowalność wielu języków
– trwałość
– zachowanie i rozwój SQL (intergalactic dataspeak)
Trzecia gen. SZBD– konc. uniw. serwera BD (USBD)

Czy tekst był przydatny? Tak Nie

Czas czytania: 43 minuty