You are on page 1of 166

Podstawowe definicje

Zasady zaliczania kursu:

Wagi obliczeniowe stosowane przy ocenie :0,6 w+0.2w+0.2 lab


Egzamin pisemny (10 pyta = 2 pytania praktyczne+8 teoretycznych)

!Informacja = wiedza dotyczca obiektw takich jak fakty, zdarzenia,


przedmioty, procesy, idee, zawierajca koncepcje, ktra w okrelonym
kontekcie ma okrelone znaczenie
!Dane = reprezentacja informacji, majca interpretacj, waciw do
komunikowania si, waciw do przetwarzania
!Przetwarzanie danych = automatyczne wykonywanie operacji na
danych
!Operacje na danych = operacje matematyczne, logiczne,
sortowanie, kompilowanie, operacje tekstowe, czenie, zestawianie,
wyszukiwanie, drukowanie, redagowanie,
!Przetwarzanie danych przetwarzanie informacji

Podstawowe definicje
Baza danych = kolekcja wzajemnie powizanych danych
przechowywana w pamiciach dyskowych i udostpniania jej
uytkownikom na okrelonych zasadach

SYSTEMY ZARZDZANIA BAZAMI DANYCH


(DataBase Management Systems DBMS)
System Bazy Danych zawiera:
Kolekcj wzajemnie powizanych i
wanych przydatnych informacji,
Zbir programw uywanych w celu
umoliwienia dostpu, aktualizacji i
zarzdzania tymi danymi.
System Bazy Danych = Baza Danych + DBMS

Funkcje DBMS

Funkcje i zadania DBMS

Pojcia zwizane z cechami systemu


bazy danych
!Trwao (persistence)

Uytkownicy baz danych


!Uytkownik kocowy
!Projektanci baz danych
!Administrator danych
!Analityk danych
!Twrca aplikacji
!Obsuga techniczna (infrastruktura)

!Wspbieno (concurrency)
!Transakcje (transactions)
!Odtwarzanie (recovery)
!Zapytania (guering)
!Wersje (vesioning)
!Spjno (integrity)
!Bezpieczestwo (security)
!Wydajno (performance)

Wasnoci i zadania DBMS

ZARZDZANIE DANYMI

Celem systemw DBMS jest utworzenie


rodowiska, w ktrym obie wyej wskazane
skadowe w sposb dogodny i efektywny
uyto do :
Zapamitania kolekcji informacji w bazie
danych,
Wyszukiwania informacji z bazy danych,
Przetwarzania informacji w bazie danych
(zgodnie z wymogami aplikacji uytkownikw
bazy danych),

Baza danych jest projektowana zazwyczaj dla celw zarzdzania


duymi kolekcjami danych, a zarzdzanie to obejmuje:
! Struktury definiujce pamitane dane (modelowanie danych),
! Przewidywane mechanizmy manipulowania danymi (pliki i inne
niezbdne struktury, tzw. struktury systemowe, przetwarzanie
zapyta, modyfikacj, wstawianie i kasowanie informacji),
! Rnorodne narzdzia, mechanizmy, udogodnienia i metody,
ktre umoliwi administrowanie i raportowanie danymi,
! Utrzymanie bezpieczestwa i spjnosci danych w bazie danych
(prywatno danych, odtwarzanie danych po awarii, ochrona
danych),
! Sterowanie wspbienoci jeli baza danych ma by
dostpna na zasadach wspdzielonych.

Gwne elementy
Systemu Zarzdzania Bazami Danych
Modyfikacja
schematu

zapytania

Procesor
zapyta

Modu Zarzdzania
Pamici
(MZP)

10

Trzy rodzaje wej do systemu DBMS:

Aktualizacje

! Zapytania s to pytania o dane; te pytania o dane mog by


sformuowane dwojako: poprzez interfejs zapyta
bezporednich bd za porednictwem interfejsu programu
uytkownika (program utworzony w jzyku programowania
odwoujcy si np.: za porednictwem jzyka SQL do bazy
danych)
! Aktualizacje operacje polegajce na zmianie danych; tak jak
w przypadku zapyta mona aktualizacje realizowa poprzez
interfejs zapyta bezporednich lub poprzez interfejs
programw uytkownika
! Modyfikacje schematu takie polecenia wydaje na og
administrator bazy danych; pozwalaj one na zmian schematu
bazy danych i tworzenie nowych elementw bazy danych.

Modu
Zarzdzania
Transakcjami
(MZT)

Dane
Metadane

11

12

Modu Zarzdzania Pamici (MZP)

Modu Przetwarzania Zapyta


(Procesor Zapyta)

Zadaniem Moduu Zarzdzania Pamici jest:


Wybr waciwych danych z pamici i w razie potrzeby dostosowanie
tych danych do wymaga moduw, ktre odwouj si do MZP. W
prostych systemach baz danych MZP moe by tym samym co system
plikw podstawowego systemu operacyjnego. Wwczas MZP skada
si z dwch moduw :
Zarzdzania plikami modu ten przechowuje dane o miejscu
zapisania plikw na dysku i na polecenie moduu zarzdzania
buforami przesya zawarto bloku lub blokw danych z pliku
dyskowego
Zarzdzania buforami obsuguje pami operacyjn, wybierajc w
pamici operacyjnej strony, ktre zostan przydzielone dla wybranych
z pliku blokw danych. Blok z dysku moe by przez chwil
przechowywany w pamici operacyjnej ale musi zosta przesany z
powrotem na dysk, gdy tylko pojawi si potrzeba zapisu w miejsce
pamici operacyjnej innego bloku danych; powrt bloku na dysk moe
rwnie nastpi w wyniku dania moduu obsugi transakcji.

! Modu przetwarzania zapyta obsuguje nie tylko zapytania ale


rwnie aktualizuje dane i metadane.
! Jego zadaniem jest znalezienie najlepszego sposobu
wykonania zadanych operacji i na wydaniu polece do moduu
MZP, ktry wykona te polecenia.
! Zwykle zapytania kierowane do Procesora Zapyta
formuowane s w jzyku wysokiego poziomu (SQL).
! Procesor Zapyta zwykle przeksztaca te zapytania na operacje
lub cigi operacji, ktre naley wykona na bazie danych.
! Czsto najtrudniejsz operacj przetwarzania zapyta jest
optymalizacja zapytania, tj. wybr dobrego planu realizacji
zapytania okrelenie waciwego cigu polece dla systemu
zarzdzania pamici, ktrego wykonanie zagwarantuje lepsz
realizacj odpowiedzi na zapytanie (np.: zagwarantuje
najkrtszy czas realizacji odpowiedzi na zapytanie).

13

Problemy z koncepcji zarzdzania bazami


danych opartej na przetwarzaniu plikw

Modu Zarzdzania Transakcjami


(MZT)

! Modu Zarzdzania Transakcjami (MZT) odpowiada za spjno bazy


danych i spjno caego systemu.
! Musi on gwarantowa, e wiele jednoczenie przetwarzanych zapyta
w systemie nie bdzie sobie wzajemnie przeszkadza oraz, e adne
dane nie zostan utracone, nawet wwczas gdy nastpi awaria
systemu.
! Modu MZT wspdziaa z moduem obsugi zapyta (procesorem
zapyta), poniewa zwykle MZT musi mie dostp do szczegw o
danych, na ktrych przetwarza si biece zapytania, w celu
uniknicia konfliktw.
! Moe si zdarzy, cz przetwarzania bdzie musiaa by wstrzymana
(opniona) by unikn konfliktw.
! Poprawno wykonania transakcji jest osignita dziki wasnociom
transakcji okrelanym symbolem ACID.
" A (atomicity) niepodzielno,
" C (consistancy) spjno,
" I (isolaton) izolacja,
" D (durability) trwao.
15

Specyfika systemw baz danych


Charakterystyka

Problematyka

Kierunki bada

Trwao danych

Spjno danych:
przetwarzanie
transakcyjne

Nowe modele
przetwarzania: nowe
modele transakcji, OnLine Analitical
Preprocesing (OLAP),
systemy czasu
rzeczywistego

Duy wolumen danych

Efektywno
przetwarzania: fizyczne
struktury danych,
metody dostpu,
optymalizacja zapyta

Nowe struktury i
algorytmy: due
obiekty, obiekty
wielowersyjne,
struktury i indeksy
wielowymiarowe

Zoony model danych i Techniki projektowania


przetwarzania
i modelowania danych:
modele pojciowe,
modele logiczne

14

Nowe modele danych:


postrelacyjne,
obiektowe, temporalne,
17
aktywne,
wielowymiarowe

Redundancja danych i niezgodno (niespjno, sprzeczno)


danych (informacje mog by powielane w kilku miejscach,
aktualizacja kopii danych nie musi by realizowana rwnoczenie),
Trudnoci w dostpie do danych (nowe aplikacje musz przestzrega
regu wczeniej zaimplementowanych w bazie danych),
Niekompatybilno danych (dane w rnych plikach, w rnych
formatach, trudnoci w zapisie nowych programw aplikacji,
odwoujcych si do bazy danych),
Wielu wspuytkownikw bazy danych (potrzeba rwnolegej pracy w
jednym czasie wielu uytkownikw, konieczno uycia protekcji dla
rwnoczesnych aktualizacji bazy danych),
Problem ochrony (kady uytkownik powinien mie dostp do danych
przeznaczonych jedynie dla niego)
Problem integralnoci danych (np.: warto salda ujemnego na koncie
klienta nie moe przewysza wartoci zasignitego przez klienta
kredytu) - problem trudny do zaimplementowana zwaszcza wwczas
gdy warunki integralnoci danych s zmienne,
Problem optymalizacji zapyta do bazy danych (musia by
realizowany na poziomie kadej aplikacji, odwoujcej si do bazy
16
danych.

Komercyjne systemy zarzdzania


bazami danych
!IBM DB 2 (http://www.ibm.com)
!Informix (wchonity przez IBM)
!Microsoft Access 2003
(http://www.microsoft.com)
!Microsoft SQL Server .Net
!Oracle 9i (http://www.oracle.com)
!Postgres (http://www.postgresql.org)
!MySQL (http://www.mysql.com)
18

Co to jest model danych?

Co to jest model danych? Cd..

19

Modele danych w bazach danych


Opisuj koncepcyjnie dane, specyfikujc
ogln struktur logiczn bazy danych
Dostarczaj opisu danych na wysokim
poziomie dla implementacji tych modeli.

20

Rodzaje modeli
!Model pojciowy (konceptualny)
!Model logiczny
!Model fizyczny

Model danych = schemat danych

21

Modele logiczne oparte na


rekordach

Model logiczny danych


Obiekty wiata
rzeczywistego

22

Cechy modeli danych w bazach danych opartych na rekordach:


Baza danych jest zwykle struktur niewielu typw rekordw, a
kady taki typ rekordu jest struktur o staym formacie ,
Kady typ rekordu skada si ze staej iloci tzw. pl,
Pola w rekordzie s zwykle staej dugoci (zalene to jest od
implementacji),
Model oparty na rekordach nie wcza mechanizmw
bezporedniej reprezentacji kodu w bazie danych,
Oddzielny jzyk jest kojarzony z modelem w celu uycia
szybkich zapyta do bazy danych i aktualizacji.
Model rekordowy zosta szeroko wykorzystany w tzw.
hierarchicznych, sieciowych i relacyjnych bazach danych.

Obiekty modelu danych


danych
Relacja A

Relacja B

?
Klasa obiektw A
Klasa obiektw B

Klasa obiektw C

#
23

24

Model hierarchiczny

Model hierarchiczny

Rekordy w tym modelu s zorganizowane w drzewa


Np.:

! W systemie IMS firmy IBM z koca lat 60-tych przedstawiono hierarchiczny


model bazy danych. W modelu tym rozwizanie problemu powtarzalnych grup
opiera si na stosowaniu rekordw danych, ktre s zoone z kolekcji innych
rekordw.
! Model ten mona porwna do zestawienia materiaowego, (BOM ang. Bill
of Material), ktre zastosowano w celu pokazania zoonoci produktu.
! Samochd skada si z: nadwozia, podwozia, silnika i czterech k.
! Silnik jest zoony z: cylindrw, gowicy i wau korbowego
! Itd.
! Hierarchiczny model bazy danych wykorzystuje si do dzi.
! Stosujc ten model mona zoptymalizowa przechowywanie danych i uczyni
operacj poszukiwania odpowiedzi jeszcze bardziej wydajn.
! Np. pytajc jaki samochd zawiera okrelon cz?

- Rekordy typu klient

klient
Kos

kowalski

Nowak

121212134

Krakw

W-wa, Krucza 2

1000 z.

34545656

55 z.

5676543

3000
z.

- rekordy typu konto

konta

25

26

Model hierarchiczny

Model sieciowy
Dane w tym modelu reprezentowane s przez rekordy
Zwizki midzy danymi s reprezentowane przez wskazania (pointer)
Np.:

Samochd

Nadwozie

Podwozie

Cylindry

Silnik

Gowica

kowalski

4 Koa

Szczecin,Piastw

Kos

Krakw

Nowak

W-wa, Krucza 2

121212134

1000 z.

34545656

55 z.

5676543

3000 z.

Wa korb.

27

28

Model sieciowy

Model sieciowy cd..

W sieciowym modelu baz danych wykorzystano pomys


wskanikw wewntrz bazy danych. Rekordy mog zawiera
odwoania do innych rekordw.
Nazwa kraju

Symbol

Kurs

Wskanik

Nazwa kraju

Jzyk n

Jzyk n+1

W sieciowym modelu baz danych wykorzystano pomys


wskanikw wewntrz bazy danych. Rekordy mog zawiera
odwoania do innych rekordw.
Symbol

Kurs

Wskanik

Jzyk n

nil

Jzyk n+1
29

nil
30

Model sieciowy cd..

Model sieciowy cd..


Wskaniki wewntrz bazy danych czyli rekordy mog
odwoywa si do innych rekordw
Dwa typy rekordw kady przechowywany w innej tablicy
Sowniki do przechowywania czsto powtarzajcych si
nazw.
Odnoniki tzw. Klucze.
Pojcie nil lub puste oznaczajce koniec listy
Tego typu operacj mona przyspieszy poprzez
stosowanie innych powizanych list.
Powoduje to powstanie nadmiernie zoonej struktury.
Pisanie aplikacji dla tego typu baz danych jest bardzo
zoone.

francuski

Wochy
Francja

ITL
FRF

Niemcy

DEM

1.95

Belgia

BEF

40.33

woski

nil

flamandzki

nil

1936.27
6.55

Tablica krajw

Tablica jzykw

31

Model sieciowy cd..

32

Model relacyjny
Dane w tym modelu reprezentowane s przez
rekordy umieszczone w tabelach,
Kada tabela przechowuje rekordy tego samego
typu,
Kada tabela ma okrelon sta dla niej ilo
kolumn o unikalnych nazwach,
Elementy tabeli (atrybuty) s wypenione atomowymi
wartociami,
Kada krotka tabeli musi by jednoznacznie
okrelona przez warto atrybutw przypisanych
krotce krotki w tabeli bazy danych nie mog si
powtarza (musz by rne)

Zalety wszystkie rekordy jednego typu, powizane z


okrelonym rekordem innego typu, mona znale
bardzo szybko idc wedug wskanikw od rekordu
pocztkowego.
Wady - bardzo ciko wydoby informacj typu w
jakich krajach mwi si po francusku?

33

34

Model relacyjny

Model relacyjny

! W 1970 r. publikacja E.F. Codda Relacyjny model


danych dla duych, wspdzielonych bankw
danych staa si pocztkiem nowego podejcia do
przechowywania danych.
! Dokument ten przedstawi ide relacji pokaza
sposb wykorzystania tabel do reprezentowania
faktw, ktre s powizane z obiektami wiata
rzeczywistego.
! Relacyjny model bazy danych kadzie duy wikszy
nacisk ni inne modele na integralno danych.

35

Klienci

Konta

#Kowalski

Szczecin,Piastw

#121212134

#121212134

1000 z.

#Kos

Krakw

#34545656

#34545656

55 z.

#Kos

Krakw

#5676543

#5676543

3000 z.

#Nowak

W-wa, Krucza 2

#123123

#123123

0 z.

W tabeli KLIENCI krotki si rni dziki parze pl (pola


pierwsze i trzecie w tabeli)
Pole pierwsze rozrnia krotki tabeli KONTA
Pole lub pola, ktre wystarcz do rozrnienia krotek
tabeli nazywa si kluczami tabeli

36

Relacja- schemat, dziedzina i


odwzorowanie

Relacja schemat i dziedzina

Relacja o schemacie R = {A 1 , A 2, ... , A n } jest to skoczony zbir


r = { t 1, t2 , ... , t m }
odwzorowa t i : R % DOM ( R) takich, e
dla kadego j , 1<= j <= n , t i ( A j ) & DOM ( A j)
Kade takie odwzorowanie nazywa si krotk ( lub wierszem ).
Krotka odpowiada wierszowi w tabeli.

Schematem relacji nazywamy zbir


R = {A 1 ,, A 2 , ..., A n }
gdzie A 1, A 2 , ..., A n s atrybutami ( nazwami kolumn ).
Kademu atrybutowi przyporzdkowana jest dziedzina DOM ( A) czyli
dopuszczalny zbir wartoci.
Dziedzin relacji o schemacie R = {A 1 , A 2 , ..., A n } nazywamy sum
dziedzin wszystkich atrybutw relacji
DOM ( R) = DOM ( A 1) $ DOM ( A 2) $ ... $ DOM ( A n)

37

38

Relacja - przykad

Relacja

R = {dzie, dyurny } R to schemat relacji gdzie dzie i dyurny to


atrybuty ( nazwy kolumn)
DOM(dzie)= {pon, wto, ro,czw, pt} to pierwsza dziedzina zwizana z
atrybutem dzie
DOM(dyurny)= {Kwiatkowski, Nowak} to druga dziedzina zwizana
z atrybutem dyurny
DOM(R)=DOM(dzie) $ DOM(dyurny) to jest dziedzina relacji
dla odwzorowania r = {t 1, t2 , t3 , t4 , t5 , t6 , t7 , t8 , t9 , t10 } warto m = 10
bo istnieje max. dziesi par {dzie,dyurny}
np. dla m=1 odwzorowanie t1 : R % DOM ( R) t 1={pon, Kwiatkowski}
spenia warunek bo dla j=1 t 1 ( A1) & DOM ( A 1) i
dla j=2 t 1 ( A2 ) & DOM ( A 2)

Jest tylko jedna struktura danych w relacyjnym modelu


danych - relacja. W zwizku z tym, e pojcie relacji jest
matematyczn konstrukcj, relacja jest tabel, dla ktrej jest
speniony nastpujcy zbir zasad:
1. Kada relacja w bazie danych ma jednoznaczn nazw.
Wedug
dr Codda dwuwymiarowa tabela jest matematycznym
zbiorem, a matematyczne zbiory musz by nazywane
jednoznacznie.
2. Kada kolumna w relacji ma jednoznaczn nazw w ramach
jednej relacji. Kada kolumna relacji jest rwnie zbiorem i
dlatego powinna by jednoznacznie nazwana.
3. Wszystkie wartoci w kolumnie musz by tego samego
typu. (wynika to z punktu 2)

39

Relacja cd..

40

Ewolucja systemw baz danych

zbir zasad c.d.:


4. Porzdek kolumn w relacji nie jest istotny. Schemat relacji lista nazw jej kolumn - jest rwnie matematycznym
zbiorem. Elementy zbioru nie s uporzdkowane.
5. Kady wiersz w relacji musi by rny. Innymi sowy,
powtrzenia wierszy nie s dozwolone w relacji.
6. Porzdek wierszy nie jest istotny. Skoro zawarto relacji
jest zbiorem, to nie powinno by okrelonego porzdku
wierszy relacji.
7. Kade pole lece na przeciciu kolumny i wiersza w relacji
powinno zawiera warto atomow. To znaczy, zbir
wartoci nie jest dozwolony na jednym polu relacji.

41

Funkcje
systemu

Funkcje
systemu

Funkcje
systemu

Funkcje
systemu

Interfejs

Interfejs

Interfejs

Interfejs

Semantyka
danych

Semantyka
danych

Semantyka
danych

Semantyka
danych

Zarzdzanie
danymi

Zarzdzanie
danymi

Zarzdzanie
danymi

Zarzdzanie
danymi

Dane

Dane

Dane

Dane
Generacje
baz danych

Sieciowe i
hierarchiczne

Relacyjne

Semantyczne i
post-relacyjne

IMS, DBTG
IDMS, Adabas
Total

Ingres, Oracle
Sybase, Informix
Rdb, DB2, SQL/DS

Postgres, NF2
Starburst, Iris
Genesis, Probe

Obiektowe
Gemstone, O2
Ode, ObjectStore
Vision, Vbase
Exodus, Orion
42

Klucze

Relacyjna struktura danych

Kluczem nazywa si taki zbir atrybutw zbioru


encji (tabeli), e dla dwch rnych encji
(krotek) nie moe on mie takich samych
wartoci wszystkich atrybutw ze zbioru klucza.
Kluczem jest zbir takich atrybutw zbioru encji,
ktre jednoznacznie definiuj encje z tego
zbioru (rozrnia jednoznacznie krotki tabeli),
Klucz o minimalnej iloci atrybutw jest
jednym z kluczy kandydujcych (potencjalnych)
43

Klucz gwny ( primary key)

44

Klucz gwny ( primary key)

Kada relacja musi mie klucz gwny. Dziki temu


moemy zapewni, aby wiersze nie powtarzay si w
relacji.
Klucz gwny to jedna lub wicej kolumn tabeli, w
ktrych wartoci jednoznacznie identyfikuj kady
wiersz w tabeli.
W kadej relacji moe istnie wiele kluczy
kandydujcych.
Klucz kandydujcy to kolumna lub zbir kolumn,
ktre mog wystpowa jako jednoznaczny
identyfikator wierszy w tabeli.

Klucz gwny jest wybierany ze zbioru kluczy


kandydujcych.
Kady klucz kandydujcy, a wic take kady klucz
gwny, musi mie dwie waciwoci: musi by
jednoznaczny i nie moe mie wartoci null.
Kady klucz kandydujcy musi by jednoznacznym
identyfikatorem. Dlatego nie moe by adnych
powtarzajcych si ukadw wartoci w kolumnach
kluczy kandydujcego lub gwnego.
Warto klucza gwnego musi by okrelona dla
kadego wiersza w tabeli.

45

46

Dziedzina

Klucz obcy ( foreign key)


Klucze obce s sposobem czenia danych
przechowywanych w rnych tabelach.
Klucz obcy jest kolumn lub grup kolumn tabeli,
ktra czerpie swoje wartoci z tej samej dziedziny co
klucz gwny tabeli powizanej z ni w bazie danych

47

Podstawow jednostk danych w relacyjnym modelu


danych jest element danych.
Mwimy. e takie elementy danych s nierozkadalne
lub atomowe.
Zbir takich elementw danych tego samego typu
nazywamy dziedzin.
Dziedzinami s wic zbiory wartoci, z ktrych
pochodz elementy pojawiajce si w kolumnach
tabeli.

48

Warto null

Warto null
Pojcie wartoci null nie jest jednak do koca
akceptowane.
Dr Codd utrzymuje, e wprowadzenie wartoci null do
systemu relacyjnego zmienia konwencjonaln logik
dwuwartociow (prawda, fasz) na logik
trjwartociow (prawda, fasz, nieznane).
W logice dwuwartociowej jeeli zdanie 1 jest
prawdziwe i zdanie 2 jest prawdziwe, to ich poczenie
spjnikiem i" jest rwnie prawdziwe.

W logice trjwartociowej, jeli zdanie 1


jest prawdziwe, a zdanie 2 ma warto
nieznan, to ich poczenie spjnikiem i
ma warto nieznan. Wprowadza to
dodatkowe komplikacje przy
przetwarzaniu zapyta w systemach
relacyjnych. Niektrzy twierdz, e jest to
niepotrzebne

49

Atrybuty kluczowe i
niekluczowe

50

Wasnoci kluczy:

51

52

Klucz gwny w jednej tabeli


powtrzony w innej tabeli
nazywa si kluczem wtrnym

Wasnoci klucza gwnego

Przykad:
Kod_kursu jest
kluczem gwnym w
tabeli
przedmioty_kursy a
kluczem wtrnym w
tabeli kursy_prowadz
o strukturze:
53

Kod_kursu Kod_prowadzi

54

Tabela bazy danych

Typy danych
Pole
rekordu
(atrybut)

Typy danych zachowuj si czciowo jak definicje dla dziedzin. Okrelaj one
pewne waciwoci dotyczce dopuszczalnych wartoci danych w kolumnie.
Kada warto danych w kolumnie musi by takiego samego typu. Standardy
baz danych (ISO, 1992) definiuje okoo pitnastu typw danych, podzielonych
na nastpujce grupy:
Typy napisowe (String) :

Rekord
(krotka)

Typy liczbowe (Numeric)

klucz

Character(N). Napis znakowy o staej dugoci. Jeeli na wejciu znajdzie si napis o


mniejszej dugoci ni N, to na kocu napisu s dodawane spacje.
Character Varying (N). Napis znakowy o minimalnej dugoci 1 i maksymalnej
dugoci okrelonej przez system. Jeeli na wejciu pojawi si napis o mniejszej
dugoci ni N, to jest przechowywana tylko waciwa dugo napisu.
Bit. Napisy bitowe gwnie uywane dla danych graficznych i dwiku. d. Bit Varying.
Napisy bitowe zmiennej dugoci.

Numeric. Synonim dla Decimal.


Decimal(M, N). Liczba dziesitna o dugoci M z N miejscami po przecinku
dziesitnym.
Integer. Liczba cakowita z zakresu wartoci okrelonych przez system.
Smallint. Liczba cakowita z mniejszego zakresu wartoci okrelonych przez system.
Float. Liczba przechowywana w reprezentacji zmiennopozycyjnej.
Real. Jest synonimem Float.
Double Precision.

55

Typy danych cd..

Typy danych cd..

Typy daty i godziny (Datetime)


Date. Daty okrelone przez system.
Time. Godziny okrelone przez system.
Timestamp. Daty i godziny z uwzgldnieniem uamkw sekund.

tekst
tekst
memo
memo
data/godzina
data/godzina
liczba
liczba
walutowy
walutowy
autonumer
autonumer
logiczny
logiczny
hipercze
hipercze

Interval. Przedziay midzy datami.


Konkretne implementacje rni si w realizacji tych typw danych.
Opcje NOT NULL i UNIQUE

56

Kada kolumna w tabeli moe by zdefiniowana jako NOT NULL.


Oznacza to, e uytkownik nie moe wprowadzi wartoci null do tej
kolumny. Domyln specyfikacj dla kolumny jest NULL. To znaczy
wartoci null s dozwolone w kolumnie.
Kada kolumna moe by rwnie zdefiniowana jako UNIQUE
(jednoznaczna). Ta klauzula zabrania uytkownikowi wprowadzania
powtarzajcych si wartoci do kolumny. Kombinacj NOT NULL i
UNIQUE moemy uy do zdefiniowania

57

Najpopularniejsze systemy oprogramowania


narzdziowego DBMS

58

rodowisko Microsoft Access

FoxPro
Pro
Fox
Oracle
Oracle
Paradox
Paradox
Ingres
Ingres
DB2
DB2
Postgress
Postgress
GuptaSQL
SQL
Gupta
Access
Access
dBase
dBase
Informix
Informix
MySQLserver
server(Windows)
(Windows)
MySQL
MySQL(Linux)
(Linux)
MySQL
59

60

10

Microsoft Access - Kwerendy

Microsoft Access - Formularze

wybierajce
- pobieranie danych wg ustalonych kryteriw
- wywietlanie danych
funkcjonalne
- kopiowanie danych
- zmiana danych
- usuwanie danych
krzyowe
- wywietla podsumowania, rednie itp.
wg okrelonego schematu

61

Microsoft Access - Raporty

62

Relacje midzy tabelami bazy danych


Relacje
pracownicy

63

Typy relacji midzy tabelami

zlecenia
NR

Pracownik

Adam

Kowalski

Ewa

Nowak

Barbara

Cicho

Roman

Karwowski

ID

Imi

Nazwisko

Zwizek miedzy polem P1 w tabeli T1(pracownicy) a polem P2 w tabeli T2


(zlecenia) kady pracownik moe prowadzi wiele zlece zwizek 1 .. n

64

Relacje w bazie danych

1..1 jednej wartoci pola w tabeli T1


odpowiada jedna warto pola w tabeli T2
1..n jednej wartoci pola w tabeli T1
odpowiada wiele pl w tabeli T2
n..m wielu wartociom w tabeli T1
odpowiada wiele wartoci pola z tabeli T2
(zwizek wielowartociowy
niejednoznaczny)
65

Typy Kontaktu

Kontakty

Rozmowy

IDTypuKontaktu
TypKontaktu

IDKontaktu
Imi
Nazwisko
Tytu
Miasto
Adres
Wojewdztwo
KodPocztowy
Kraj
Firma
NrTelefonu
TypKontaktu

IDRozmowy
IDKontaktu
DataRozmowy
CzasRozmowy
Temat
Notatki

66

11

Przykadowa baza danych (1)


DNR

NAZWA

STATUS

MIASTO

DNR

CNR

ILO

D1

Abacki

20

Wielu

D1

C1

100

D1

C2

123

D1

C3

345

D1

C4

44

D1

C5

67

D2

C1

34

D2

C3

45

D2

Bober

30

Lublin

D3

Czerny

10

Kalisz

D4

Dbek

20

Kalisz

D5

Erbel

30

Radom

CNR

NAZWA_CZ

KOLOR

WAGA

MIASTO

D3

C3

56

C1

Nakrtka

Szary

12

Kalisz

D3

C5

566

C2

Tuleja

Czarny

55

Lublin

D4

C2

765

C3

Nit

Biel

25

Radom

D5

C5

50

C4

Wkrt

Zielony

30

Kalisz

C5

Nit

Czer

20

Wielu

Przykadowa baza danych (2)


WYPOYCZALNIA KSIEK
NR_KARTY

NAZWISKO

ADRES

SYGNATURA

DATA_WY

AUTOR

TYTU

123

NOWAK

KRUCZA

123456

10.10.2005

PRUS

FARAON

123

NOWAK

KRUCZA

236558

11.10.2005

LEM

SOLARIS

234

KOS

JANINA

345678

11.10.2005

PRUS

LALKA

67

Metodologia projektowania bazy danych

Bdna struktura bazy danych !!!


Anomalie przy aktualizacji bazy danych (np.
zmiana adresu wypoyczajcego co bdzie gdy
nastpi awaria w bazie danych? duszy ni
konieczny czas aktualizacji tabeli bazy danych)

Anomalie przy usuwaniu (np.. Usunicie


wszystkich pozycji wypoycze gdy czytelnik
dokona zwrotu ksiki),
Anomalie przy wstawianiu danych do bazy
danych (np. nie mona umieci w bazie danych
danych o czytelniku, ktry nie wypoyczy adnej
ksiki ale jest czytelnikiem wypoyczalni),
69

Diagramy zwizkw encji


(ang. entity relationship diagram)
E/R lub ERD diagramy

68

MINIWIAT

Analiza miniwiata konstrukcja


modelu konceptualnego

Diagramy ERD

Transformacja modelu konceptualnego


do modelu relacyjnego
Tabele i relacje
Proces normalizacji bazy danych
Tabele i relacje znormalizowane
Wybr struktur fizycznych i okrelenie
zasad dostpu do bazy danych
Fizyczna struktura bazy danych
Strojenie systemu

70

Model (diagramy) E/R

To metoda graficzna modelowania schematu


logicznego bazy danych,
diagramy ERD skadaj si z trzech gwnych
elementw (zbioru encji, atrybutw i zwizkw)

72

12

Model zwizku encji

Definicje skadowych diagramu ERD


(lub ER lub E/R)

! Podstaw spostrzegania wiata s encje (obiekty) i


zwizki zachodzce midzy tymi encjami (obiektami).
! Encje (ang. entity) s wystpieniami obiektw, ktre
istniej.
! Z kad encj zwizany jest zbir atrybutw
opisujcych te encje.
! Midzy encjami zachodz pewne zwizki np.: encje
klient oraz konto s w zwizku posiada
poniewa klient banku posiada konto bankowe.
! Encje i ich zwizki zwyko si opisywa przy pomocy
diagramw ERD (ang. Entity Relationship Diagram)

Zbir encja (entity sets) analogia klasy, encje


jako elementy zbioru encji s odpowiednikami
obiektw, bdcych instancjami klasy inaczej
rzeczowniki odwzorowujce obiekty
modelowanego wiata rzeczywistego
Atrybut jest to taki element, ktrego warto
charakteryzuje wasno encji
Zwizek opisuje poczenie midzy dwoma
lub wiksz liczb zbiorw encji

73

Encje

74

Przykady poj:
Zbiorami encji s: studenci, wykadowcy,
przedmioty_kursy, oceny_za_kurs, filmy,
studia, wypoyczenia, czytelnicy, ksiki, itp.,
Encja student opisana jest atrybutami:
nr_index, nazwisko, imie1, imiona, rok,
status, adres_s, adres_k, szkola, itp..
Midzy zbiorem encji wykadowcy a
zbiorem encji przedmioty_kursy
zachodzi zwizek prowadzi_kurs
lub zwizek prowadzony_przez
75

Diagramy zwizkw encji ER, E/R lub


ERD

76

Diagramy zwizkw encji - przykad

nazwisko
Nr rachunku

adres

klient

saldo

1..n

posiada

konto

77

78

13

Diagramy zwizkw encji (inna forma)


1

Sesja (sekcja)

Diagramy zwizkw encji (inna forma) w


RDBMS - Microsoft Access

artyku

autor

zawiera

ma

ma

Przypisanie artykuu do sesji

recenzja

Zakwalifikowanie
artykuu

79

Diagramy zwizkw encji (inna forma) w


RDBMS - Microsoft Access

80

Diagramy zwizkw encji (inna forma)

Przykadowy model ER z encjami i liczebnociami na diagramie ER.


a) relacja jeden do jeden
b)relacja jeden do wiele
c)relacja wiele do wiele
81

Diagramy zwizkw encji (inna forma)

82

Diagramy zwizkw encji cd..

PK klucz gwny
FKx klucz obcy

Diagram ERD. Dane pracownikw i klientw

83

84

14

Etapy budowy diagramw zwizku encji


Na budow modelu ER skada si szereg nastpujcych
krokw:
! identyfikacji encji,
! identyfikacji relacji pomidzy encjami,
! identyfikacji atrybutw encji, ustalenia kluczy gwnych.

Przykadowy zbir encji


PRACOWNIK (pesel, Nazwisko, imie, adres, Data_ur)
Klucz gwny

pesel Nazwisko

imie

adres

Data_ur

85

Metody projektowania schematu


relacyjnego

86

Typ jednostkowy (zbiory encji)

Metoda 1: Top-Down method:


- Utworzy model E/R;
- Zastosowa reguy transformacji modelu E/R na schemat
relacyjny.
Metoda 2: Down-Top method:
- Zebra jak najwicej danych, ktre bd tworzy zawarto bazy
danych;
- Zidentyfikowa tematy oraz ich waciwoci: zdefiniowa tabele
relacyjne.
- Przeprowadzi proces normalizacji do 3 lub 4 postaci normalnej.
Metoda 3: Mieszana:
- Utworzy model E/R;
- Zastosowa reguy transformacji modelu E/R na schemat
relacyjny.
- Przeprowadzi proces normalizacji do 3 lub 4 postaci normalnej.
87

Typ jednostkowy notacja graficzna

89

88

Typ jednostkowy reprezentacja w


modelu relacyjnym

90

15

Decyzje projektowe

Decyzje projektowe cd..

91

Zwizki (relationships)

92

Typy zwizkowe (relationship sets)

93

Zwizki

94

Zwizki pomidzy tabelami

zero lub jeden

TABELA

dokadnie jeden

TABELA

zero lub wiele

TABELA

Tabela A

TABELA

jeden lub wiele


95

Tabela B

' dla kadego wiersza w tabeli A musi istnie


dokadnie
jeden wiersz w tabeli B
' dla kadego wiersza w tabeli B moe istnie
zero, jeden lub
96
wiele wierszy w tabeli A

16

Reprezentacja relacyjna zwizkw


binarnych 1..N lub N..1

Zwizki binarne 1..N lub N..1

97

Reprezentacja relacyjna zwizkw


binarnych 1..N lub N..1

98

Zwizki binarne N..N

99

Reprezentacja relacyjna zwizkw


binarnych N .. N

100

Reprezentacja relacyjna zwizkw


binarnych N .. N

101

102

17

Zwizki binarne N .. N potrzeba


wprowadzenia dodatkowej jednostki

Zwizki binarne N .. N potrzeba


wprowadzenia dodatkowej jednostki

103

Rekurencyjne typy zwizkw

104

Rekurencyjne typy zwizkw

105

Reprezentacja relacyjna rekurencyjnych


typw zwizkw

107

106

Reprezentacja relacyjna rekurencyjnych


typw zwizkw cd..

108

18

Zwizki wieloczonowe

Zwizki wieloczonowe cd..

109

Zwizki wieloczonowe cd..

110

Zwizki wieloczonowe cd..

111

Reprezentacja relacyjna zwizkw


wieloczonowych

112

Jednostki z atrybutem czasowym


(zdarzenia)

113

114

19

Typy sabych jednostek

Typy sabych jednostek cd..

115

Typy sabych jednostek - przykad

116

Typy sabych jednostek - przykad

117

Przeksztacenie zwizkw
wieloczonowych w zwizki binarne

119

118

Zwizki wieloczonowe a zwizki binarne

120

20

Transformacja modelu E/R na schemat


relacyjny

Reguy transformacji

W trakcie transformacji powstaje trzy typy relacji:


1/ Relacja encji - zawiera te same informacji co odpowiadajca
encja oraz klucz gwny;
2/ Relacja encji z kluczem obcym - zawiera te same informacje co
odpowiadajca encja
oraz klucz obcy tworzcy powizanie z inn encj typu 1:1 lub 1:n;
3/ Relacja zwizku - zawiera klucze obce wszystkich powizanych
tym zwizkiem encji oraz waciwoci danego zwizku. Dotyczy
wszystkich unarnych, binarnych lub ternarnych zwizkw typu n:m
W trakcie transformacji warto NULL:
- jest dopuszczalna w relacjach encji dla kluczy obcych encji
opcjonalnych;
- jest niedopuszczalna w relacjach encji dla kluczy obcych encji
obowizkowych;
- jest niedopuszczalna w relacjach zwizkw dla kluczy obcych.
121

Reguy transformacji cd

122

Reguy transformacji cd

123

Reguy transformacji cd

124

Reguy transformacji cd

125

126

21

Metodologia projektowania bazy danych


Normalizacja

Cel normalizacji

MINIWIAT

Analiza miniwiata konstrukcja


modelu konceptualnego

Diagramy ERD

Transformacja modelu konceptualnego


do modelu relacyjnego
Tabele i relacje

Proces normalizacji bazy danych


Tabele i relacje znormalizowane
Wybr struktur fizycznych i okrelenie
zasad dostpu do bazy danych
Fizyczna struktura bazy danych
Strojenie systemu

127

Funkcjonalna zaleno atrybutw


relacji (tabeli)

128

Funkcjonalna zaleno atrybutw


relacji (tabeli) cd..

Pesel (Nazwisko,imie,adres,data_ur
nr-index ( Nazwisko, imie, data_ur
129

1 NF (I NF)
pierwsza posta normalna
(ang. normal form)

(gdzie DataZ jest dat zwolnienia pracownika)

130

Przykad 1NF

Relacja R jest w pierwszej


postaci normalnej jeli zawiera tylko pola
elementarne (inaczej atomowe) zalene
funkcjonalnie od klucza relacji R. Pole P jest
Definicja:

polem nie-elementarnym (nie jest polem


atomowym) w relacji R(...,P,..) jeli do
wyszukiwania danych z relacji R wymagane jest
zastosowanie funkcji poboru wartoci czci
131
tego pola P.

132

22

Przykad pola nieelementarnego

2NF (II NF) druga posta normalna

Pole adres w tabeli OBYWATEL moe by w


niektrych zastosowaniach polem atomowym
lub nieatomowym (elementarnym, nieelementarnym) w zalenoci od zastosowa bazy
danych np. w ewidencji obywateli dla celw
sporzdzania listy wyborcw w okrgach
wyborczych lub list poborowych pole to moe
by nieelemetarnym moe wymaga dostpu
do czci atrybutu adres, t.j. np. adres_ulica,
adres_nr_domu, adres_nr_mieszkania
133

134

Przykad(1)

Przykad(2)

135

Przykad(2 cd..)

TABELE PO NORMALIZACJI
2NF

Nazwa pola

Typ pola

#NR_ZAMWIENIA

N3

ID_DOSTAWCY

N3

NAZWA_DOSTAWCY

C20

ADRES_DOSTAWCY

C30

#ID_CZCI

N2

NAZWA_CZCI

C20

ILO

N5.2

MAGAZYN

N1

ADRES_MAGAZYNU

C30

RELACJA (TABELA) JEST W 1NF (strzaki oznaczaj zaleno


funkcyjn, kolorem czerwonym i znakiem # oznaczono pole kluczowe)

136

Przykad (3)..

#NR_ZAMWIENIA
ID_DOSTAWCY

DOSTAWCY-NA-ZAMWIENIU

NAZWA_DOSTAWCY
ADRES_DOSTAWCY

DOSTAWCY-CZCI
CZCI W MAGAZYNIE
# ID_CZCI
NAZWA_CZCI

# NR_ZAMWIENIA
# ID_CZCI
ILO

MAGAZYN
ADRES_MAGAZYNU
137

138

23

Wady relacji, ktra nie jest w 2NF..

Przykad 3 po normalizacji do 2NF

139

140

Wasnoci relacji w 2NF (PN):

Wady relacji w 2NF (PN):

141

3NF (III NF) trzecia posta normalna


Relacja R jest w 3NF jeeli jest w 2NF i
nie zawiera przechodnich zalenoci
funkcjonalnych.

142

Przechodnia zaleno funkcjonalna


Atrybut

Atrybut

Atrybut B

Atrybut B

Atrybut C

Atrybut C
Nie zachodzi

[AB and BC and not(CB) and not(BA)][AC]


gdzie symbol oznacza przechodni zaleno funkcjonaln

143

144

24

Rozkad relacji zawierajcej


przechodni zaleno funkcjonaln

TABELE PO NORMALIZACJI
2NF

Przykad(2 cd..)
#NR_ZAMWIENIA
ID_DOSTAWCY

NAZWA_DOSTAWCY

Atrybut B

ADRES_DOSTAWCY

Atrybut
Atrybut

DOSTAWCY-NA-ZAMWIENIU NIE JEST W 3 NF

Atrybut B
Atrybut B

Atrybut C

CZCI W MAGAZYNIE NIE JEST W 3NF

Atrybut C

# NR_ZAMWIENIA
# ID_CZCI

# ID_CZCI
NAZWA_CZCI

ILO

MAGAZYN

C jest przechodnio zalene funkcjonalnie od A


zapisujemy AC

ADRES_MAGAZYNU

DOSTAWCY-CZCI JEST W 3NF

145

Przykad(2 cd..)
#NR_ZAMWIENIA
ID_DOSTAWCY

TABELE PO NORMALIZACJI 3NF


BEZ PRZECHODNICH
ZALENOSCI FUKCJONALNYCH

146

4NF (IVNF) czwarta posta normalna


Relacja jest w 4NF wtedy i tylko wtedy gdy
jest w 3NF i wielowartociowa zaleno
niepustego rozcznego podzbioru
atrybutw Y od podzbioru atrybutw X
pociga za sob funkcjonaln zaleno
atrybutw tej relacji od X (nie wystpuj tu
wielowartociowe zalenoci funkcjonalne)

DOSTAWCY-NA-ZAMWIENIU

ID_DOSTAWCY
NAZWA_DOSTAWCY

DOSTAWCY

ADRES_DOSTAWCY

# NR_ZAMWIENIA
# ID_CZCI

# ID_CZCI
NAZWA_CZCI

CZCI

ILO

DOSTAWCY-CZCI

# MAGAZYN
ADRES_MAGAZYNU

# ID_CZCI

MAGAZYN

CZCI_W_MAGAZYNIE

MAGAZYN

147

148

Wielowartociowa zaleno
funkcjonalna - definicja

Wielowartociowa zaleno
funkcjonalna - przykad

Niech R jest relacj a X i Y to podzbiory


atrybutw tej relacji.
Podzbir Y jest wielowartociowo zaleny od
podzbioru X relacji R, jeli dla R i dowolnej pary
krotek k1 i k2 z relacji R, takich e k1(X)=k2(X)
istnieje taka para krotek s1 i s2, e:
s1(X)=s2(X)=k1(X)=k2(X)
s1(Y)=k1(Y) i s1(R-X-Y)=k1(R-X-Y)
s2(Y)=k2(Y) i s2(R-X-Y)=k2(R-X-Y)
149

Kod
pracownika

Znany jzyk
programowania

Znany jzyk obcy

Kowalski

Fortran

Angielski

Kowalski

Fortran

Francuski

Kowalski

Basic

Angielski

X={Kod pracownika}

Kowalski

Basic

Francuski

Y={znany jzyk programowania}

kowalski

Pascal

Angielski

Kowalski

Pascal

Francuski

Kos

Logo

Angielski

Kos

Logo

Hiszpaski

Kos

Logo

Woski

Kos

Pascal

Angielski

Kos

Pascal

Hiszpaski

Kos

Pascal

Woski

Nowak

Pascal

Angielski

Nowak

Pl/sql

Angielski

Nowak

C++

Angielski

R-X-Y={znany jzyk obcy}

k1={Kowalski, Fortran, Angielski}


K2={kowalski, Pascal, Francuski}

150

25

Przykad wielowartociowej zalenoci


funkcjonalnej normalizacja do 4NF

Relacja jest w 5NF wtedy i tylko wtedy gdy


jest w 4NF i nie zawiera poczeniowej
zalenoci funkcjonalnej

Kod pracownika
Kod pracownika

5NF (VNF) pita posta normalna

Znany jzyk programowania

Znany jzyk
programowania
Znany jzyk obcy
Kod pracownika
Znany jzyk obcy

151

Poczeniowa zaleno
funkcjonalna - przykad

152

Przykad poczeniowej zalenoci


funkcjonalnej normalizacja do 5NF

ZALENO MIDZY CENTRALAMI I WYROBAMI ORAZ


PRODUCENTAMI I WYROBAMI

CENTRALE

PRODUCENCI

CENTRALE
WYROBY

OBRABIARKI
CENTROZAP

ELEKTRIM

PRODLEW

FREZARKI
TOKARKI
ODLEWY

WIELOPOFAMA

WYROBY

PRODUCENCI
WYROBY

POMET
CEGIELSKI

CENTRALE

ODLEWNIA REM

PRODUCENCI

WAY

CENTRALE

WYROBY

PRODUCENCI

153

154

PODSUMOWANIE NORMALIZACJI
PIERWSZA POSTA NORMALNA = usunicie danych
nieelelmentarnych
DRUGA POSTA NORMALNA = usunicie niepenej
zalenoci funkcjonalnej
TRZECIA POSTA NORMALNA = usunicie przechodniej
zalenoci funkcjonalnej
CZWARTA POSTA NORMALNA = usunicie
wielowartociwej zalenoci funkcjonalnej
PIATA POSTA NORMALNA = usunicie poczeniowej
zalenoci funcjonalnej

155

26

Metodologia projektowania bazy danych


Diagramy zwizkw encji
(ang. entity relationship diagram)
E/R lub ERD diagramy

MINIWIAT

Analiza miniwiata konstrukcja


modelu konceptualnego

Diagramy ERD

To metoda graficzna modelowania schematu


logicznego bazy danych,
diagramy ERD skadaj si z trzech gwnych
elementw (zbioru encji, atrybutw i zwizkw)

Transformacja modelu konceptualnego


do modelu relacyjnego
Tabele i relacje
Proces normalizacji bazy danych
Tabele i relacje znormalizowane
Wybr struktur fizycznych i okrelenie
zasad dostpu do bazy danych
Fizyczna struktura bazy danych
Strojenie systemu

Model (diagramy) E/R

Model zwizku encji


! Podstaw spostrzegania wiata s encje (obiekty) i
zwizki zachodzce midzy tymi encjami (obiektami).
! Encje (ang. entity) s wystpieniami obiektw, ktre
istniej.
! Z kad encj zwizany jest zbir atrybutw
opisujcych te encje.
! Midzy encjami zachodz pewne zwizki np.: encje
klient oraz konto s w zwizku posiada
poniewa klient banku posiada konto bankowe.
! Encje i ich zwizki zwyko si opisywa przy pomocy
diagramw ERD (ang. Entity Relationship Diagram)

Definicje skadowych diagramu ERD


(lub ER lub E/R)

Encje

Zbir encja (entity sets) analogia klasy, encje


jako elementy zbioru encji s odpowiednikami
obiektw, bdcych instancjami klasy inaczej
rzeczowniki odwzorowujce obiekty
modelowanego wiata rzeczywistego
Atrybut jest to taki element, ktrego warto
charakteryzuje wasno encji
Zwizek opisuje poczenie midzy dwoma
lub wiksz liczb zbiorw encji
5

Diagramy zwizkw encji ER, E/R lub


ERD

Przykady poj:
Zbiorami encji s: studenci, wykadowcy,
przedmioty_kursy, oceny_za_kurs, filmy,
studia, wypoyczenia, czytelnicy, ksiki, itp.,
Encja student opisana jest atrybutami:
nr_index, nazwisko, imie1, imiona, rok,
status, adres_s, adres_k, szkola, itp..
Midzy zbiorem encji wykadowcy a
zbiorem encji przedmioty_kursy
zachodzi zwizek prowadzi_kurs
lub zwizek prowadzony_przez

nazwisko
Nr rachunku

adres

klient

saldo

1..n

konto

posiada

Diagramy zwizkw encji - przykad

Diagramy zwizkw encji (inna forma)


1

Sesja (sekcja)

artyku

autor

zawiera

ma

ma

Przypisanie artykuu do sesji

recenzja

Zakwalifikowanie
artykuu

10

Diagramy zwizkw encji (inna forma) w


RDBMS - Microsoft Access

Diagramy zwizkw encji (inna forma) w


RDBMS - Microsoft Access

11

12

Diagramy zwizkw encji (inna forma)

Diagramy zwizkw encji (inna forma)

PK klucz gwny
FKx klucz obcy

Przykadowy model ER z encjami i liczebnociami na diagramie ER.


a) relacja jeden do jeden
b)relacja jeden do wiele
c)relacja wiele do wiele
13

Diagram ERD. Dane pracownikw i klientw

14

Etapy budowy diagramw zwizku encji

Diagramy zwizkw encji cd..

Na budow modelu ER skada si szereg nastpujcych


krokw:
! identyfikacji encji,
! identyfikacji relacji pomidzy encjami,
! identyfikacji atrybutw encji, ustalenia kluczy gwnych.

15

16

Metody projektowania schematu


relacyjnego

Przykadowy zbir encji


PRACOWNIK (pesel, Nazwisko, imie, adres, Data_ur)
Klucz gwny

pesel Nazwisko

imie

adres

Data_ur

17

Metoda 1: Top-Down method:


- Utworzy model E/R;
- Zastosowa reguy transformacji modelu E/R na schemat
relacyjny.
Metoda 2: Down-Top method:
- Zebra jak najwicej danych, ktre bd tworzy zawarto bazy
danych;
- Zidentyfikowa tematy oraz ich waciwoci: zdefiniowa tabele
relacyjne.
- Przeprowadzi proces normalizacji do 3 lub 4 postaci normalnej.
Metoda 3: Mieszana:
- Utworzy model E/R;
- Zastosowa reguy transformacji modelu E/R na schemat
relacyjny.
- Przeprowadzi proces normalizacji do 3 lub 4 postaci normalnej.
18

Typ jednostkowy (zbiory encji)

Typ jednostkowy notacja graficzna

19

Typ jednostkowy reprezentacja w


modelu relacyjnym

20

Decyzje projektowe

21

Decyzje projektowe cd..

22

Zwizki (relationships)

23

24

Typy zwizkowe (relationship sets)

Zwizki
zero lub jeden

TABELA

dokadnie jeden

TABELA

zero lub wiele

TABELA

TABELA

jeden lub wiele


25

Zwizki pomidzy tabelami

Tabela A

26

Zwizki binarne 1..N lub N..1

Tabela B

! dla kadego wiersza w tabeli A musi istnie


dokadnie
jeden wiersz w tabeli B
! dla kadego wiersza w tabeli B moe istnie
zero, jeden lub
27
wiele wierszy w tabeli A

Reprezentacja relacyjna zwizkw


binarnych 1..N lub N..1

28

Reprezentacja relacyjna zwizkw


binarnych 1..N lub N..1

29

30

Reprezentacja relacyjna zwizkw


binarnych N .. N

Zwizki binarne N..N

31

32

Zwizki binarne N .. N potrzeba


wprowadzenia dodatkowej jednostki

Reprezentacja relacyjna zwizkw


binarnych N .. N

33

Zwizki binarne N .. N potrzeba


wprowadzenia dodatkowej jednostki

35

34

Rekurencyjne typy zwizkw

36

Reprezentacja relacyjna rekurencyjnych


typw zwizkw

Rekurencyjne typy zwizkw

37

Reprezentacja relacyjna rekurencyjnych


typw zwizkw cd..

38

Zwizki wieloczonowe

39

Zwizki wieloczonowe cd..

40

Zwizki wieloczonowe cd..

41

42

Reprezentacja relacyjna zwizkw


wieloczonowych

Zwizki wieloczonowe cd..

43

Jednostki z atrybutem czasowym


(zdarzenia)

44

Typy sabych jednostek

45

Typy sabych jednostek cd..

46

Typy sabych jednostek - przykad

47

48

Przeksztacenie zwizkw
wieloczonowych w zwizki binarne

Typy sabych jednostek - przykad

49

Zwizki wieloczonowe a zwizki binarne

50

Transformacja modelu E/R na schemat


relacyjny
W trakcie transformacji powstaje trzy typy relacji:
1/ Relacja encji - zawiera te same informacji co odpowiadajca
encja oraz klucz gwny;
2/ Relacja encji z kluczem obcym - zawiera te same informacje co
odpowiadajca encja
oraz klucz obcy tworzcy powizanie z inn encj typu 1:1 lub 1:n;
3/ Relacja zwizku - zawiera klucze obce wszystkich powizanych
tym zwizkiem encji oraz waciwoci danego zwizku. Dotyczy
wszystkich unarnych, binarnych lub ternarnych zwizkw typu n:m
W trakcie transformacji warto NULL:
- jest dopuszczalna w relacjach encji dla kluczy obcych encji
opcjonalnych;
- jest niedopuszczalna w relacjach encji dla kluczy obcych encji
obowizkowych;
- jest niedopuszczalna w relacjach zwizkw dla kluczy obcych.

51

Reguy transformacji

52

Reguy transformacji cd

53

54

Reguy transformacji cd

Reguy transformacji cd

55

56

Metodologia projektowania bazy danych

Reguy transformacji cd

Normalizacja
MINIWIAT

Analiza miniwiata konstrukcja


modelu konceptualnego

Diagramy ERD

Transformacja modelu konceptualnego


do modelu relacyjnego
Tabele i relacje

Proces normalizacji bazy danych


Tabele i relacje znormalizowane
Wybr struktur fizycznych i okrelenie
zasad dostpu do bazy danych
Fizyczna struktura bazy danych
57

Strojenie systemu

58

Funkcjonalna zaleno atrybutw


relacji (tabeli)

Cel normalizacji

Pesel !Nazwisko,imie,adres,data_ur
nr-index ! Nazwisko, imie, data_ur
59

60

10

Funkcjonalna zaleno atrybutw


relacji (tabeli) cd..

1 NF (I NF)
pierwsza posta normalna
(ang. normal form)
Relacja R jest w pierwszej
postaci normalnej jeli zawiera tylko pola
elementarne (inaczej atomowe) zalene
funkcjonalnie od klucza relacji R. Pole P jest
Definicja:

(gdzie DataZ jest dat zwolnienia pracownika)

61

Przykad 1NF

polem nie-elementarnym (nie jest polem


atomowym) w relacji R(...,P,..) jeli do
wyszukiwania danych z relacji R wymagane jest
zastosowanie funkcji poboru wartoci czci
62
tego pola P.

Przykad pola nieelementarnego


Pole adres w tabeli OBYWATEL moe by w
niektrych zastosowaniach polem atomowym
lub nieatomowym (elementarnym, nieelementarnym) w zalenoci od zastosowa bazy
danych np. w ewidencji obywateli dla celw
sporzdzania listy wyborcw w okrgach
wyborczych lub list poborowych pole to moe
by nieelemetarnym moe wymaga dostpu
do czci atrybutu adres, t.j. np. adres_ulica,
adres_nr_domu, adres_nr_mieszkania
63

64

Przykad(1)

2NF (II NF) druga posta normalna

65

66

11

Przykad(2)

Przykad(2 cd..)

Nazwa pola

Typ pola

#NR_ZAMWIENIA

#NR_ZAMWIENIA

N3

ID_DOSTAWCY

ID_DOSTAWCY

N3

NAZWA_DOSTAWCY

NAZWA_DOSTAWCY

C20

ADRES_DOSTAWCY

C30

#ID_CZCI

N2

NAZWA_CZCI

C20

ILO

N5.2

MAGAZYN

N1

ADRES_MAGAZYNU

C30

RELACJA (TABELA) JEST W 1NF (strzaki oznaczaj zaleno


funkcyjn, kolorem czerwonym i znakiem # oznaczono pole kluczowe)

TABELE PO NORMALIZACJI
2NF

DOSTAWCY-NA-ZAMWIENIU

ADRES_DOSTAWCY

DOSTAWCY-CZCI
CZCI W MAGAZYNIE
# ID_CZCI
NAZWA_CZCI

# NR_ZAMWIENIA
# ID_CZCI
ILO

MAGAZYN
ADRES_MAGAZYNU
67

Przykad (3)..

68

Wady relacji, ktra nie jest w 2NF..

69

70

Wasnoci relacji w 2NF (PN):

Przykad 3 po normalizacji do 2NF

71

72

12

Wady relacji w 2NF (PN):

3NF (III NF) trzecia posta normalna


Relacja R jest w 3NF jeeli jest w 2NF i
nie zawiera przechodnich zalenoci
funkcjonalnych.

73

Przechodnia zaleno funkcjonalna


Atrybut

Atrybut

Atrybut B

74

Rozkad relacji zawierajcej


przechodni zaleno funkcjonaln

Atrybut B

Atrybut C

Atrybut

Atrybut C

Atrybut

Nie zachodzi

Atrybut B

Atrybut B
Atrybut B

Atrybut C

[AB and BC and not(CB) and not(BA)][AC]

Atrybut C

gdzie symbol oznacza przechodni zaleno funkcjonaln

C jest przechodnio zalene funkcjonalnie od A


zapisujemy AC
75

TABELE PO NORMALIZACJI
2NF

Przykad(2 cd..)

76

Przykad(2 cd..)

#NR_ZAMWIENIA

#NR_ZAMWIENIA

ID_DOSTAWCY

ID_DOSTAWCY

NAZWA_DOSTAWCY

TABELE PO NORMALIZACJI 3NF


BEZ PRZECHODNICH
ZALENOSCI FUKCJONALNYCH

DOSTAWCY-NA-ZAMWIENIU

ID_DOSTAWCY

ADRES_DOSTAWCY

DOSTAWCY-NA-ZAMWIENIU NIE JEST W 3 NF

NAZWA_DOSTAWCY

DOSTAWCY

ADRES_DOSTAWCY

# NR_ZAMWIENIA
# ID_CZCI

# ID_CZCI

CZCI W MAGAZYNIE NIE JEST W 3NF


# ID_CZCI
NAZWA_CZCI

# NR_ZAMWIENIA

NAZWA_CZCI

# ID_CZCI

CZCI

ILO

DOSTAWCY-CZCI

# MAGAZYN

ILO

ADRES_MAGAZYNU

MAGAZYN

MAGAZYN
ADRES_MAGAZYNU

DOSTAWCY-CZCI JEST W 3NF


77

# ID_CZCI
MAGAZYN

CZCI_W_MAGAZYNIE
78

13

4NF (IVNF) czwarta posta normalna


Relacja jest w 4NF wtedy i tylko wtedy gdy
jest w 3NF i wielowartociowa zaleno
niepustego rozcznego podzbioru
atrybutw Y od podzbioru atrybutw X
pociga za sob funkcjonaln zaleno
atrybutw tej relacji od X (nie wystpuj tu
wielowartociowe zalenoci funkcjonalne)

Wielowartociowa zaleno
funkcjonalna - definicja
Niech R jest relacj a X i Y to podzbiory
atrybutw tej relacji.
Podzbir Y jest wielowartociowo zaleny od
podzbioru X relacji R, jeli dla R i dowolnej pary
krotek k1 i k2 z relacji R, takich e k1(X)=k2(X)
istnieje taka para krotek s1 i s2, e:
s1(X)=s2(X)=k1(X)=k2(X)
s1(Y)=k1(Y) i s1(R-X-Y)=k1(R-X-Y)
s2(Y)=k2(Y) i s2(R-X-Y)=k2(R-X-Y)

79

Wielowartociowa zaleno
funkcjonalna - przykad

80

Przykad wielowartociowej zalenoci


funkcjonalnej normalizacja do 4NF

Kod
pracownika

Znany jzyk
programowania

Znany jzyk obcy

Kowalski

Fortran

Angielski

Kowalski

Fortran

Francuski

Kowalski

Basic

Angielski

X={Kod pracownika}

Kowalski

Basic

Francuski

Y={znany jzyk programowania}

kowalski

Pascal

Angielski

Kowalski

Pascal

Francuski

Kos

Logo

Angielski

Kos

Logo

Hiszpaski

Kos

Logo

Woski

Kos

Pascal

Angielski

Kos

Pascal

Hiszpaski

Kos

Pascal

Woski

Nowak

Pascal

Angielski

Nowak

Pl/sql

Angielski

Nowak

C++

Angielski

Kod pracownika
Kod pracownika

Znany jzyk programowania

Znany jzyk
programowania

R-X-Y={znany jzyk obcy}

Znany jzyk obcy


Kod pracownika

k1={Kowalski, Fortran, Angielski}

Znany jzyk obcy

K2={kowalski, Pascal, Francuski}

81

5NF (VNF) pita posta normalna


Relacja jest w 5NF wtedy i tylko wtedy gdy
jest w 4NF i nie zawiera poczeniowej
zalenoci funkcjonalnej

82

Poczeniowa zaleno
funkcjonalna - przykad
ZALENO MIDZY CENTRALAMI I WYROBAMI ORAZ
PRODUCENTAMI I WYROBAMI
OBRABIARKI
CENTROZAP

ELEKTRIM

PRODLEW

FREZARKI
TOKARKI
ODLEWY

WIELOPOFAMA

POMET
CEGIELSKI
ODLEWNIA REM

WAY

83

CENTRALE

WYROBY

PRODUCENCI

84

14

Przykad poczeniowej zalenoci


funkcjonalnej normalizacja do 5NF
CENTRALE

PRODUCENCI

WYROBY

CENTRALE
WYROBY

PODSUMOWANIE NORMALIZACJI
PIERWSZA POSTA NORMALNA = usunicie danych
nieelelmentarnych
DRUGA POSTA NORMALNA = usunicie niepenej
zalenoci funkcjonalnej

PRODUCENCI

TRZECIA POSTA NORMALNA = usunicie przechodniej


zalenoci funkcjonalnej

WYROBY

CZWARTA POSTA NORMALNA = usunicie


wielowartociwej zalenoci funkcjonalnej

CENTRALE
PRODUCENCI

85

PIATA POSTA NORMALNA = usunicie poczeniowej


zalenoci funcjonalnej

86

15

Jzyki zapyta do baz danych

SQL
Jzyki zapyta do relacyjnych baz danych

Cechy jzykw zapyta do baz danych


!Deklaratywny charakter,
!Zanurzenie w jzyku programowania,

Jzyki oparte na algebrze


relacji (ISBL w Ingresie)

Jzyki oparte na
predykatach

!Wysoki poziom abstrakcji

Jzyki oparte na
rachunku krotek
(QUEL)

Jzyki oparte na
rachunku dziedzin
(QBL)

SQL = [ jzyk oparty na algebrze relacji ] + [ jzyk oparty na rachunku krotek ]

Literatura do zagadnienia : SQL

SQL to:

" Celko J.: Zaawansowane techniki programowania. Mikrom, W-wa,

" Strukturalny jzyk zapyta (Ang. Structured Query

1999

" Connan S.: SQL-The standard Handbook. McGraw-Hill Book


"
"
"
"
"
"
"

Company, London, 1993


Harrington J.L.: SQL dla kadego. EDU-Mikom, W-wa, 1998
SQL. Jzyk relacyjnych baz danych. Wellesley Software. WNT, Wwa, 1999
Stephans R.: SQL w 3 tygodnie. LT&P, W-wa, 1999
http://galaxy.uci.agh.edu.pl/chwastek/lectures/db/dbtitle.html
http://baszta.iie.ae.wroc.pl/index.html
http://www.cs.put.poznan.pl/kjankiewicz/oracle/sql/index.html
http://www.cs.put.poznan.pl/rwrembel/courses/sbd.html

Cechy jzyka SQL


" Jest jzykiem wysokiego poziomu (4GL) opartym na jzyku

angielskim,

" Jest jzykiem deklaratywnym (nieproceduralnym) zorientowanym

na wynik (uytkownik deklaruj co chce uzyska, a nie jak to chce


zrealizowa),

" SQL nie ma instrukcji sterujcych wykonanie programu,


" Jest czsto zanurzony w innym jzyku programowania (np.: C,

Fortran, PL, itp.),

" Nie zawiera w sobie rekurencji,


" Umoliwia definiowanie struktur danych, wyszukiwanie danych

oraz operacje na danych (np.: kasowanie danych, modyfikowanie


danych itp., o ile uytkownik ma do tego prawo).

Language),
" niepeny jzyk obsugi baz danych,
" jzyk obsugi baz danych zaimplementowany w systemach

zarzdzania relacyjnymi bazami danych (RDBMS


relacyjny DBMS), przeznaczony do definiowania struktur
danych, wyszukiwania danych oraz operacji na danych,
" Posiada on akceptacj ANSI oraz standard ISO.
" W praktyce jest to standardowy jzyk zapyta.

Zalety SQL

Wady i ograniczenia SQL

Historia SQL
! Koniec lat 70 tych firma ORACLE (Relational Software Inc.)

pierwsza implementacja praktyczna (komercyjna),


1981 IBM SQL/DS. (RDL Relational Data Language),
1983 ISO definicja SQL,
1986 ANSI pierwszy standard SQL (SQL-86),
1987 ISO pierwszy standard SQL : ISO 9075:1987 (E),
1989 ISO nastpny standard SQL : ISO 9076: 1989 (E), (SQL98),
! 1992 ISO kolejna, wzbogacona wersja : ISO 9075 : 1992 (E),
(SQL 2),
! 1999 SQL 3
! Grupa ODMG (Object DataBase Management Group) w oparciu o
SQL opracowaa jzyk do obiektowych baz danych OQL.
!
!
!
!
!

Historia SQLcd

Historia SQLcd

! System ORACLE by i jest relacyjnym SZBD opartym na SQL.

Koncepcja leca u podstaw jzyka SQL powstaa w wyniku prac


prowadzonych w laboratorium badawczym IBM w San Jose w Kalifornii w
latach siedemdziesitych. Tam te zostaa zbudowana implementacja
prototypowa relacyjnych poj o nazwie System/R. Ten wczesny relacyjny
SZBD uywa jzyka znanego wwczas jako SEQUEL. Dlatego wanie
wiele osb wci wymawia nazw SQL jak SEQUEL (to jest sikel).
W latach 1973-1979 badacze z IBM opublikowali w akademickich
czasopismach duo materiaw na temat budowy System/R. W tym czasie
zarwno w USA, jak i w Europie na konferencjach i seminariach
prowadzono oywione dyskusje na temat poprawnoci relacyjnego SZBD.
IBM okaza si niewtpliwie nadzwyczaj powolny w dostrzeeniu
komercyjnego znaczenia systemw relacyjnych. Pierwsze pomylne,
komercyjne wykorzystanie idei zwizanych z relacyjnym modelem danych
przypado korporacji ORACLE, zaoonej w 1977 r.

Historia SQLcd
! W nastpstwie powyszych publikacji pojawio si wiele

krytycznych uwag na temat standardu ANSI/ISO, zwaszcza ze


strony specjalistw w dziedzinie baz danych, takich jak E. F. Codd
(1988a, 1988b) i C. Dale (1987). Wiele osb uwaao, e wad
standardu jest fakt, e jest on czci wspln istniejcych
aplikacji. Inni uwaali, e jzyk ma powaniejsze wady, zwaszcza
w zakresie relacyjnych konstrukcji.

! W 1989 r. w odpowiedzi na krytyk ANSI opublikowaa dodatek do

standardu, zawierajcy gwnie ulepszenia cech integralnoci


(ANSI, 1989a). Dua cz tego dodatku zostaa wczona do
roboczej wersji proponowanej drugiej wersji standardu, rwnie
wydanego przez ANSI w 1989 r. (ANSI, 1989b). ISO, blisko
wsppracujc z ANSI, wydaa w tym samym roku dokument
zatytuowany "Database Language SQL with Integrity
Enhancement" (ISO, 1989).

Wielu innych producentw rwnie wyprodukowao systemy


uywajce SQL. Z tego powodu w 1982 r. organizacja ANSI
(American National Standards Committee) przekazaa swojemu
komitetowi baz danych (X3H2) spraw utworzenia standardu
jzyka relacyjnych baz danych (RDL). Komitet ten opublikowa
definicj skadni standardu SQL w 1986 r., opart gwnie na
dwch dialektach SQL IBM i ORACLE (ANSI, 1986). W 1987 r.
organizacja ISO (International Standards Organization)
opublikowaa bardzo podobny standard (ISO, 1987). Ten standard
jest rwnie znany pod nazw SQLI. Oryginalny dokument ANSI
okrela dwa poziomy dla SQLl: poziom pierwszy i poziom drugi.
Poziom drugi jest penym jzykiem SQL. Poziom pierwszy,
ktrego pierwotnym zaoeniem byo penienie funkcji przecicia
dla istniejcych implementacji, jest podzbiorem poziomu
drugiego.

Historia SQLcd
! W 1992 r. ANSI i ISO wyday pen specyfikacj rozszerzonej wersji SQL,

znanej jako SQL2. Dla tego standardu okrelono dwa podzbiory: poziom
minimalny i poziom poredni. Poziom minimalny SQL2 jest w zasadzie taki
sam jak SQL1 z udoskonalonymi cechami integralnoci. Uzgodniono ju
kolejne istotne rozszerzenia standardu SQL2 i oczekuje si pojawienia wersji
standardu o nazwie SQL3 pod koniec lat dziewidziesitych.

! Nie ma zatem jednego standardu, a przynajmniej trzy. Oznacza to, e

jakakolwiek implementacja SQL moe realizowa wszystkie lub cz z tych


trzech wersji standardu. Jest to jeden z powodw, dla ktrych wikszo
implementacji komercyjnych uwaa si w najlepszym razie za dialekty
standardu SQL. Innymi sowy, pod wieloma wzgldami znajduj one wsplny
grunt wok definicji podstaw lub poziomu jeden standardu SQLl. Pod
innymi wzgldami rni si one nie dostosowujc si ani do SQLI, ani do
pniejszych standardw (typy danych s tu dobrym przykadem). Niektre
implementacje oferuj dodatkowe konstrukcje nie uwzgldnione w
standardzie.

Oglna charakterystyka SQL


SQL (strukturalny jzyk zapyta - Structured Query Language)

Sposb wykorzystania SQL


! Interaktywny SQL bezporedni dostp do danych za pomoc

interpretera SQL,
! Statyczny SQL stay (predefiniowany) kod w SQL moe to by

! Wysoki poziom bezpieczestwa, integralnoci i kompletnoci


danych,
! Praca w konfiguracjach klient-serwer,
! Optymalizacja zapyta kierowanych do bazy przez
uytkownikw lub ich systemy,
! Efektywne przetwarzanie transakcji,

zanurzony SQL (tzw. embedded SQL) kod znajdujcy si


wewntrz innego jzyka programowania lub moduowy SQL, tzn.
samodzielne moduy w jzyku SQL mog by czone z moduami
innych jzykw,
! Dynamiczny SQL kod SQL generowany dynamicznie przez
programy uytkowe czsto generowany jest za pomoc
interfejsw graficznych lub z poziomu WWW,
! Definicyjny SQL kod w SQL generowany przy pomocy narzdzi
CASE (Computer Aided Software Enginnering).

! Zdolno manipulowania niestandardowymi strukturami


danych,
! SQL jest zwykle podzielony na trzy gwne czci: definicje

danych, operowanie danymi i kontrola danych,

SQL posta polece (zapyta)

Przykadowe zapytanie
sparametryzowane

Przykadowe pene okrelenie


zapytania

Przykadowe zapytanie
sparametryzowane

Zapytania dynamiczne - przykad

Komponenty SQL

Podstawowe struktury danych cd..

Zapytania dynamiczne - przykad

Podstawowe struktury danych w SQL

Alfabet SQL
Obejmuje:
! Zestaw znakw SQL charakterystyczny dla implementacji
! litery due i mae, cyfry, znaki specjalne , ; ( ) . % _ > < = +
* / - ? : ! spacja,
! Literay (stae), zapisywane w cudzysowiu np.: Warszawa
! Identyfikatory (nazwy), np.: nazwy tabel, kolumn
(atrybutw), widokw, schematw, itp.,
! Nazwy polece i funkcji - kada instrukcja w SQl zaczyna
si sowem kluczowym, moe zawiera modyfikatory i
koczy si rednikiem,
! Znak * oznacza wszystkie kolumny (atrybuty) tabeli,

Zasady konstrukcji wyrae

Podstawowe typy danych w SQL


Wyrnia si nastpujace typy danych:
Typy napisowe (String)
! Character(N) - Napis znakowy o staej dugoci. Jeeli na
wejciu znajdzie si napis o mniejszej dugoci ni N, to na
kocu napisu s dodawane spacje,
! Character Varying (N) - Napis znakowy o minimalnej
dugoci 1 i maksymalnej dugoci okrelonej przez
system. Jeeli na wejciu pojawi si napis o mniejszej
dugoci ni N, to jest przechowywana tylko waciwa
dugo napisu.
! Bit - Napisy bitowe gwnie uywane dla danych
graficznych i dwiku. d. Bit Varying. Napisy bitowe
zmiennej dugoci,

Podstawowe typy danych w SQL

Podstawowe typy danych w SQL

Typy liczbowe:

Typy daty i godziny (Datetime) :

! Numeric - Synonim dla Decimal,


! Decimal(M, N) - Liczba dziesitna o dugoci M z N miejscami po

! Date - Daty okrelone przez system,

! Timestamp - Daty i godziny z uwzgldnieniem uamkw sekund

!
!
!
!

przecinku dziesitnym,
Integer - Liczba cakowita z zakresu wartoci okrelonych przez
system,
Smallint - Liczba cakowita z mniejszego zakresu wartoci
okrelonych przez system,
Float - Liczba przechowywana w reprezentacji zmiennopozycyjnej,
Real - Jest synonimem Float,
Double Precision.

! Time - Godziny okrelone przez system,


! Interval - Przedziay midzy datami.

Konkretne implementacje rni si


realizacj typw danych.

Obiektowy model SQL3

Rozszerzenie typw o obiekty w SQL3

Zakadanie tabel bazy danych

CREATE TABLE <nazwa tabeli>


(<nazwa kolumny><typ danych>(<dugo>),
<nazwa kolumny><typ danych>(<dugo>),
...
[PRIMARY KEY (nazwa atrubutu [ , nazwa atrubutu ])],
FOREIGN KEY (nazwa atrubutu [, nazwa atrybutu ] )
REFERENCES <nazwa tabeli> (<nazwa atrybutu>)]);

Zakadanie tabel bazy danych - przykady


Do definicji kolumny moemy doda klauzul okrelajc warto,
ktr system automatycznie wpisuje do kolumny, jeeli
uytkownik wprowadzi niepen informacj. Na przykad do
kolumny poziom w tabeli Moduy moemy doda specyfikacj
DEFAULT <warto> wskazujc, e domylnym poziomem
powinien by 1:
CREATE TABLE Moduy
(NazwaModuu Character( 30) NOT NULL UNIQUE,
Poziom Smallint DEFAULT 1,
KodKursu Character(3),
NrPrac Integer) ;

Zakadanie tabel bazy danych- przykady

Zakadanie tabel bazy danych - Opcje NOT

NULL i UNIQUE
! Kada kolumna w tabeli moe by zdefiniowana jako
NOT NULL. Oznacza to, e uytkownik nie moe
wprowadzi wartoci null do tej kolumny.
! Domyln specyfikacj dla kolumny jest NULL. To
znaczy wartoci null s dozwolone w kolumnie.
! Kada kolumna moe by rwnie zdefiniowana jako
UNIQUE (jednoznaczna). Ta klauzula zabrania
uytkownikowi wprowadzania powtarzajcych si
wartoci do kolumny.
! Kombinacj NOT NULL i UNIQUE moemy uy do
zdefiniowania cech klucza gwnego.

Zakadanie tabel bazy danych - przykady


CREATE TABLE

sale
(id_sali short not null,
kod_kursu text(10) not null,
nazwa_kursu text(30),
wymiar_godz byte,
czas_od text(12),
id_kierunku text(4),
Primary key (id_sali),
Foreign key (id_kierunku) references KIERUNKI
(nr_kierunek));

Instrukcja DROP TABLE usuwanie


definicji tabeli
" Usuwa definicj tabel.
" Aby usun tabel z bazy danych, uywamy

nastpujcego polecenia:
DROP TABLE <nazwa tabeli>
Na przykad
DROP TABLE Moduy

Modyfikacja struktury tabel bazy danych


Przy zaoeniu idealnej niezalenoci danych administrator danych powinien
mc modyfikowa struktur bazy danych bez wywierania wpywu na
uytkownikw lub programy uytkowe, ktre maj dostp do bazy danych. W
praktyce produkty oparte na SQL realizuj tylko ograniczon posta
niezalenoci danych. Administrator moe doda dodatkow kolumn do tabeli,
zmodyfikowa maksymaln dugo istniejcej kolumny lub usun kolumn z
tabeli. Kad z tych operacji okrelamy uywajc polecenia ALTER TABLE.

Na przykad:
ALTER TABLE Wykadowcy
ADD COLUMN NrPokoju Smallint
ALTER TABLE Wykadowcy
ALTER COLUMN NazwiskoPrac Varchar(20)
ALTER TABLE Wykadowcy
DROP COLUMN NazwiskoPrac

dodanie
kolumny

Operacje w SQL na danych bazy danych


! Wstawianie danych do bazy danych (INSERT INTO),
! Aktualizacja bazy danych (UPDATE),
! Kasowanie danych z bazy danych (DELETE),
! Operacje teoriomnogociowe na bazie danych: suma, rnica, iloczyn

mnogociowy i kartezjaski (UNION, INTERSECT, EXCEPT ),


! Selekcja danych (SELECT),
! Projekcja (rzutowanie) danych (realizowane przez SELECT),

zmiana
wymiaru

! czenie tabel bazy danych: naturalne, warunkowe, zewntrzne (JOIN,

NATURAL JOIN, LEFT OTHER JOIN, RIGHT OTHER JOIN FULL OTHER JOIN
oraz realizowane przez SELECT),
! Dzielenie tabel (DIVISION).

usuniecie
wymiaru

Wstawianie danych do bazy danych

Wstawianie danych do bazy danych

Polecenie INSERT dodaje dodatkowy wiersz do podanej tabeli. Na


przykad instrukcja:
INSERT INTO Moduly
VALUES ('Wstp do zarzdzania',I,'BSD',123)
dodaje dodatkowy wiersz do tabeli Moduly. Porzdek, w jakim
powinny by podane wartoci w poleceniu INSERT, musi si
zgadza z porzdkiem, w jakim pierwotnie okrelono kolumny dla
tabeli w poleceniu CREATE TABLE. Jeeli chcemy wypisa
wartoci w jakim innym porzdku ni pierwotnie okrelony lub
jeli chcemy omin jakie kolumny przed wstawianiem, to musimy
doda list nazw kolumn do polecenia INSERT. Na przykad:
INSERT INTO Moduty (Poziom, KodKursu, NrPrac,
NazwaModulu) VALUES (2,'CSD',237,'Tworzenie
systemw informacyjnych')

Wstawianie danych do bazy danych


Specjalna wersja polecenia INSERT umoliwia dodanie wielu wierszy
do tabeli. Jest zwykle uywana, aby umieci wyniki jakiego
zapytania w podanej tabeli. Przypumy na przykad, e chcemy
utworzy tabel wykadowcw pracujcych na wydziale studi6w
informatycznych. Moemy to zrobi, jak nastpuje:
CREATE TABLE WykladowcyInformatyki
(NrPrac Number(5),
NazwiskoPrac Varchar(15),
Status Varchar(10),
Pensja Decimal(7, 2))
INSERT INTO WykladowcyInformatyki(NrPrac, NazwiskoPrac, Status,
Pensja)
SELECT NrPrac, NazwiskoPrac, Status, Pensja
FROM Wykladowcy
WHERE NazwaWydzialu = 'Studia informatyczne'

Usuwanie danych z bazy danych


Polecenia DELETE uywamy do usuwania wierszy z tabeli. Wiersze
do usunicia podajemy w klauzuli WHERE, podobnie jak w poleceniu
SELECT.

np.:

DELETE FROM Wykadowcy


WHERE NazwaWydziau = 'Studia informatyczne'

Aktualizowanie danych w bazie danych

Operacje w SQL na danych bazy danych

Polecenia UPDATE uywamy do zmodyfikowania zawartoci jednego


lub wicej wierszy tabeli. Wiersze do modyfikacji s okrelane w
opcjonalnej klauzuli WHERE, a zmian lub zmiany do wykonania
podajemy w klauzuli SET.
Selekcja

projekcja

Na przykad nastpujce polecenie zwikszy o 10% pensj wszystkich


wykadowcw o statusie PL:

UPDATE Wykadowcy SET Pensja = Pensja*1.1


WHERE Status = 'PL'

Operacje mnogociowe w SQL na


danych bazy danych
a

11

Dos

32

Bios

44

Kos

34

Znak

Suma tabel
a

11

11

Dos

32

Bios

32

Bios

43

Znak

11

11

Dos

32

Bios

32

Bios

43

Znak

Iloczyn tabel

Dos
w

32

Bios

44

Kos

34

Znak

Selekcja

Rnica tabel
Dos

32

Bios

Struktura typowego zapytania


selekcyjnego
! Proste wyszukiwanie jest wykonywane dziki kombinacji klauzul

SELECT, FROM i WHERE:

SELECT <nazwa atrybutul.>, <nazwa atrybutu2>,...


FROM <nazwa tabeli>
[WHERE <warunek>]
" Klauzula SELECT wskazuje na kolumny, z ktrych wartoci maj by

wydobyte. Klauzula FROM okrela tabele, z ktrych maj pochodzi


dane. Klauzula WHERE okrela warunek lub warunki, ktre maj by
spenione przez sprowadzane dane. W nastpujcym poleceniu
gwiazdka "*" peni funkcj symbolu uniwersalnego. Oznacza to, e
zostan wypisane wszystkie atrybuty z tabeli, ktrej nazwa znajduje
si po sowie FROM.
! Klauzula WHERE jest opcjonalna
! Opcja DISTINCT w wyniku daje rne (niepowtarzalne) wyniki
SELECT DISTINCT stanowisko
FROM pracownicy;

czenie (join) dwch tabel

Warunki w zapytaniach selekcyjnych

Like w Access

Struktura typowego zapytania


selekcyjnego - przykady

Znak

Opis

Cyfra (Od 0 do 9, pozycja wymagana, znaki plus [+] i minus [] nie s dozwolone).

Cyfra lub spacja (pozycja nie jest wymagana, znaki plus i minus nie s dozwolone).

Cyfra lub spacja (pozycja nie jest wymagana, w trybie edycji spacje wywietlane s jako puste miejsca, lecz podczas
zapisywania danych spacje s usuwane; znaki plus i minus s dozwolone).

Litera (od A do Z, pozycja wymagana).

Litera (od A do Z, pozycja wymagana).

Litera lub cyfra (pozycja wymagana).

Litera lub cyfra (pozycja wymagana).

&

Dowolny znak lub spacja (pozycja wymagana).

Dowolny znak lub spacja (pozycja wymagana).

. , : ; - /

Dziesitny symbol zastpczy oraz separator tysicy, dat i godzin. (Znak, ktry zostanie uyty w charakterze separatora zaley
od ustawie w oknie dialogowym Waciwoci: Ustawienia regionalne w Panelu sterowania systemu Windows).

<

Powoduje, e wszystkie litery zostan zmienione na mae.

>

Powoduje, e wszystkie litery zostan zmienione na wielkie.

Powoduje, e wszystkie dane s wywietlane od strony prawej do lewej zamiast od lewej do prawej. Znaki wpisane do maski
wprowadzania zawsze bd j wypenia od strony lewej do strony prawej. Wykrzyknik moe pojawi si w dowolnym
miejscu maski wprowadzania

Powoduje, e znak, ktry po nim wystpuje, zostanie wywietlony jako znak literaowy (na przykad, \A bdzie wywietlone po
prostu jako A).

SELECT * FROM Moduy


WHERE NazwaModuu = 'Dedukcyjne bazy danych

Selekcja - przykady
SELECT

! W celu poczenia
w jeden dwch
acuchw znakw
naley wykorzysta
znak konkatenacji
||
! Kolumny
wyliczone mog
by nazwane przez
zastosowanie
klauzuli AS

FROM
WHERE
AND
AND
SELECT

FROM

Obliczenia w zapytaniach selekcyjnych

w.nr_w,
p.nazwisko,
p.stanowisko,
p.dzial,
m .miasto,
m.ulica
pracownicy p, miejsca m,wypozyczenia w
p.nr_m=m.nr_m
p.nr_p=
w.prac_wyp
m.miasto = WARSZAWA
k.imie || || k.nazwisko AS Klient,
ul. || k.ulica || || k.numer AS
Ulica,
k.kod || || k.miasto AS Miasto
klienci k

Selekcja przykady cd..

Ilosc)

Rzut (projekcja)

Wyraenie CASE pozwala na wybranie pewnej wartoci w


zalenoci od wartoci w innej kolumnie. W przykadzie
sprawdzamy czy klient pochodzi z Warszawy, jeli tak to
wpisywana jest warto Klient oddziau macierzystego, w
przeciwnym razie jest to Klient z przedstawicielstwa.
SELECT k.imie, k.nazwisko, k.miasto ,
CASE k.miasto
WHEN Warszawa THEN Klient oddziau macierzystego
ELSE Klient z przedstawicielstwa
END
FROM
klienci k

53

Rzut (projekcja)

Rzut (projekcja)

Selekcja jako rzut (projekcja)

Struktura typowego zapytania


selekcyjnego - przykady

Jeli w zapytaniu selekcyjnym pominito warunki selekcji (warunek po


sowie kluczowym WHERE), to mamy do czynienia z rzutem (projekcj).

Jeeli okrelimy nazwy kolumn w zapytaniu selekcyjnym, to instrukcja


SELECT jzyka SQL staje si kombinacj operatorw selekcji (RESTRICT) i
rzutu (PROJECT) algebry relacyjnej.

SELECT Poziom
FROM Moduy

Powtarzajce si wartoci s dozwolone w SQL ale s


niedozwolone w relacyjnym modelu danych. Aby uzyska
prawdziwie relacyjny wynik na powysze zapytanie, musimy do
klauzuli SELECT doda sowo kluczowe DISTINCT (rne). Usuwa
to powtarzajce si wartoci w tabeli.

SELECT DISTINCT Poziom


FROM Moduy

Wynik selekcji
Poziom
1
1
3
3
2
1
1

Wybr krotek z uporzdkowaniem wyniku


wyszukiwania

Poziom
1
3
2

Wynik selekcji z
poprzedniego
zapytania

Grupowanie krotek do oblicze


klauzula GROUP BY
! Klauzula (instrukcja) GROUP BY dzieli dane wyselekcjonowane z

SELECT Nazwisko, Imi, Zarobki


FROM pracownicy
WHERE Zarobki>1000)
ORDER BY Nazwisko;

!Wybierz pola Nazwisko, Imi, Zarobki z rekordw tabeli o nazwie


pracownicy dla ktrych pole Zarobki ma warto wiksz ni 1000
i posortuj je wg pola Nazwisko
!Aby uzyska list w porzdku malejcym, do klauzuli ORDER BY
musimy doda sowo kluczowe DESC po nazwie atrybutu .

bazy danych na grupy, biorc za podstaw wartoci w okrelonej


kolumnie lub zbiorze kolumn, i umoliwia wykonanie oblicze
podsumowujcych (agregujcych) na wartociach w kadej
grupie,
! Ta instrukcja dzieli dane na grupy, biorc za podstaw wartoci w
okrelonej kolumnie lub zbiorze kolumn, i umoliwia wykonanie
obliczenia podsumowujcego wartoci w kadej grupie. W
powyszym wypadku dla kadej grupy wykonujemy zliczenie
liczby wierszy w grupie i obliczenie redniej pensji w grupie.
! do grupy funkcji agregujcych nale nastpujce funkcje:
Count( ) oblicza ilo wystpie,
Max( ) - wyznacza warto najwiksz w grupie,
Min( ) - wyznacza warto najmniejsz w grupie wartoci,
Avg() - wyznacza warto redni w grupie
Sum() - suma wartoci w grupie

Funkcje agregujce - przykady

Funkcje agregujce - przykady

Grupowanie krotek do oblicze


klauzula GROUP BY - przykad

Grupowanie krotek do oblicze


klauzula HAVING - przykad
Klauzula GROUP BY moe rwnie mie swoj wasn klauzul
ograniczajc "WHERE ' - HAVING. Nastpujca instrukcja wyszukuje z
naszej bazy danych tylko te wydziay, ktre maj wicej ni dwch
wykadowcw:

SELECT NazwaWydziau, avg(Pensja), count(*) FROM


Wykadowcy
GROUP BY NazwaWydziau
NrPrac

234

NazwiskoPrac

DaviasT

Status

NazwaWydziau

Studia informatyczne

Pensja

Tabela
Wykadowcy

NrPrac

NazwiskoPrac

Status

NazwaWydziau

Pensja

234

DaviasT

Studia informatyczne

16000.oo

345

Evans R

PL

Studia informatyczne

26500.00

123

Smith J

Studia biznesu

16500.00

237

Jones S

SL

Studia informatyczne

23500.00

145

Thomas P

SL

Studia biznesu

23500.00

Tabela
Wykadowcy

16000.00

345

Evans R

PL

Studia informatyczne

26500.00

123

Smith J

Studia biznesu

16500.00

237

Jones S

SL

Studia informatyczne

23500.00

145

Thomas P

SL

Studia biznesu

23500.00

wynik

Studia informatyczne 22000.00 3


Studia biznesu

Funkcje agregujce - przykady

20000.00 2

SELECT NazwaWydziau
FROM Wykadowcy
GROUP BY NazwaWydziau
HAVING count(*) > 2

wynik

Studia informatyczne

Kolejno klauzul w zapytaniu


selekcyjnym
Select From Where
Group by
Having

Order by

Przykady zapyta selekcyjnych

Przykady zapyta selekcyjnych

1
1

2
2

Przykady zapyta selekcyjnych

Zapytania zagniedone - przykad

Zapytania zagniedone - przykad


Wykonywanie podzapytania moe by powtarzane. W takim wypadku
otrzymujemy cig wartoci do porwnywania z wynikami najbardziej
zewntrznego zapytania. Rozwamy na przykad nastpujce zadanie:
Wypisz list nazwisk pracownikw, nazw wydziaw i pensji wszystkich
wykadowcw, ktrzy zarabiaj wicej ni wynosi rednia pensja
pracownika ich wydziau.
Tabela
Wykadowcy
NrPrac

NazwiskoPrac

Status

NazwaWydziau

Pensja

234

DaviasT

Studia
informatyczne

16000.oo

237

Jones S

SL

Studia
informatyczne

23500.00

345

Evans R

PL

Studia
informatyczne

26500.00

123

Smith J

Studia biznesu

16500.00

145

Thomas P

SL

Studia biznesu

23500.00

Zczenia tabel - przykad

Zapytania zagniedone - przykad


Sowo "strukturalny" w strukturalnym jzyku zapyta (SQL) pierwotnie
odnosio si do moliwoci zagniedania zapyta w instrukcjach SELECT.
Na przykad, aby znale osob, ktra zarabia wicej ni Jones
NrPrac

NazwiskoPrac

Status

NazwaWydziau

Pensja

234

DaviasT

Studia
informatyczne

16000.oo

237

Jones S

SL

Studia
informatyczne

23500.00

345

Evans R

PL

Studia
informatyczne

26500.00

123

Smith J

Studia biznesu

16500.00

145

Thomas P

SL

Studia biznesu

23500.00

SQL
wykonuje
na
pocztku
najbardziej
wewntrzne zapytanie, ktrego wynik jest
porwnywany z wynikiem zwracanym przez
najbardziej zewntrzne zapytanie.

Tabela
Wykadowcy

SELECT Nrprac, NazwiskoPrac


FROM Wykadowcy
WHERE Pensja >
(SELECT Pensja
FROM Wykadowcy
WHERE NazwiskoPrac =
'Jones S')

Inne zczenia tabel

SELECT NazwiskoPrac,
NazwaWydziau, Pensja
FROM Wykadowcy L
WHERE Pensja>
(SELECT AVG(Pensja)
FROM Wykadowcy
WHERE L.NazwaWydziau
= NazwaWydziau)

! SQL wykonuje zczenia relacyjne przez wskazanie wsplnych


atrybutw w klauzuli WHERE instrukcji SELECT. Na przykad ponisza
instrukcja SELECT wydobywa dane z tabel Wykadowcy i Moduy, ktre
s istotne dla osb pracujcych na wydziale studia informatyczne.
! Konkretny warunek (lub warunki) uyty do okrelenia zczenia jest
nazywany warunkiem zczenia. W powyszym przykadzie warunkiem
zczenia jest L.NrPrac = M.NrPrac.
NrPrac

NazwiskoPrac

Status

NazwaWydziau

Pensja

234

DaviasT

Studia
informatyczne

16000.oo

237

Jones S

SL

Studia
informatyczne

23500.00

345

Evans R

PL

Studia
informatyczne

26500.00

123

Smith J

Studia biznesu

16500.00

145

Thomas P

SL

Studia biznesu

23500.00

Tabela
Wykadowcy

SELECT NazwiskoPrac, Pensja,


NazwaModulu
FROM Wykladowcy L, Modufiy M
WHERE L.NrPrac = M.NrPrac

Zczenie (zczenie naturalne) tabel

Zczenie (zczenie naturalne) tabel

Zczenie (zczenie naturalne) tabel

Zczenie (zczenie naturalne) tabel

Zczenie (zczenie naturalne) tabel


NATURAL JOIN lub JOIN wykonuje zczenie dwch tabel,
korzystajc ze zwizku klucz gwny - klucz obcy (wtrny), o ktrych
informacja jest przechowywana w definicji tabel, przy zaoeniu, ze
kolumny zczenia maj t sam nazw w obu tabelach.
Operator zczenia naturalnego moe by uyty w klauzuli FROM.
Jeeli nazwa klucza gwnego-klucza obcego s rone, to zapytanie
moe mie nastpujc posta:
SELECT NazwaModuu, NazwiskoPrac
FROM Wykadowcy NATURAL JOIN Moduy
Jeeli nazwa jest rna, musielibymy przepisa zapytanie w
nastpujcy sposb:
SELECT NazwaModulu, NazwiskoPrac
FROM Wykadowcy L JOIN Moduy M
ON L.NrPrac = M.KodPrac

Zczenie (zczenie naturalne) tabel

Wasnoci zczenia naturalnego

Wasnoci zczenia naturalnego

Zczenie -join

Zczenie -join

Zczenie warunkowe - przykad

Zczenie zewntrzne tabel

Zczenie zewntrzne lewostronne

Zczenie zewntrzne lewostronne

Zczenie zewntrzne
prawostronne

Zczenie zewntrzne
prawostronne

Zczenie zewntrzne pene


FULL OUTER JOIN

Przykady zcze

Przykady zcze cd..

Tabele: Kobiety

Faceci

imie
Anna
Maria

Wiek
23
34

Imie

Wiek

Jan

33

Henryk

55

Sabina
Teresa
Wanda

43
55
33

Jzef

21

Marian

18

Tomasz

44

Edyta
Zofia
Mirosawa

56
23
33

Zbigniew

76

SELECT Faceci.Imie AS Pan, Faceci.Wiek AS WiekPana,


Kobiety.Imie AS Pani, Kobiety.Wiek AS WiekPani
FROM Faceci NATURAL JOIN Kobiety;
WYNIK=Zbir pusty, bo zczenie naturalne wymaga
rwnoci wszystkich kolumn

SELECT Faceci.Imie AS Pan, Faceci.Wiek AS WiekPana,


Kobiety.Imie AS Pani, Kobiety.Wiek AS WiekPani
FROM Faceci JOIN Kobiety ON Faceci.Wiek = Kobiety.Wiek
ORDER BY WiekPana, Pan, WiekPani;
Pan

WiekPana

Pani

WiekPani

Jan

33

Wanda

33

Jan

33

Mirosawa

33

Henryk

55

Teresa

55

SELECT Faceci.Imie AS Pan, Faceci.Wiek AS WiekPana,


Kobiety.Imie AS Pani, Kobiety.Wiek AS WiekPani
FROM Faceci NATURAL JOIN Kobiety;
Wynik=zbir pusty

Przykady zcze cd..


SELECT Faceci.Imie AS Pan, Faceci.Wiek AS WiekPana,
Kobiety.Imie AS Pani, Kobiety.Wiek AS WiekPani
FROM Faceci JOIN Kobiety ON Faceci.Wiek <= Kobiety.Wiek
ORDER BY WiekPana, Pan, WiekPani;
Pan

WiekPana

Pani

WiekPani

Marian

18

Anna

23

Marian

18

Zofia

23

Marian

18

Mirosawa

33

Marian

18

Maria

34

..

..

..

..

Henryk

55

Teresa

55

Henryk

55

Edyta

56

Zczenie RIGHT JOIN


SELECT FROM
T1 RIGHT JOIN T2 ON <warunek zczenia>
WHERE <warunek wyboru>;
WYNIK=Prawie jak zwyke zczenie, z tym, e wiersze z
prawej tabeli nie majce odpowiednikw w lewej tabeli s
uzupeniane wartociami NULL

Kolejno tabel jest istotna!

Przykady zcze cd..


SELECT * FROM Faceci RIGHT JOIN Kobiety
ON Faceci.Wiek= Kobiety.Wiek;

Przykady zcze cd..


SELECT * FROM Kobiety LEFT JOIN Faceci
ON Faceci.Wiek= Kobiety.Wiek;

Pan

WiekPana

Pani

WiekPani

Pani

WiekPani

Pan

WiekPana

Null

Null

Anna

23

Anna

23

Null

Null

Null

Null

Maria

34

Maria

34

Null

Null

Null

Null

Sabina

43

Sabina

43

Null

Null

Henryk

55

Teresa

55

Teresa

55

Henryk

55

Jan

33

Wanda

33

Wanda

33

Jan

33

Edyta

56

Null

Null

Zofia

23

Null

Null

Mirosawa

33

Jan

33

Null

Null

Null

Null

Jan

33

Edyta
Zofia
Mirosawa

56
23
33

Przykady zcze cd..


SELECT * FROM Kobiety RIGHT JOIN Faceci
ON Faceci.Wiek = Kobiety.Wiek;

Przykady zcze cd..


Konstrukcje JOIN i LEFT JOIN s czsto traktowane
jako synonimy, ale to nieprawda:

Pani

WiekPani

Pan

WiekPana

Wanda

33

Jan

33

Teresa

55

Henryk

55

Null

Null

Jzef

21

Null

Null

Marian

18

Null

Null

Tomasz

44

Null

Null

Zbigniew

76

Mirosawa

33

Jan

33

Jeeli w tabeli znajdujcej si po prawej stronie ON w


konstrukcji LEFT JOIN nie ma adnych wierszy, dla prawej
tabeli uyty zostanie wiersz z samymi wartociami NULL;
SELECT Kobiety.* FROM Kobiety JOIN Faceci ON
Kobiety.Wiek = Faceci.Wiek
WHERE Faceci.Wiek IS NULL;

Wynik jest zbiorem pustym

Zczenie zewntrzne pene


FULL OUTER JOIN

Przykady zcze cd..


SELECT Kobiety.* FROM Kobiety LEFT JOIN Faceci
ON Kobiety.Wiek = Faceci.Wiek
WHERE Faceci.Wiek IS NULL;
imie

Wiek

Anna

23

Maria

34

Sabina

43

Edyta

56

Zofia

23

Znajd wiersze
tabeli Kobiety nie
majce
odpowiednikw w
tabeli Faceci

Zczenie zewntrzne tabel

Iloczyn kartezjaski krotek

W SQL2 wystpuje rwnie standardowa skadnia zcze


zewntrznych. Na przykad lewostronne, prawostronne i obustronne
zczenia zewntrzne zostayby okrelone w SQL2 w nastpujcy
sposb:
SELECT *
FROM Wykladowcy L LEFT OUTER JOIN Moduly M
ON L.NrPrac = M.KodPrac
SELECT *
FROM Wykladowcy L RIGHT OUTER JOIN Moduly M
ON L.NrPrac = M.KodPrac
SELECT NazwaModulu, NazwiskoPrac
FROM Wykladowcy L FULL OUTER JOIN Moduly M
ON L.NrPrac = M.KodPrac

Iloczyn kartezjaski krotek

Suma tabel - przykad


! Operator sumy jzyka SQL odpowiada operatorowi sumy algebry
relacyjnej.
! Daje on moliwo poczenia wynikw dwch zgodnych zapyta.
! Na przykad ponisze zapytanie produkuje wynik czcy informacje na
temat moduw studia informatyczne z moduami na wydziale
elektrycznym.
NrPrac

NazwiskoPrac

Status

NazwaWydziau

Pensja

234

DaviasT

Studia
informatyczne

16000.oo

237

Jones S

SL

Studia
informatyczne

23500.00

345

Evans R

PL

Studia
informatyczne

26500.00

123

Smith J

Studia biznesu

16500.00

145

Thomas
P

SL

Studia biznesu

23500.00

Tabela
Wykadowcy

SELECT NazwaModulu, Poziom


FROM Moduly
WHERE KodKursu = 'CSD'
UNION
SELECT NazwaModulu, Poziom
FROM Moduly WHERE
KodKursu = 'EED'

Suma tabel - przykad

Suma tabel - przykad

Suma tabel - przykad

Rnica tabel - przykad

np.:

Np.:

Rnica tabel - przykad

Rnica tabel z wykorzystaniem


EXCEPT - przykad

lub

Np.:

Rnica tabel z wykorzystaniem


zcze - przykad

Iloczyn tabel - przykad


! Operator iloczynu jzyka SQL odpowiada operatorowi iloczynu algebry
relacyjnej.
! Daje on moliwo porwnywania wynikw dwch zgodnych zapyta.
! Na przykad ponisze zapytanie produkuje wynik wsplnych
informacje na temat moduw studia informatyczne z moduami na
wydziale elektrycznym.

Np.:

Iloczyn tabel - przykad

Podzielenie tabel (division)

NrPrac

NazwiskoPrac

Status

NazwaWydziau

Pensja

234

DaviasT

Studia
informatyczne

16000.oo

237

Jones S

SL

Studia
informatyczne

23500.00

345

Evans R

PL

Studia
informatyczne

26500.00

123

Smith J

Studia biznesu

16500.00

145

Thomas
P

SL

Studia biznesu

23500.00

Tabela
Wykadowcy

SELECT NazwaModulu, Poziom


FROM Moduly
WHERE KodKursu = 'CSD'
INTERSECT
SELECT NazwaModulu, Poziom
FROM Moduly WHERE
KodKursu = 'EED'

Podzielenie tabel (division)

Operacje z wykorzystaniem
kursora
Korsor (ang.cursor) dostarcza mechanizmu dostpu do pojedynczych wierszy
wg zasady jeden po drugim
Declare @zmNazwa char(20)
Declare @zmCenaSprz money
Declare kurAGD cursor
For select Nazwa, CenaSprz From Towar where GrupaTow = AGD
Przykad
Open kurAGD
uycia
Fetch next from kurAGD into @zmNazwa, @zmCenaSprz
While @@FETCH_STATUS = 0
Begin
select @zmNazwa, @zmCenaSprz
fetch next from kurAGD into @zmNazwa, @zmCenaSprz
End
Close kurAGD
Deallocate kurAGD

Operacje z wykorzystaniem
kursora
Aby przetwarza dane za pomoc kursora naley:
! Zadeklarowa kursor (DECLARECURSOR) i zdefiniowa jego zakres (za
pomoc FOR SELECT),
! Otworzy kursor (OPEN) wykonywana jest operacja SELECT, kursor
wskazuje na miejsce bezporednio przed pierwszym wierszem w
utworzonym selektem zbiorze wierszy (zakres kursora),
! Wykona operacj pobrania danych na kolejnym wierszu FETCH NEXT
FROM, pobierane dane mona zapamita pod podanymi zmiennymi,
! Pobieranie danych moe by realizowane w ptli rna od zera warto
zmiennej globalnej @@FETCH_STATUS moe zakoczy wykonywanie
operacji pobrania danych,
! Zmienne mog by wykorzystywane w dowolnych operacjach,wyraenie
SELECT @zmNazwa, @zmCenaSprz oznacza wypisywanie danych
! Dalej kursor naley zamkn (CLOSE) i dealokowa instrukcj
DEALOCATE.

Perspektywy widoki
(views)
! Widoki s wirtualnymi tablicami bazy danych.
! Nie maj one bezporedniej reprezentacji w bazie danych. W bazie danych
zapamitywana jest definicja perspektywy.
! Definicja widoku jest wykorzystywana w momencie odwoania si do widoku
tak jak do innej tabeli bazy danych.
CREATE VIEW RTV (NrTow, Nazwa, CenaSprz)

Definicja
perspektywy

FROM Towar T WHERE T.GrupaTow=RTV;


Definicja widoku wykorzystywana jest w momencie odwoania si do
widoku. Odwoanie to realizuje si na podobnych zasadach jak dla tabel
(relacji) bazy danych, np.

FROM RTV

Declare @zmNazwa char(20)


Declare @zmCenaSprz money
Declare kurAGD cursor
For select Nazwa, CenaSprz From Towar where GrupaTow = AGD
Open kurAGD
Fetch next from kurAGD into @zmNazwa, @zmCenaSprz
While @@FETCH_STATUS = 0
Begin
select @zmNazwa, @zmCenaSprz
update Towar SET CenaSprz=CenaSprz+1 where current of kurAGD
fetch next from kurAGD into @zmNazwa, @zmCenaSprz
End
Close kurAGD
Deallocate kurAGD

Perspektywy widoki
(views)
Przeksztacone jest do zapytania wzgldem tabeli TOWAR:
SELECT RTV.NrTow, RTV.Nazwa, RTV.CenaSprz
FROM (
SELECT T.NrTow, T.Nazwa, T.CenaSprz
FROM Towar T WHERE T.GrupaTow=RTV ) RTV
WHERE RTV.CenaSprz < 2000;
Lub rwnowanie

As SELECT T.NrTow, T.Nazwa, T.CenaSprz

SELECT RTV.NrTow, RTV.Nazwa, RTV.CenaSprz

Operacje pozycyjne UPDATE,


(DELETE) z wykorzystaniem
kursora

SELECT T.NrTow, T.Nazwa, T.CenaSprz


FROM Towar T
WHERE T.GrupaTow=RTV and T.CenaSprz < 2000;

Odwoanie do
perspektywy

WHERE RTV.CenaSprz < 2000;

Modyfikacja perspektyw

Modyfikacja perspektyw cd..

Modyfikacja perspektyw cd..

Modyfikacja perspektyw cd..

Modyfikacja perspektyw cd..

Modyfikacja perspektyw cd..

Zabezpieczenia baz danych

Zabezpieczenia baz danych


cd..

10

Spjno bazy danych

Integralno referencyjna przykad


!Integralno referencyjn definiujemy ju w
SQL89 przez specyfikacj klucza obcego.
Ponisze definicje okrelaj, e NrPrac w tabeli
Moduy ma zosta ustawione na null, jeeli
powizany rekord wykadowcy jest usuwany.
!Wizy integralnoci referencyjnej okrelaj
rwnie, e jeli dokonamy jakiejkolwiek
zmiany w numerze pracownika w rekordzie
wykadowcy, to zmiana ta powinna zosta
odzwierciedlona w powizanych rekordach
moduw.

Integralno referencyjna
cd..przykadu
CREATE TABLE Moduy
(NazwaModulu Char(15),
Poziom Smallint,
KodKursu Char(3),
NrPrac Number(5),
PRIMARY KEY (NazwaModutu)
FOREIGN KEY (Nrprac) references
Wykladowcy)
ON DELETE SET NULL
ON UPDATE CASCADE)

Rodzaje spjnoci bazy


danych

Integralno referencyjna
cd..przykadu
CREATE TABLE Wykadowcy
(Nrprac Number(5),
Nazwiskoprac Varchar(15),
Status Varchar(10),
NazwaWydziau(Varchar(20),
Pensja Decimal(7, 2),
PRIMARY KEY (Nrprac))

Integralno referencyjna cd..


W SQL2 opcjami propagacji s NO
ACTION, CASCADE, SET DEFAULT i SET
NULL.
!Opcje CASCADE i SET NULL odpowiadaj
odpowiednio operacji kaskadowej
propagacji (CASCADES) i ustawienia NULL
(NULLIFIES).
! Opcja NO ACTION czciowo odpowiada,
ale nie do koca, operacji RESTRICTED.
!Opcja SET DEFAULT wymusza na
systemie uywanie zadeklarowanej wartoci

11

Integralno dziedziny
!Integralno
dziedziny
moemy
czciowo okrela podajc odpowiedni
typ danych dla kolumny.
!Moemy tez uy klauzuli CHECK, aby
wymusi poprawne modyfikacje.
!Moemy na przykad wymusi, aby
warto wstawiana do kolumny poziom
bya w okrelonym zbiorze lub aby
numery pracownikw mieciy si w
podanym zakresie:

Integralno danych cd..


Mwimy, e baza danych ma waciwo
integralnoci, kiedy istnieje odpowiednio midzy
faktami przechowywanymi w bazie danych a
wiatem rzeczywistym modelowanym przez t baz.
T wanie integralno zapewniaj reguy
integralnoci, ktre mona podzieli na dwa rodzaje:
integralno encji oraz integralno referencyjn.
Integralno encji dotyczy kluczy gwnych. Mwi
ona, e kada tabela musi mie klucz gwny i e
kolumna lub kolumny wybrane jako klucz gwny
powinny by jednoznaczne i nie zawiera wartoci
null. Wynika std, e w tabeli s zabronione
powtrzenia wierszy.

Integralno danych cd..


S trzy moliwoci, ktre okrelaj co si
bdzie dziao z docelowymi i powizanymi
krotkami dla kadego zwizku midzy
tabelami w naszej bazie:
Ograniczone usuwanie (Restricted). Podejcie
ostrone nie dopuszcza do usuwania
rekordu nadrzdnego, jeli istniej rekordy
podrzdne.
Kaskadowe usuwanie (Cascades). Podejcie
ufne przy usuwaniu rekordu nadrzdnego
usuwa take rekordy podrzdne.
Izolowane usuwanie (Isolated). Podejcie
wywaone usuwa jedynie rekord nadrzdny.

Integralno dziedziny przykady


CREATE TABLE Moduy
(NazwaModuu Char(IS),
Poziom Smallint,
KodKursu Char(3),
Nrprac Number(5),
PRIMARY KEY (NazwaModuu)
FOREIGN KEY (Nrprac IDENTIFIES
Wykadowcy)
ON DELETE RESTRICT
ON UPDATE CASCADE
CHECK (Poziom IN 1, 2, 3))
CREATE TABLE Wykadowcy
NrPrac Number(5),
NazwiskoPrac Varchar(15),
Status Varchar( 10),
NazwaWydziatu(Varchar(20),
Pensja Decimal(7, 2),
PRIMARY KEY (NrPrac)
CHECK (NrPrac BETWEEN 100 AND 10999))

Integralno danych cd..


Integralno referencyjna dotyczy kluczy obcych.
Mwi ona, e warto klucza obcego moe si
znajdowa tylko w jednym z dwch stanw.
Warto klucza obcego odwouje si do wartoci
klucza gwnego w tabeli w bazie danych. Czasami
warto klucza obcego moe by null, co oznacza e
nie ma zwizku midzy reprezentowanymi obiektami
w bazie danych albo e ten zwizek jest nieznany.
Utrzymywanie integralnoci referencyjnej oprcz
okrelenia czy klucz obcy jest null, czy nie obejmuje
rwnie okrelenie wizw propagacji. Mwi one co
powinno si sta z powizan tabel, gdy
modyfikujemy wiersz lub wiersze w tabeli docelowej.

Asercje
! Wizy mog by nazywane i okrelane niezalenie od

jakiejkolwiek tabeli lub dziedziny. W takim wypadku wizy s


nazywane asercjami.
! Moemy na przykad zadeklarowa asercj, okrelajc
nastpujce sprawdzanie niezalenie od tabeli Wykadowcy:
CREATE ASSERTION NrPracCheck
CHECK (NrPrac BETWEEN 100 AND 10999)

12

Asercje
!Za kadym razem, gdy instrukcja SQL dokonuje wstawienia, modyfikacji
bd usunicia wiersza tabeli, istnieje moliwo, e wizy mog zosta
naruszone.
!SQL89 wymaga, aby system sprawdza naruszanie wizw pod koniec
wykonywania kadej instrukcji.
! SQL2 umoliwia sprawdzanie wizw pod koniec transakcji. Jeeli
wizy s sprawdzane po kadej instrukcji, to mwimy , ze sprawdzanie
odbywa si w trybie natychmiastowym. Jeeli sprawdzenie nastpuje
pod koniec transakcji, to mwimy, e sprawdzanie odbywa si w trybie
opnionym.
!Dlatego dla kadej definicji wizw moemy doczy specyfikacj tego,
czy wizy s sprawdzane z opnieniem (DEFERRABLE), czy
sprawdzane natychmiast (NOT DEFERRABLE).
!Pocztkowy tryb wizw moe by okrelony jako INITIALLY
DEFERRED lub INITIALLY IMMEDIATE. Tryb sprawdzania wizw moe
by nastpnie w czasie sesji zmieniony za pomoc instrukcji SET
CONSTRAINTS, ktra okrela, czy dla listy nazwanych wizw
wykonywa sprawdzanie opnione czy natychmiastowe.

Zatwierdzanie zmian w bazie


danych
Instrukcje INSERT, DELETE, UPDATE nie
dokonuj same trwaych zmian w bazie
danych. Aby zmiany wprowadzone przez nie
utrwali, naley wykona instrukcj COMMIT.
Mona rwnie zrezygnowa z wprowadzania
zmian do bazy danych, wycofujc je za
pomoc instrukcji ROLLBACK.
W PostgreSQL domylnie jest wczona
opcja auto-zatwierdzania wic nie trzeba przy
pojedynczych instrukcjach wykonywa
COMMIT.

13

Dodatkowe konstrukcje w SQL2

Definiowanie dziedziny

! Dokument

ISO wymienia okoo osiemnastu


znaczcych ulepsze w SQL2 w porwnaniu z
SQL89.
! Nale do nich min.: moliwoci definiowania
schematw, uoglnione operacje algebraiczne,
dziedziny i asercje.

! W SQL2 dziedzina reprezentuje zbir poprawnych wartoci.


! Dziedzina jest okrelona w schemacie i jest identyfikowana
przez nazw dziedziny.
! Gwnym celem uycia dziedziny jest ograniczenie zbioru
poprawnych wartoci, ktre mog by przechowywane w
kolumnie.
! Definicja dziedziny moe okrela typ danych, wizy
dziedziny i klauzul wartoci domylnej.
! Dziedziny deklarujemy uywajc instrukcji CREATE DOMAIN.
Np.:
CREATE DOMAIN Poziomy AS Integer(I), .
DEFAULT 1,
CHECK (VALUE BETWEEN 1 AND 3)

Definiowanie schematw

Definiowanie dziedziny

! W SQL2 kady uytkownik moe uywa wielu nazwanych

schematw.
! W definicjach kolumn moemy uywa nazw dziedzin zamiast typw

danych.
! Jest rwnie okrelona instrukcja ALTER DOMAIN, ktrej moemy
uy, aby doda nowe wizy,
! ustawi now warto domyln lub usun wizy, lub warto
domyln z istniejcej definicji dziedziny

! Schemat jest definiowany za pomoc instrukcji CREATE

SCHEMA, ktra umoliwia deklarowanie tabel i perspektyw,


jako czci schematu.
Przykad : utworzy schemat Akademicki z tabel Moduy jako
jego czci i przyzna uprawnienie dostpu do niego dla
uytkownika OsobaUpow:
CREATE SCHEMA Akademicki AUTHORISATION OsobaUpow
CREATE TABLE Moduy(...

Definiowanie schematw cd..


! Podana nazwa tabeli musi by jednoznaczna w

danym schemacie, ale ta sama nazwa moe wystpi


w wielu schematach.
! Aby rozwiza konflikty z nazywaniem, nazw tabeli
trzeba kwalifikowa nazw schematu bd jawnie
poprzedza j nazw schematu, tak jak Akademicki.
Moduy, bd niejawnie, uywajc pojcia schematu
domylnego.
! Schemat domylny jest powizany z kad sesj, w
trakcie ktrej uytkownik ma dostp do bazy danych.
Jest on zwykle okrelany w czasie logowania.
! Moemy jednak uy instrukcji SET SCHEMA, aby
zmieni schemat domylny.

Po zadeklarowaniu schematu moemy definiowa kolejne tabele


i perspektywy jako jego cz, uywajc instrukcji CREATE
TABLE lub CREATE VIEW.

Definiowanie schematw cd..


Na przykad:
Definiowanie schematu mona uzyska komend:

SET SCHEMA Administracja


Schematy moemy usuwa za pomoc instrukcji

DROP SCHEMA

Definiowanie katalogw

Definiowanie i kasowanie uytkownika

! Katalog jest nazwan grup schematw.


! Nie ma jednak zdefiniowanej w standardzie instrukcji

Skadnia:

tworzenia katalogu. Zaley to od implementacji.


! Nazwy schematw musz by jednoznaczne w katalogu i
konflikty zwizane z nazewnictwem rozwizujemy za
pomoc podobnego procesu kwalifikowania tak jak dla
tabel. Innymi sowy, pena nazwa obiektu schematu skada
si z trzech skladnik6w: nazwy katalogu, nazwy schematu i
nazwy tabeli.
! Schemat o nazwie INFORMATION_SCHEMA powinien si
znajdowa w kadym katalogu. Schemat ten zawiera pewn
liczb perspektyw do tabel systemowych o nazwach:
TABLES, COLUMNS i VIEWS.

CREATE USER nazwa [ [ WITH ] opcje [ ... ] ]

CREATE USER definiowanie


nowego uytkownika - przykady

Gdzie opcje:
SYSID uid
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD password
| CREATEDB | NOCREATEDB
| CREATEUSER | NOCREATEUSER
| IN GROUP groupname [, ...]
| VALID UNTIL abstime
Skadnia:
DROP USER nazwa

Tworzenie, zmiana i usuwanie grupy

Przykad:
CREATE USER Jan;
CREATE USER Jan WITH PASSWORD jw8s0F4;
CREATE USER Jan WITH PASSWORD jw8s0F4
VALID UNTIL Jan 1 2004;
CREATE USER Jan WITH PASSWORD jw8s0F4 CREATEDB;
DROP USER Jan;

Zmiana uprawnie uytkownika

CREATE GROUP name [ [ WITH ] option [ ... ] ]


option:
SYSID gid
| USER username [, ...]
Przykad:
CREATE GROUP marketing WITH USER Kowalski, Kwiatkowski;
Skadnia:
ALTER GROUP name ADD USER
Skadnia:
username [, ... ]
DROP GROUP name
ALTER GROUP name DROP USER
Przykad:
username [, ... ]
DROP GROUP marketing;
Przykad:
ALTER GROUP marketing ADD USER
Nowak,Jackowski;
ALTER GROUP marketing DROP USER10
Nowak,Jackowski;

GRANT nadawanie uprawnie

Skadnia:
ALTER USER username [ [ WITH ] option [ ... ] ]
gdzie option:
[ ENCRYPTED | UNENCRYPTED ] PASSWORD password
| CREATEDB | NOCREATEDB
| CREATEUSER | NOCREATEUSER
| VALID UNTIL abstime

Skadnia:
GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE |
REFERENCES | TRIGGER } [,...] | ALL PRIVILEGES] }
ON [ TABLE ] objectname [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...]
Przykad:
GRANT SELECT ON klienci TO student;
GRANT ALL PRIVILEGES ON klienci TO student;

Przykad:
ALTER USER Kowalski WITH PASSWORD hu8jmn3;
ALTER USER Nowak CREATEUSER CREATEDB;

11

12

Wzbogacenie konstrukcji rdb

REVOKE odbieranie uprawnie


!

Skadnia:
REVOKE { { SELECT | INSERT | UPDATE | DELETE | RULE |
REFERENCES | TRIGGER } [,...] | ALL ] }
ON [ TABLE ] object [, ...]
FROM { username | GROUP groupname | PUBLIC } [, ...]
Przykad:
REVOKE SELECT ON klienci FROM student;
REVOKE ALL PRIVILEGES ON klienci FROM student;

13

Wzbogacenie konstrukcji rdb cd..


Definiowanie danych, tworzenie indeksu

CREATE [UNIQUE] INDEX nazwa_indeksu ON nazwa_tabeli


(nazwy(a)_kolumny [ASC/DESC]);

Wiele relacyjnych SZBD realizuje ju aktywne reguy i


procedury wyzwalane, czyli wyzwalacze. SQL2 nie
dostarcza tutaj adnego standardu.
! Instrukcja wyzwalacza ma nastpujc skadni:
CREATE TRIGGER <nazwa
wyzwalacza><czas><zdarzenie>
ON <nazwa tabeli> [<odwoanie>] <akcja>
! Element czasu okrela, czy wyzwalacz powinien by
uaktywniany przed czy po okrelonym zdarzeniu: wstawieniu,
zmodyfikowaniu lub usuniciu. Jeeli zdarzeniem jest
modyfikacja, to odwoanie okrela nazw korelacji, ktra
identyfikuje wartoci kolumn w modyfikowanym wierszu przed i
po wykonaniu modyfikacji. Akcja jest to klauzula okrelajca
zoony cig instrukcji SQL do wykonania.
! Gwnym celem SQL3 jest wprowadzenie obiektowoci: typy
danych okrelane przez uytkownika, hermetyzacja, tosamo

Wzbogacenie konstrukcji rdb cd..


Administrowanie danymi
Przyznanie uprawnienia:
GRANT ALL / SELECT / UPDATE / INSERT / DELETE /
INDEX / ALTER

Definiowanie danych, usuwanie indeksu

DROP INDEX (nazwa_indeksu);

dla obiektu:

Definiowanie danych, tworzenie synonimu

ON nazwy(a)_tabel(i) / nazwa_perspektyw(y)

CREATE SYNONYM nazwa_synonimu FOR nazwa_tabeli /


nazwa_perspektywy;

dla uytkownika:

Definiowanie danych, usuwanie synonimu

DROP SYNONYM nazwa_synonimu;


Definiowanie danych, tworzenie perspektywy

TO nazwy(a)_uytkownikw(a);

Usunicie uprawnie
REVOKE ALL / SELECT / UPDATE / INSERT / DELETE
/ INDEX / ALTER ON nazwy(a)_tabel(i) /
nazwa_perspektyw(y) TO nazwy(a)_uytkownikw(a);

CREATE VIEW nazwa_perspektywy AS instrukcja_zapytania_w_SQL ;


Definiowanie danych, usuwanie perspektywy

DROP VIEW nazwa_perspektywy;

Funkcje tekstowe w SQL


Funkcja

Zwraca

ASCII(cnar)

Kod ASCII pierwszego znaku acucha.

CHAR(int)

Znak ASCII odpowiadajcy podanemu kodowi.

Funkcje tekstowe i pseudofunkcje- cd..


Funkcja

Zwraca

RIGHT(char,int)

int znakw od prawej strony z char.

RTRIM(char)

char bez spacji koczcych.

SOUNDEX(char)

Czteroznakowy kod odpowiadajcy acuchowi char; funkcja SOUNDEX() jest tak


skonstruowana, i jednakowo lub podobnie wymawianym (po angielsku)
acuchom odpowiadaj identyczne kody.

SPACE(int)

Cig spacji o dugoci int.

STR(float [ [dugo, [poprzecinku]])

float zapisane w postaci tekstu o dugoci dugo, zpoprzecinku cyframi po


przecinku. Domylne parametry wywoania to str( float, 10, 0).

STUFF(charl, pocz, dugo, char2)

dugo znakw w chari zamieniane jest na char2 od pocz zaczynajc, zwracany


jest wynik tej operacji

CHARINDEK(char_wzorzec, char, [int pocz])

Pozycja pierwszego wystpienia podacucha char_wzorzec w argumencie


char, opcjonalnie mona nakaza rozpoczcie przeszukiwania od pozycji
int pocz.

DIFFERENCE(charI, charZ)

Rnica dwch wyrae tekstowych. Uywane do dobierania fonetyki.

LEFT(cnar, int)

int znakw od lewej strony napisu char.

LEM(char)

Dugo acucha znakowego z pominiciem spacji koczcych.

LOWER(char)

Argument zapisany maymi literami.

LTRIM(char)

Argument pozbawiony spacji wiodcych.

SUBSTRING (char, pocz, dugo)

Podcig char skadajcy si z dugo znakw, od pocz zaczynajc.

NCHAR(int)

Znak Unicode o wskazanym kodzie.

UNICODE(char)

Kod Unicode pierwszego znaku acucha.

PATINDEX (char wzorzec, char)

Pozycja pierwszego wystpienia w argumencie char podacucha zgodnego z


wzorcem char wzorzec lub 0, jeli dopasowanie jest niemoliwe.

UPPER(char)

Argument zapisany wielkimi literami.

REPLACE (char1, char2, char3)

W napisie cha r l wszystkie wystpienia char2 zastpowane s przez char3,


zwracany jest wynik tej operacji.

OUOTENAM (char, (char znak_cyt] )

Char musi by prawidowym identyfikatorem w cudzysowie. Dodaje na


pocztku i kocu znaki [ i ], zwraca napis Unicode. W char znakcyt mona
poda ' lub ", wtedy znak ten zostanie uyty zamiast nawiasw
kwadratowych.

REPLICATE(char, int)

char powtrzone int razy.

REVERSE(char)

char od koca.

Pseudofunkcje
Funkcja

Zwracana warto

Odpowiadajca funkcji funkcja systemowa

CURRENT_TIMESTAMP

Bieca data i czas

GETDATE()

CURRENT_USER

Nazwa uytkownika

USER_NAME()

SESSION_USER

Nazwa uytkownika

USER_NAME()

SYSTEM_USER

Nazwa konta w systemie

SUSER_NAME()

USER

Nazwa uytkownika

USER_NAME()

Funkcje obsugi dat - cd..


Cz daty

Skrt

Rok

Yy

1753-9999

Kwarta

Qq

1-4

Miesic

Mm

Funkcje systemowe

Dopuszczalne wartoci

1-12

Funkcja

Zwraca

APP_NAME()

Nazwa aplikacji wywoujca funkcj

CASE wyraenie

Lista warunkw

CASE(wyraenie AS typ_danych)

Synonim funkcji conyert, rzutuje warto na wskazany typ.

COALESCE(wyr1,[wyr2...])

Pierwsza niepusta warto (nie null).

COL_LENGTH(tabela, kolumna)

Dugo kolumny w tabeli.

dzie roku

Dy

1-366

COL_NAME(id_tabeli, id_kolumny)

Nazwa wskazanej kolumny we wskazanej tabeli.

Dzie

Dd

1-31

COLUMNPROPERTY(id, kolumna,
wasno)

Informacja o kolumnie tabeli okrelonej przez id. Wasno wskazuje, o


jak informacj chodzi.

Tydzie

Wk

1-53

CONVERT(typdanycn[(dugo)],
wyraenie, ukad}

Przeksztaca wyraeniem typ danych. Przy konwersji typu datetime lub


float ukad okrela formatowanie.

dzie tygodnia

Dw

1-7

godzina

Hh

0-23

CURSOR STATUS(local, cursor |


global, cursor | variable, cursor)

Kod procedury skadowanej wskazujcy, czy procedura zwrcia kursor


i czy zbir wynikowy zawiera jakie wiersze.

DATABASEPROPERTY(baza,
wasno)

dana waciwo wskazanej bazy danych.

DATALENGTH(wyraeni)

Rozmiar potrzebny do przechowania wyraenia, wcznie ze spacjami


kocowymi dla wyrae znakowych.

DB_ID([baza])

Identyfikator bazy danych wskazanej lub biecej.

DB_NAME( db_id] )

Nazwa bazy danych o wskazanym identyfikatorze lub bazy biecej.

GETAHSINULL([baza] )

Domylne zachowanie si wartoci pustych dla wskazanej lub biecej


bazy danych.

getchecksum(kolumna)

Suma kontrolna wartoci wskazanej kolumny.

minuta

Mi

0-59

sekunda

Ss

0-59

milisekunda

Ms

0-999

Funkcje systemowe cd..

Funkcje systemowe cd..

Funkcja

Zwraca

Funkcja

Zwraca

HOST_ID()

Identyfikator procesu aplikacji klienta.

ISNUMERIC(char)

1 jeli char mona odczyta jako liczb, 0 w przeciwnym wypadku.

HOST_NAME()

Nazwa stacji roboczej klienta.

NEWID()

Wygenerowany nowy identyfikator globalny.

IDENT_INCR(tabela)

Przyrost wartoci kolumny identyfikujcej wskazanej tabeli.

NULLIF(wyr1, wyr2)

null, jeli wyr1 = wyr2.

IDENT_SEED(tabela)

Warto pocztkowa kolumny identyfikujcej wskazanej tabeli.

OBJECT_ID(nazwa obiektu)

Identyfikator wskazanego obiektu.

INDEX_COL(tabela, id indeksu, id
klucza)

Nazwa kolumny dla przekazanych parametrw.

OBJECTPROPERTY (id obiektu, wasno)

Informacja o wskazanym obiekcie, wasno decyduje o rodzaju zwracanej


wartoci.

IS_MEMBER(grupa | rola)

1 jeli uytkownik jest czonkiem wskazanej grupy NT lub roli SQL


Servera, 0 w przeciwnym wypadku.

PARSERNAME(nazwaobiektu, cz
obiektu)

Wskazana cz wybranego obiektu.

IS_SRVROLEMEMBER (rola [, konto])

1 jeli identyfikator uytkownika naley do wskazanej roli serwera, 0 w


przeciwnym wypadku. Konieczne jest podanie dokadnej nazwy konta.

PERMISSIONS (idobiektu [ kolumna])

Maska bitowa okrelajca uprawnienia do obiektu i ewentualnie jego kolumny.

STATSDATE (id tabeli, Id indeksu)

ISDATE(char)

1 jeli napis ma poprawny format typu datetime, 0 w przeciwnym


wypadku.

Data ostatniej aktualizacji danych organizacyjnych dotyczcych wskazanego


indeksu.

SUSER_ID(konto)

loginid podanego konta. Funkcja dodana z uwagi na konieczno zachowania


zgodnoci z poprzednimi wersjami, zaleca si uywanie SUSER SID.

SUSER_NAME (.ld_konta)

Nazwa wskazanego konta. Funkcja dodana z uwagi na konieczno


zachowania zgodnoci z poprzednimi wersjami, zaleca si uywanie
SUSERSNAME.

SUSER_SID([konto])

Zabezpieczony numer identyfikujcy (SID) konta.

SUSERS_NAME([idkonta])

Nazwa wskazanego konta.

TRIGGER_NESTLEVEL([id obiektu_tr])

Poziom zagniedenia wyzwalacza (triggera) wskazanego lub biecego.

TYPEPROPERTY(typdanych. wasno)

dana waciwo wskazanego typu danych.

USER_ID([uytkownik])

Identyfikator wskazanego uytkownika.

USER_NAME([id uytkownika])

Nazwa uytkownika o wskazanym identyfikatorze.

FILEID(plik)

Identyfikator wskazanego pliku.

FILE_NAME(idpliku)

Nazwa pliku o przekazanym identyfikatorze.

FILEGROUP_ID(grupapliku)

Identyfikator wskazanej grupy.

FILEGROUP_NAME (id grupypliku)

Nazwa wskazanej grupy.

ISNULL(wyraenie, warto)

Warto jeli wyraenie jest puste (NULL).

Niestandardowe zastosowanie relacyjnej BD


Bryy:

Niestandardowe zastosowanie relacyjnej BD


Wierzchoki:

Nale_do

Krawdzie
ciany

Uycie SQL w kompilatorze jzyka

Uycie SQL w kompilatorze jzyka

...
EXEC SQL BEGIN DECLARE SECTION;
struct Skala {
float x, y, z; } s;
struct Przesunicie {
float x, y, z; } p;
int o;
// obrt
EXEC SQL END DECLARE SECTION;
...
int transform(int brya, Obrt o, Skala s, Przesunicie p)
{
...
EXEC SQL UPDATE punkty
SET x = :s.x*x + p.x,
y = :s.y*(y*cos(:o.theta)-y*sin(:o.theta)) + :p.y,
z = :s.z*(z*sin(:o.theta) + z*cos(:o.theta)) + :p.z
WHERE punkt_id IN (SELECT w.punkt_id
FROM wierzchoki w, nale_do n, krawdzie k,
ciany , bryy b
WHERE w.punkt_id = n.punkt_id AND
n.krawd_id = k.krawd_id AND
k.ciana_id =.ciana_id AND
.brya_id = b.brya_id AND
brya_id = :brya;
...
}

EXEC SQL BEGIN DECLARE SECTION;


struct Brya { int liczba;
ciana s[10000]; } b;
struct ciana { int boki;
Krawd k[1000]; } s[1000];
struct Krawd { Wierzchoek w1, w2; };
struct Wierzchoek { float x, y, z; };
EXEC SQL END DECLARE SECTION;
int objto(int brya) {
EXEC SQL DECLARE brya CURSOR FOR
SELECT w1.x, w1.y, w1.z, w2.x, w2.y, w2.z
FROM wierzchoki w1, wierzchoki w2, nale_do n1,
nale_do n2, krawdzie k, ciany , bryy b
WHERE w1.punkt_id = n1.punkt_id AND
w2.punkt_id = n2.punkt_id AND
n1.krawd_id = n2.krawd_id AND
w1.punkt_id != w2.punkt_id AND
n1.krawd_id = k.krawd_id AND
k.ciana_id =.ciana_id AND
.brya_id = b.brya_id AND brya_id = :brya;
EXEC SQL OPEN brya;
for (int i=0; i++; i<b.liczba) {
for (int j=0; j++; j<b.s[i].boki) {
EXEC SQL WHENEWER NOT FOUND DO break;
EXEC SQL FETCH brya
INTO :b.s[i].k[j].w1.x, :b.s[i].k[j].w1.y,
:b.s[i].k[j].w1.z, :b.s[i].k[j].w2.x,
:b.s[i].k[j].w2.y, :b.s[i].k[j].w2.z;}}
... metody numeryczne;}

Procedury, operatory, podtablice,


programy

Typy definiowane przez uytkownika

Abstrakcyjne typy danych (ADTabstract data type)

Abstrakcyjne typy danych-cd

Typy referencyjne

Przykad uycia referencji

Kolekcje nowy typ danych

Wyszukiwanie z kolekcji

Due obiekty BLOB (binary large object) CLOB


(character large object)

ADT - dziedziczenie

Tablice z ADT, operacje na ADT

Podtablice i nadtablice

Procedury w SQL3

Rozszerzenia proceduralne w SQL3

Rozszerzenia SQL3 w zakresie


wyzwalaczy

SBD a jzyki programowania

42

Struktura SBD i jego uytkownicy

SBD a jzyki programowania

Schemat tworzenia
aplikacji w rodowisku
systemu baz danych

43

SBD a jzyki programowania

44

Podsumowanie

45

Podsumowaniecd

Porwnanie systemw -Wady i zalety


RDBMS
Zalety:
! oparte na solidnych podstawach teoretycznych
(zainteresowanie wiata
nauki, a nie tylko biznesu),
! stabilna pozycja na rynku,
! optymalizacja zapyta.
Wady:
! z gry ustalony konstruktor, brak zoonych obiektw,
! brak rodkw hermetyzacji i modularyzacji (brak oddzielenia
implementacji od specyfikacji),
! brak rodkow do przechowywania informacji
proceduralnych
! niezgodno impedancji,
! niezgodno modelu pojciowego z modelem
implementacyjnym.

Bazy danych nastpnej generacji


Bazy danych nastpnej generacji powinny zachowa wszystkie uyteczne cechy
charakteryzujce relacyjne bazy danych:
! zapytania,

Bazy danych nastpnej generacji cd


Waniejsze z wymaga stawiane bazom danych pitej generacji:
! reprezentowanie i posugiwanie si zoonymi, zagniedonymi obiektami;

automatyczn optymalizacj zapyta,

! przechowywanie i wyszukiwanie dowolnie dugich danych;

metody dostpu umoliwiajce sprawne wykonywanie zapyta,

! definiowanie dowolnych typw danych i operowanie nimi;

transakcje krtkotrwae,

sterowanie wspbienoci,

! reprezentowanie i zarzdzanie zmianami w bazie danych (pojcie czasu,


wersje pojedynczych i zoonych, zagniedonych obiektw, wersje
schematw);

odtwarzanie,

ograniczon kontrol spjnoci semantycznej,

autoryzacje.
Ponadto, SZBD nastpnej generacji, powinny zosta rozszerzone o cechy
umoliwiajce zastosowanie ich w systemach (wymienionych w punkcie
poprzednim), w ktrych ze wzgldu na swoje ograniczenia nie mog by
wykorzystane relacyjne bazy danych. Jzyk baz danych musi by
zaimplementowany w sposb umoliwiajcy wykorzystanie tych cech, a architektura
baz danych powinna sprawnie je realizowa.
!

! reprezentowanie i operowanie pojciami semantycznymi takimi jak


hierarchia, agregacja;
! podstawowe mechanizmy do wspomagania programw uytkowych
wykorzystujcych bazy wiedzy;
! zarzdzanie dugotrwaymi transakcjami.

Obecnie stosowane s dwa podejcia przy konstruowaniu systemw baz


danych pitej generacji: rozszerzenie relacyjnych baz danych i obiektowe
bazy danych. Rni si one gwnie modelem danych i jzykiem baz
danych. Rozszerzenie relacyjnych baz danych polega na przyjciu
relacyjnego modelu danych i jzyka zapyta. Nastpnie relacyjny model i
jzyk s rozwijane, tak by umoliwi modelowanie dodatkowych zwizkw
semantycznych i narzdzi baz danych do operowania nimi.

rda obiektowych baz danych

Obiektowo a bazy danych

rda
obiektowych baz danych
Relacyjne bazy
danych

Obiektowe jzyki
programowania

Post-relacyjne
bazy danych

Obiektowe systemy
skadowania

SQL 3

Obiektowe bazy
danych

Obiektowy model danych (object model, object-oriented model) jest


modelem danych, ktrego podstaw s pojcia obiektowoci, m.in.:
obiekt, klasa, dziedziczenie, hermetyzacja.
W obecnej chwili nie istnieje aden, oglnie przyjty, standard
jednoznacznie definiujcy pojcia obiektowe. Trwaj prace nad
ustandaryzowaniem poj obiektowych w dziedzinie baz danych,
prowadzone m.in.: przez ODMG (Object Database Management
Group). Standard zaproponowany przez ODMG stworzony zosta w
oparciu o trzy istniejce standardy dotyczce baz danych (SQL-92),
obiektw (OMG) i obiektowych jzykw programowania (ANSI).
Brak powszechnie akceptowalnych definicji modelu obiektowego w
dziedzinie baz danych wynika z faktu, i rozwj podejcia
obiektowego nastpowa w trzech rnych obszarach:

ODMG

jzykach programowania,

! sztucznej inteligencji,
1

Oglna charakterystyka obiektowoci w bazach


danych

! bazach danych.

Porwnanie obiektowego ODBMS z DBMS


Klasyczne funkcje DBMS

Bazy danych w swoich pocztkach byy obiektowe cho nie realizoway


wszystkich poj obiektowoci takich jak klasy, metody i dziedziczenie.
Podstawowym wyrnikiem baz obiektowych s trwae obiekty i
identyfikatory obiektw.
Kategorie obiektowoci w bazach danych:
!Systemy strukturalnie obiektowe (wyrniajce obiekty,
!Systemy operacyjne obiektowe (obiektom s przypisane operacje),
!Systemy behawioralnie obiektowe (hierarchia klas, metod i dziedziczenia).
Docelowe tendencje rozwoju baz obiektowych:
Programista podczas programowania nie musi nic wiedzie o bazie
danych operujc na jej obiektach tak jak na zmiennych programu. Baza
danych powinna by przezroczysta.
3

Standard obiektowego modelu danych


ODMG
!Brak standardu obiektowych baz danych by gwn przeszkod
ich masowego uycia. Relacyjne bazy danych swj sukces
zawdziczaj nie tylko wyszemu poziomowi zaawansowania oraz
prostszemu modelowi w porwnaniu z wczeniejszymi
systemami. Do sukcesu tego w duej mierze przyczynia si
wanie standaryzacja. Akceptacja standardu SQL pozwolia
tworzy systemy baz danych w wysokim stopniu kompatybilne ze
sob, co w efekcie dao wiele korzyci. Korzyci wynikajce ze
standaryzacji s istotne take w przypadku obiektowych
systemw baz danych.
!Wnioski te spowodoway, i Rick Cattel zdecydowa si
zainicjowa prb stworzenia standardu dla obiektowych
systemw baz danych. W lecie 1991 roku na zaimprowizowanym
niadaniu z producentami obiektowych systemw bazodanowych
przedstawi swoje frustracje na temat braku postpu w
5
ksztatowaniu si wanie takiego standardu. Zaowocowao to
pierwszym spotkaniem w tej sprawie ju jesieni 1991 roku.

! Zarzdzanie pamici zewntrzn,


! Zarzdzanie schematami,
! Sterowanie wspbienoci,
! Zarzdzanie transakcjami,
! Odtwarzalno,
! Przetwarzanie zapyta,
! Kontrola dostpu.

Do tych funkcji naley doczy:


! Zoone obiekty,
! Typy definiowane przez uytkownika,
! Tosamo obiektw,
! Hermetyzacj,
! Typy i/lub klasy, hierarchizacj obiektw,
! Przesanianie, przecienie, pne wizanie,
! Kompletno (programistyczn) oblicze.

Standard obiektowego modelu danych


ODMG
Kolejne wane zdarzenia zwizane ze standaryzacj w obd mona
przedstawi w nastpujcych punktach:
! Stworzona zostaa grupa do prac nad standardem. Zostaa ona nazwana Object
Database Management Group. Grupa zacza dziaa formalnie jako organizacja I
przeniosa si do wasnego biura. Grupa ta podzielia si na zespoy robocze, kady
zesp zajmuje si swoimi podzadaniami.
! Pierwszy rys standardu zosta opublikowany w roku 1991. Nosi on nazw ODMG 93
(1.0).

Zakres zagadnie do ustandaryzowania okaza si daleko wikszy ni w


relacyjnych bazach danych.
! W roku 1993 nastpio stowarzyszenie z OMG (Object Management Group).
! Publikacja ODMG wersja 1.2 miaa miejsce w roku 1996.
! ODMG 2.0 zosta opublikowany w roku 1997.
! ODMG 3.0, skoczony w 1999, zosta opublikowany w roku 2000.

Wysiek ODMG daje przemysowi obiektowych baz danych standard, ktry uatwia
szybki start, zamiast mozolnego ksztatowania standardu przez lata. ODMG
6
umoliwia wielu producentom wykorzystanie jednolitego interfejsu do obiektowych
baz danych, co pozwala klientom na pisanie ich wasnych aplikacji.

Gwne cele standardu ODMG

Gwne cele standardu ODMG

! Gwnym celem jest przedstawienie zestawu standardw, pozwalajcych


klientom systemw baz danych na pisanie przenonych aplikacji, czyli takich,
ktre mog wsppracowa z wicej ni jednym produktem bazodanowym.
Ukad danych, jzyk definiowania i manipulowania danymi oraz jzyk zapyta
musz by przenone.
! Kolejnym celem jest to, e wypracowane propozycje bd przydatne w
operowaniu systemami bazodanowymi, rwnie wersjami rozproszonymi,
komunikujcymi si za pomoc OMG Object Request Broker.
Systemy bazodanowe mog by bardzo rne, lecz wane jest, aby
umoliwiay przenono na poziomie kodu rdowego. Nie mona rwnie
zapomnie o pozostawieniu miejsca na innowacje w przyszoci. Z
pewnoci rzeczywiste systemy bd rnorodne dla wielu klas odbiorcw,
z odmiennymi cechami, bibliotekami itp., jednak musz one wsppracowa
ze sob na poziomie okrelonym wanie przez standard. Istotnym
zagadnieniem jest okrelenie zakresu dziaa zwizanych z tworzeniem
propozycji standardu. Obiektowe systemy baz danych maj architektur,
ktra jest znaczco inna od pozostaych systemw bazodanowych.
7
! Przejcie z relacyjnego systemu na obiektowy jest zmian bardziej
rewolucyjn ni ewolucyjn.

Standard obiektowego modelu danych


ODMG 2.0

! Bardziej, ni stworzenie jzyka w rodzaju SQL'a do manipulowania


danymi, obiektowe systemy przezroczycie integruj moliwoci baz
danych z jzykami programowania. Ta przezroczysto eliminuje
konieczno translacji danych midzy reprezentacj w bazie danych, a
reprezentacj w jzyku programowania.
! Model ten take umoliwia zapytania rodem z relacyjnych systemw ale
posiada wiksze moliwoci, gdy na przykad umoliwia
przechowywanie list, tablic i rezultatw dowolnego typu.
! Zdefiniowanie obiektowego systemu baz danych, oznacza stworzenie
systemu bazodanowego, ktry integruje potencja zorientowanych
obiektowo jzykw programowania. System taki tworzy obiekty w bazie,
wygldajce tak samo jak obiekty w jzyku programowania.
! Dodatkowo niezauwaalnie monitoruje dane, zapewnia rwnolegy
dostp, ochron danych oraz inne tym podobne cechy systemw
8
bazodanowych.

Obiekty zoone w obd


i3 NAME Smith

Model obiektowy

i2 ENO e127
! Elementarnymi jednostkami modelowania s literay i obiekty.
! Obiekty i literay s wystpieniami typw. Wszystkie wystpienia
danego typu wspdziel zbir dopuszczalnych stanw (taki sam
zbir cech) oraz zachowanie (taki sam zbir operacji).
! Stan obiektu jest reprezentowany przez zbir wartoci jego cech
(properties). Cechy mog by atrybutami obiektu lub referencjami
na inne obiekty.
! Zachowanie obiektu jest opisane przez zbir operacji, ktre mog
by wykonywane na obiekcie. Z operacjami s zwizane listy
parametrw wejciowych i wyjciowych okrelonego typu. Kada
operacja moe zwrci okrelony wynik.
! Baza danych skaduje obiekty umoliwiajc rwnolege operowanie
na nich wielu uytkownikom. Obiekty skadowane w bazie danych s
9
wystpieniami typw tworzcych schemat bazy danych.

Przykad schematu bazy danych obd


DNO

DEPT

MGR

ENO

Redundancja,
ilustruje dwie obiektowo
zorientowane powizane
klasy obiektw EMP i
DEPT

DMGR

SAL

EDNO

WORKS_IN

JOB

PREV_JOB

COMPANY

EMP
NAME

DEPT
DMGR
DNO
DNAME
LOC *
EMPLOYS
/MGR

EMP
ENO
NAME
/EDNO
WORKS_IN SAL
JOB

i8 COMPANY IBM

i1 EMP

i7 PREV_JOB

i6 SAL 7500

i9 WHEN 1975-77

i11 COMPANY ICL


i10 PREV_JOB
i12 WHEN 1977-90
10

Obiektowo a bazy danych

EMPLOYS
EMPLOYS
EMPLOYS

LOC
LOC
LOC

DNAME

i5 WORKS_IN i17

i4 JOB designer

WHEN

PREV_JOB
COMPANY
WHEN

W rnych jzykach (programowania i reprezentacji wiedzy)


przyjto rne interpretacje poj obiektowych. Obiektowe jzyki
programowania i reprezentacji wiedzy zawieraj jednak wiele
spjnych poj obiektowych, na podstawie ktrych mona stworzy
podstawowy, obiektowy model danych. Model ten, rozszerzony o
wizy spjnoci semantycznej (jednoznaczno wartoci atrybutw,
dopuszczalno wartoci NULL, zakres wartoci atrybutu, itp.) i
pewn liczb zwizkw semantycznych (zwizek bycia czci lub
wersj
midzy
par
obiektw),
umoliwia
projektantowi
modelowanie danych w aplikacjach bazodanowych. Przedstawiony
poniej model podstawowy oraz jego rozszerzenie zaprezentowane
w punkcie nastpnym jest oparty na modelu zaimplementowanym w
systemie ORION (prototypowy system obiektowej bazy danych,
zrealizowany w ramach programu Advanced Computer Technology
w Microelectronics and Computer Technology Corporation w Austin
w Teksasie).

11

Podstawowe definicje w obiektowoci


obiekt (object) - konkretny lub abstrakcyjny byt (wyrnialny w
modelowanej rzeczywistoci) posiadajcy nazw, jednoznaczn
identyfikacj, okrelone granice, atrybuty i inne wasnoci oraz rodzaj
struktur danych przetwarzanych przez obiektowe jzyki
programowania oraz przechowywanych w bazie danych. Obiekt moe
by skojarzony z metodami lub operacjami, ktre na nim dziaaj; z
reguy definiowanych/przechowywanych w ramach jego klasy oraz jej
nadklas. Obiekt jest instancj klasy. Obiekty mog by rekurencyjnie
powizane midzy sob zwizkami semantycznymi, -zwizki midzy
obiektami reprezentowane s poprzez referencje (odwoania), ktre s
wartociami atrybutw obiektu. Odwoanie do konkretnego obiektu w
systemie jest realizowane przez wysanie do niego komunikatu;

identyfikator obiektu umoliwia jednoznaczne odwoanie do obiektu


(jest niepowtarzalny w systemie)

Podstawowe definicje w obiektowoci


atrybut (attribute) jest czci definicji klasy, specyfikacja atrybutu polega
na podaniu jego nazwy i wizw semantycznej spjnoci, obejmujcych:
dziedzin atrybutu, jednoznaczno wartoci, dopuszczalno wartoci NULL,
itp. Wartoci atrybutw obiektu opisuj jego stan. Dziedzin atrybutu moe
by jakakolwiek klasa ze swoim wasnym zbiorem atrybutw lub klasa
wartoci pierwotnych (np.: integer, string). Wartoci atrybutu moe by
instancja klasy bdcej jego dziedzin lub instancja dowolnej podklasy z
hierarchii klas zakorzenionej w klasie stanowicej dziedzin atrybutu;

metoda (method) jest procedur, funkcj lub operacj przypisan do klasy i


dziedziczon przez jej podklasy. Metoda dziaa na stanie obiektu tej klasy
(czyli operuje wartociami atrybutw). Kod w jzyku programowania
implementujcy metod nazywamy ciaem metody. Metoda abstrakcyjna
specyfikowana jest w klasie, ale jej dziaanie moe by przedefiniowane w
dowolnej z jej podklas;

Podstawowe definicje w obiektowoci


hierarchia klas

(class hierarchy) i dziedziczenie (inheritance) - klasy w


systemie tworz zakorzeniony, skierowany acyklicznie graf zwany hierarchi
klas. Oznacza to, e dla klasy C klasa (lub klasy) S na niszym poziomie jest
uszczegowieniem (specjalizacj) klasy C i odwrotnie - klasa C jest
uoglnieniem (generalizacj) klasy (klas) S. Klasa S dziedziczy wszystkie
atrybuty i metody klasy C, mogc jednoczenie charakteryzowa si wasnymi
atrybutami i metodami. Atrybuty i metody okrelone dla klasy C s
rekurencyjnie dziedziczone przez wszystkie jej podklasy. W wikszoci
systemw obiektowych istnieje predefiniowana przez system klasa (w
ORIONIE: CLASS) stanowica jedyny korze dla wszystkich klas w systemie.
Hierarchia klas jest spjna - nie ma odizolowanych wzw (do kadego wza
- klasy jest dostp z korzenia). W kadym systemie klasa moe mie dowoln
liczb podklas, w pewnych systemach klasa moe mie tylko jedn nadklas
(dziedziczenie pojedyncze) w innych - dowoln liczb nadklas (dziedziczenie
wielokrotne) dziedziczc metody i atrybuty od wszystkich swoich nadklas.
Odziedziczone metody mog zosta przecione, tzn. mona zmodyfikowa
dziaanie odziedziczonej metody nie zmieniajc jej nazwy. Pojcie
dziedziczenia stwarza pewne problemy, takie jak konflikty nazwy, zasig
dziedziczenia, naruszenia hermetyzacji, s one jednak charakterystyczne dla
programowania obiektowego, dlatego te nie bd ich omawia;

Podstawowe definicje w obiektowoci


klasa

(class) - byt semantyczny rozumiany jako miejsce przechowywania


(specyfikacji i definicji) takich cech grupy podobnych obiektw, ktre s dla
nich niezmienne: atrybutw, metod, ogranicze dostpu, dozwolonych
operacji na obiektach, wyjtkw, itp. Klasa stanowi wzorzec dla tworzonego
obiektu. W systemach obiektowych, klasa jest traktowana jako obiekt
(klasowy), w celu zagwarantowania jednolitego posugiwania si
komunikatami. Dlatego z klas mog by zwizane atrybuty i metody klasowe.
W atrybutach klasowych przechowywane s wartoci podsumowujce
wszystkie jej obiekty (wartoci rednie, sumy, itp.) oraz atrybuty wsplne i
atrybuty domylne. Dwa ostatnie atrybuty s logiczn czci kadej instancji
klasy (kadego obiektu). W obiektowej bazie danych, dziedzina dowolnego
atrybutu moe by klasa, co zwiksza semantyczn spjno bazy (zwalnia od
okrelania wizw spjnoci bezporednio w zbiorach wartoci). Rwnie
klasa (lub kilka klas), jako agregacja powizanych ze sob obiektw w bazie
danych, stanowi cel do sformuowania zapytania. Zwykle klasy wie si ze
sob
poprzez
hierarchi
(lub
inn
struktur)
dziedziczenia.

Podstawowe definicje w obiektowoci


hermetyzacja (encapsulation) - zamknicie pewnego zestawu bytw
programistycznych w "kapsu" (obiekt, klas modu, etc.) o dobrze
okrelonych granicach. Oddziela si abstrakcyjn specyfikacj tej "kapsuy"
(obiektu, klasy, moduu, etc.) od jej implementacji, ukrywajc cz informacji
w niej zawartej dla operacji z zewntrz obiektu. Hermetyzacja jest podstawow
technik abstrakcji, tj. ukrycia wszelkich szczegw danego przedmiotu lub
bytu programistycznego, ktre na danym etapie rozpatrywania (analizy,
projektowania, programowania) nie stanowi jego istotnej charakterystyki. W
obiektowoci do popularnym stereotypem jest koncepcja ortodoksyjnej
hermetyzacji (Smalltalk), w ktrej wszelkie operacje, ktre mona wykona na
obiekcie s okrelone przez metody przypisane do obiektu (znajdujce si w
jego klasie i nadklasach). Bezporedni dostp do atrybutw obiektu jest
niemoliwy. Alternatyw jest hermetyzacja ortogonalna (C++, Eiffel), gdzie
dowolny atrybut obiektu (i dowolna metoda) moe by prywatny (niedostpny
z zewntrz) lub publiczny;

agregacja (aggregation) - zwizek pomidzy klasami obiektw, modelujcy


stosunek caoci do jej czci (np. stosunek samolotu do miga). Obiekty s
powizane zwizkiem agregacji, jeeli jeden z nich mona uwaa za cz
drugiego, za cykl i czas ycia tych obiektw s jednakowe;

Podstawowe definicje w obiektowoci


hierarchia kompozycji klas jest skierowanym grafem okrelajcym
definicj klasy, reprezentujcym powizania atrybut - dziedzina. Nie ma
zwizku z hierarchi klas reprezentujc powizania klasa - podklasa.

Rys. Przykad hierarchii klas i hierarchii kompozycji klas

Podstawowe definicje w obiektowoci


Klasa Pojazd stanowi korze przedstawionej powyej hierarchii klas. Zawiera
cztery atrybuty: identyfikator, waga, ukad_napdzajcy, producent. Klasy
Samochd i Ciarwka s specjalizacjami (uszczegowieniem) tej klasy.
Dziedzicz po klasie Pojazd (generalizacji) wszystkie jej metody i atrybuty.
Podobnie jest z kas SamochdKrajowy, stanowic specjalizacj klasy
Samochd, ktra dziedziczy wszystkie atrybuty i metody klasy Samochd i
wszystkich jej nadklas (w tym wypadku klasy Pojazd).
W hierarchii kompozycji klas korzeniem jest rwnie klasa Pojazd.
Dziedzinami dwch pierwszych jej atrybutw s klasy pierwotne,
odpowiednio: string i integer. Dziedzin atrybutu ukad_napdzajcy jest
klasa UkadNapdzPojazdu, dziedzin atrybutu producent - klasa Firma.
Wartoci kadego z tych atrybutw moe by instancja klasy zdefiniowanej
jako jego dziedzina lub instancja dowolnej klasy znajdujcej si w hierarchii
klas, zakorzenionej w klasie - dziedzinie. Oznacza to, i wartoci atrybutu
producent moe by obiekt, ktrego wzorcem jest klasa Firma, ale rwnie
wzorzec tego obiektu moe stanowi jedna z klas: FirmaSamochodowa,
FirmaCiarwek, JaposkaFirmaSamochodowa.

Wasnoci obiektowego modelu danych

Wasno

Relacyjne bazy danych

Jzyki obiektowe

Obiektowe bazy danych

Obiekty zoone

Atomowe typy danych. Zagniedane konstruktory, brak typw

Zoone typy danych


Konstruktory: krotka, tablica

Zoone typy danych. Konstruktory: krotka, zbir, lista

Tosamo obiektw

Warto danych

Lokalizacja obiektu

Systemowy identyfikator obiektu

Hermetyczno

Brak

Pena lub kontrolowana przez


uytkownika

Pena, kontrolowana lub brak

Typy i klasy

Schematy relacji,
Procedury skadowane

Tak

Tak

Hierachia klas

Brak

Dziedziczenie proste i wielobazowe

Dziedziczenie proste i wielobazowe

Overriding, overloading i late


binding

Brak

Tak

Tak

Weryfikacja spjnoci danych

Tak

Nie

Tak

Trwao

Tak

Nie

Tak

Zarzdzanie pamici masow

Tak

Nie

Tak

Przetwarzanie transakcyjne

Tak

Nie

Tak

Ad Hoc query

Tak

Nie

Nie/Tak

Ewolucja schematu

Ograniczona

N/A

Tak
20

Obiektowo-relacyjne bazy danych


(ORDBMS)

Obiektowo-relacyjne bazy danych


(ORDBMS)

! Stanowia bardzo silna grupe systemw, ktra w

! ORDBMS korzysta z modelu danych zawartego w standardzie

ostatnim czasie dobrze zaznaczya si na rynku


oprogramowania.
! Nazywane s Object Relational lub Extended
Relational. S wynikiem ostronej ewolucji systemw
relacyjnych w kierunku obiektowych. Kierunek
rozwoju jest wyznaczany przez dwie tendencje:
!

denie do zniwelowania niedostatkw technologii


relacyjnej, szczeglnie w zakresie danych
multimedialnych, doczania metod lub regu
"zachowania sie" danych, modelowania pojeciowego,
ch wprowadzenia wielu cech obiektowoci, takich jak
klasy, metody, dziedziczenie, abstrakcyjne typy danych
(ADT) - wasnoci potwierdzajce cho czciow
obiektowo systemu relacyjnego.

Liczce si na rynku ORDBMS

SQL3, ktory mowi, ze "obiektowo-relacyjny model danych


probuje dodac obiektowosci do tablic". Dane sa wci
przechowywane w tabelach, jednak wartoci mog mie nieco
bogatsza ni dotychczas posta - ADT (Abstract Data Type).
Pola typu ADT zachowuj funkcjonalno zwykych pl (mog
by uywane do indeksowania, wyszukiwania, pobierania lub
umieszczania danych) przy nowych zawartociach (jak np.
multimedia).
! Rozszerzenie dotyczy rozbudowy mozliwoci zapyta o obiekty
zagniedone, ADT, atrybuty o wartoci wyliczanej (np. metody
obiektu), itp. Wyniki sa jednak wci podawane w formie tabel
krotek, a nie jako kolekcje obiektw.
! Bezporednie odwzorowanie midzy obiektami z jzyka
programowania a obiektami / tabelami w bazie nie istnieje,
tumaczenie wci obcia programist.

Migracja od relacji do ORDBMS

! Oracle (wersje 8.x),


! Illustra (Universal Server) [Informix],
! DB/2 Extenders (Universal Database)

[IBM],
! UniSQL/X [UniSQL],
! OSMOS [Unisys]

Na schemacie wida najistotniejsze zmiany architektury


dokonywane przy przejciu z modelu relacyjnego na obiektowy.
Naley tu szczeglnie zwrci uwag, e cz informacji tkwicej
w bibliotekach, typach, aplikacjach i moduach zostaa
usystematyzowana i umieszczona bezporednio w klasach.

Porwnanie systemw -Wady i zalety


ORDBMS
Zalety:
! przystosowanie do multimediw (due obiekty BLOB, CLOB i dane
binarne)
! dane przestrzenne (spatial)
! abstrakcyjne typy danych (ADT)
! metody (funkcje i procedury) definiowane przez uzytkownika w
roznych jezykach (C++, VisualBasic, Java)
! kolekcje (zbiory, wielozbiory, sekwencje, tablice zagniezdzone,
tablice o zmiennej dlugosci)
! typy referencyjne
! przeciaanie funkcji
! optymalizacja zapyta
Wady:
! wcia nie uniknito wielu bdw modelu relacyjnego (np.
niezgodnoci impedancji)
! brak perspektyw na przyszo,
! produkt hybrydowy "dwa w jednym" (redundancja kodu i danych)
! brak bazy intelektualnej,
! zmiany wprowadzane ad hoc (kumulowanie bdw koncepcyjnych)

Obiektowa baza danych


Obiektowa baza danych (Object Database, ObjectOriented Database) jest zbiorem obiektw, ktrych
zachowanie, stan i zwizki zostay okrelone zgodnie
z obiektowym modelem danych.
Przyjcie obiektowego modelu, jako podstawy bazy
danych, implikuje naturaln jej rozszerzalno bez
koniecznoci wprowadzania zmian do istniejcego
systemu. Moliwe s dwa sposoby rozszerzenia bazy
danych: rozszerzanie zachowania si i dziedziczenie.
Zachowanie si obiektu moe zosta rozszerzone
przez doczenie dodatkowych programw (metod)
do ju istniejcych. W dowolnym momencie ycia
systemu mona zdefiniowa nowe klasy korzystajc
ju z istniejcych lub przedefiniowa istniejce.
25

Obiektowy system zarzdzania baz danych


Systemem zarzdzania baz danych nazywamy system
oprogramowania zawierajcy nastpujce mechanizmy:
" rodki do gromadzenia, utrzymywania i administrowania
trwaymi i masowymi zbiorami danych;
" rodki zapewniajce spjno i bezpieczestwo danych;
" sprawny dostp do danych (zwykle poprzez jzyk zapyta);
" rodki programistyczne suce do aktualizacji/przetwarzania
danych (API dla popularnych jzykw programowania);
" jednoczesny dostp do danych dla wielu uytkownikw (z
reguy, realizowany poprzez transakcje);
" rodki pozwalajce na regulacj dostpu do danych
(autoryzacj);
" rodki pozwalajce na odtworzenie zawartoci bazy danych po
awarii;
" rodki do zarzdzania katalogami, schematami i innymi
metadanymi;
" rodki optymalizujce zajto pamici oraz czas dostpu (np.
indeksy);
" rodki do pracy lub wspdziaania w rodowiskach
rozproszonych.

Interfejs obiektowych baz danych


Obecnie stosuje si dwa podejcia przy projektowaniu interfejsu
uytkownika w obiektowych bazach danych. Podobnie jak w bazach
relacyjnych definiuje si jzyk bazy danych lub rozszerza si obiektowy
jzyk programowania o instrukcje konieczne do obsugi bazy danych.
Zalecane jest drugie podejcie, poniewa programista nie musi uczy si
dodatkowego jzyka, lecz rozszerzy znany ju sobie jzyk o dodatkowe
konstrukcje. W systemach obiektowych wszelkie operacje na obiektach
odbywaj si poprzez wysyanie do obiektw odpowiednich komunikatw.
Sposb przesyania komunikatw midzy obiektami bazy danych musi by
zgodny ze sposobem przesyania komunikatw midzy obiektami jzyka
programowania, na ktrym oparty jest jzyk bazy danych. Jzyk taki,
podobnie jak jzyki relacyjnych baz danych (np. SQL), musi zawiera
podjzyki pozwalajce definiowa struktury danych, manipulowa danymi i
strukturami, realizowa zapytania. Przyjmuje si podzia interfejsu
obiektowych baz danych na cztery podjzyki:
!sucy przekazywaniu komunikatw;
!DDL (ODL)(Data Definition Language) - jzyk definicji danych;
!DML (OML)(Data Manipulation Language) - jzyk manipulacji danymi;
!DCL (OCL)(Data Control Language) - jzyk kontroli danych.

Obiektowy system zarzdzania baz


danych
Systemy zarzdzania bazami danych czsto posiadaj wiele innych
mechanizmw, np. zarzdzanie wersjami i danymi temporalnymi,
przechowywanie i udostpnianie danych multimedialnych,
wygodne (wizyjne) rodowiska do tworzenia aplikacji, pomosty do
wsppracy z innymi systemami, wspomaganie dla perspektyw,
zapamitanych procedur i aktywnych regu, pakiety statystyczne,
pakiety dla przeprowadzania analiz (odkopywania danych), pakiety
do tworzenia hurtowni danych, rodki udostpniajce baz danych
w sieci Internet, itd.
Obiektowy system zarzdzania baz danych (Object Database
Management System, ODBMS) jest systemem zarzdzania
obiektow baz danych. Zawiera wszystkie wymienione wyej
mechanizmy zrealizowane w oparciu o obiektowy model danych.

Interfejs obiektowych baz danych cd..


Przekazywanie komunikatw jest motorem wszelkich akcji
wykonywanych na obiektach, od inicjalizacji obiektw, poprzez manipulacj
danymi, wykonywanie zapyta, po usuwanie konkretnych obiektw.
Skadnia komunikatu jest nastpujca:

(Selektor Odbiorca [Arg1 Arg2 Arg3 ...])


gdzie:
Selektor - nazwa komunikatu;
Odbiorca - obiekt do ktrego komunikat jest wysyany;
Arg1, Arg2, ... - opcjonalne argumenty wywoania;
W wyniku realizacji komunikatu zwracany jest obiekt. Argumenty wywoania
s obiektami lub, po wykonaniu obliczenia ich wartoci, sprowadzaj si do
obiektw. Dlatego argumentem komunikatu moe by inny komunikat.
Odbiorc komunikatu moe by wynik innego komunikatu. Jako przykad
niech posuy komunikat: (Waga Obiekt-samolot) zwracajcy wag
samolotu, przy zaoeniu, e Waga jest atrybutem obiektu klasy Samolot, a
Obiekt-samolot - jego identyfikatorem.

Jzyk definicji obiektw ODL (DDL)

SQL 3

Jzyk definicji obiektw ODL (DDL)

Inne

Language-independent ODL

C++
SmallTalk

Java

SQL 3

Niezaleny od obiektowych jzykw programowania jzyk definiowania


struktur danych wzorowany na IDL.

ODL (Object Definition Language) jest jzykiem uywanym do definiowania specyfikacji obiektu zgodnie z
modelem obiektu ODMG. ODL jest uywany do wspierania przenonoci schematu danych pomidzy rnymi
systemami.
Gwnymi zasadami, ktre wytyczay rozwj ODL'a s:
ODL powinien zawiera ca semantyk konstrukcji obiektu, ktra ma umoliwia tworzenie obiektu
zgodnie z modelem ODMG.
ODL nie bdzie jzykiem oglnego przeznaczenia, a jedynie jzykiem definiujcym specyfikacj obiektu.
ODL powinien by niezaleny od innych jzykw programowania.
ODL powinien by kompatybilny z jzykiem IDL grupy OMG.
ODL powinien mie moliwo pniejszego rozwoju.
ODL w zamierzeniach nie ma by penym jzykiem programowania. Jest to jzyk do definiowania specyfikacji
obiektu. Za pomoc tego jzyka mona zdefiniowa charakterystyk typw, wcznie z ich danymi oraz
operacjami na tych danych. ODL tworzy jedynie sygnatury operacji, ale nie mwi nic na temat implementacji
tych operacji.
ODL ma w zamierzeniach definiowa typy obiektw, ktre mog by implementowane w rnych jzykach
programowania. Zatem jzyk ten nie prbuje bezporednio nawizywa do skadni adnego z jzykw
programowania oglnego przeznaczenia. Uytkownicy mog uy ODL'a, aby zdefiniowa swj schemat bazy
danych w sposb niezaleny od konkretnej implementacji programu korzystajcego z tej bazy.
Biblioteki do wizania z jzykami takimi jak C++, Smalltalk i Java zostay zaprojektowane tak, aby umoliwi
take deklaratywn skadni, osigaln w tych jzykach. W zwizku z rnicami w modelu obiektw tych
jzykw, nie zawsze jest moliwe osigniecie spjnej semantyki w ODL'u dostpnym z bibliotek. Podejmowane
byy starania, aby minimalizowa t niespjno.
Skadnia ODL'a jest rozszerzeniem IDL'a, ktry jest rozwijany przez OMG jako cz CORBA (Common Object
Request Broker Architecture). IDL by tworzony pod wpywem jzyka C++, co rwnie wywaro wpyw na ODL.
ODL umoliwia take integracj schematw baz danych stworzonych innymi metodami. Przykadowymi
jzykami, ktre atwo mog by przekonwertowane do specyfikacji ODL s: SQL (ANSI X3H2), EXPRESS
(STEP/PDES), Object Information Management (ANSI X3H7), CAD Framework Initiative. Umoliwia to integracj
z istniejcymi ju rozwizaniami.

31

Interfejs obiektowych baz danych cd..


DDL - jzyk definicji danych umoliwia definicj schematu bazy danych,
zapewniajc jednoczenie realizacj cech i ogranicze waciwych dla
modelu obiektowego. Przykadowa skadnia komunikatu definiujcego now
klas moe by nastpujca:
(make-class NazwaKlasy [:superclasses ListaNadklas]

[:attributes ListaAtrybutw]
[:methods ListaMetod])
ListaAtrybutw jest rozwinita do nastpujcej postaci:
(NazwaAtrybutu [:domain SpecDziedziny]
[:inherit-from Nadklasa])
SpecDziedziny okrela typ atrybutu, a Nadklasa nazw klasy od ktrej
atrybut jest dziedziczony (opuszczenie nazwy oznacza, e atrybut jest
dziedziczony od pierwszej klasy wymienionej w ListaNadklas). ListaMetod
zawiera pary (NazwaMetody [Nadklasa]) i mwi od jakiej Nadklasy
dziedziczona jest dana metoda. Jeeli pominito Nadklasa - metoda jest
now metod dla definiowanej klasy.

32

Przykadowy schemat obiektowej bazy


danych
K = {Osoba, Maestwo, Zameldowanie}
typ(Osoba) =
[
PESEL : String;
Imi : String;
Nazwisko : String;
Ojciec : Osoba;
Matka : Osoba;
Dzieci : {Osoba}
]
typ(Maestwo) = [
M : Osoba;
ona : Osoba;
Data_zawarcia : Date;
Data_ustania : Date;
Dzieci : {Osoba}
]
34

Interfejs obiektowych baz danych cd..

Przykadowy schemat obiektowej bazy


danych

DML - jzyk manipulacji danych zapewnia moliwo tworzenia,


modyfikowania i usuwania poszczeglnych instancji klasy oraz
wykonywania zapyta. Skadnia podobna jest do tej, z ktr spotykalimy
si przy relacyjnych bazach danych. Podjzyk ten umoliwia wykonywanie
nastpujcych operacji:

typ(Zameldowanie) = [
Obywatel : Osoba;
Adres : [
Ulica : String;
Nr_domu : String;
Nr_miesz : String;
Miejscowo : String
]
Od_kiedy : Date;
Do_kiedy : Date;
Rodzaj : String

!tworzenie nowego obiektu (instancji) danej klasy:


(make NazwaKlasy :Atrybut1 warto1
... :AtrybutN wartoN);

35

!wykonywanie zapyta (wybieranie czci obiektw pewnej klasy z bazy


speniajcaych dany warunek):
(select Klasa Warunek) - gdzie Warunek jest wyraeniem logicznym;
!usuwanie wskazanego obiektu:
(delete-object Obiekt);
!usuwanie wszystkich obiektw danej klasy speniajcych zadany
warunek:
(delete Klasa Warunek);
!zmian wartoci atrybutu we wszystkich instancjach speniajcych dany
warunek:
(change Klasa [Warunek] NazwaAtrybutu NowaWarto).

Interfejs obiektowych baz danych cd..

Model zapyta (OQL cz DML)


Obecnie model zapyta i jzyk zapyta s na etapie bada i rozwoju. W
niektrych istniejcych systemach (np. IRIS) prbuje si wprowadzi oparty
na skadni SQL nowy jzyk zapyta - OQL (Object Query Language),
opracowany wg wspomnianego ju standardu ODMG-93. Pod wzgldem
semantyki OQL bazuje na modelu obiektowym ODMG-93 oraz wprowadza
mocn kontrol typw (co zasadniczo rni go od SQL). Inne systemy
(ORION, GemStone) wprowadzaj model zapyta definiujcy semantyk
obiektowych rwnowanikw operacji relacyjnych, takich jak: selekcja,
projekcja, zczenie, operacje teoriomnogociowe na zbiorach.

DCL - jzyk kontroli danych zapewnia realizacj transakcji


(wczajc transakcje zagniedone i dugotrwae), sterowanie
semantyczn spjnoci, autoryzacje, zarzdzanie metodami
dostpu. Reguy semantycznej spjnoci mog by zawarte w
metodach powizanych z klasami.

Wzorowany na SQL 92 i 93 deklaratywny jzyk zapyta

Model zapyta cd..

Jzyk definicji obiektw OQL-przykady


select x
from DB.Osoba x
where exists y in x.Dziecko : y.Imi = 'Jzef';
select wnuk : x
from DB.Osoba.Dziecko.Dziecko x;
select wnuki : (select y from x.Dziecko y)
from DB.Osoba.Dziecko x;
select potomki : (select y from x(.Dziecko)* y)
from DB.Osoba x;
select osobaipotomki : [ x, potomki : (select y from x(.Dziecko)* y) ]
from DB.Osoba x;

Definicj niepierwotnej klasy moemy przedstawi w postaci skierowanego


dwuwymiarowego, grafu (poprzedni rys.) nazywanego grafem schematu klasy.
Definicja grafu schematu (SG) dla pewnej klasy C jest nastpujca:
SG jest zakorzenionym skierowanym grafem skadajcym si ze zbioru klas N
oraz ze zbioru ukw klas E wicych pary klas. Klasa C jest korzeniem SG i
jest klas niepierwotn;
E skada si z dwch typw ukw:
uk midzy klasami C1 i C2, przy czym C2 stanowi dziedzin jednego z
atrybutw klasy C1, skierowany od atrybutu do dziedziny;
uk midzy klasami C1 i S1, przy czym S1 jest specjalizacj klasy C1, uk
kierowany jest od klasy do jej podklasy;
uk czcy atrybut klasy z jego dziedzin moe by jednowartociowy lub
wielowartociowy w przypadku, gdy wartoci atrybutu moe by zbir
instancji jego dziedziny;
zbir ukw z dowolnej klasy Ci w SG do bezporednich i porednich podklas
Ci tworzy skierowany acykliczny graf (hierarchi klas zakorzenion w Ci);
zbir ukw od korzenia C do bezporednich i porednich dziedzin atrybutw
stanowi skierowany graf zakorzeniony w C, czyli hierarchia kompozycji klas
SG jest skierowanym, zakorzenionym grafem, ktry moe by cykliczny.

39

Model zapyta jednoargumentowe


Dotycz jednej klasy lub hierarchii klas zakorzenionej w jednej klasie, s
analogiczne do relacyjnych operacji selekcji i projekcji. Operacja selekcji na
klasie C wybiera takie instancje klasy C, ktre speniaj boolowskie
kombinacje predykatw zapytania na podgrafie grafu schematu C. Graf taki
nazywamy grafem zapytania. Graf zapytania zawiera wycznie klasy dla
ktrych okrelono predykaty w zapytaniu.
Predykat moe wystpi w jednej z dwch postaci:
!predykat prosty, gdzie warto moe by instancj klasy pierwotnej lub
identyfikatorem obiektu dowolnej klasy (dziki czemu moliwe jest
sprawdzenie rwnoci odwoa do obiektw);
!predykat zoony odwoujcy si do cigej sekwencji atrybutw wzdu
gazi hierarchii kompozycji klas

Operatorem w predykacie zapytania moe by dowolny operator skalarny,


operator porwnania zbiorw. Kada metoda moe by uyta w dowolnej
czci predykatu (jako nazwa atrybutu, operator lub warto). Zapytanie
formuowa mona specyfikujc dowoln podklas dziedziny atrybutu jako
jego dziedzin.

Model zapyta jednoargumentowe cd..


Szczegowa definicja grafu zapytania QG jest nastpujca:
!QG jest spjnym podgrafem grafu schematu SG dla klasy C. Klasa C jest
korzeniem grafu QG, tzn. graf QG dla C i SG dla C maj ten sam korze. C jest
klas niepierwotn;
!graf QG zawiera tylko te wzy odpowiadajcego grafu SG, dla ktrych jest
okrelony predykat zapytania;
!uk prowadzcy od atrybutu klasy do dziedziny SG mona zmieni na grafie
QG na taki, ktry prowadzi od atrybutu do podklasy jej dziedziny. Wwczas do
grafu QG jest doczana jedynie hierarchia klas zakorzenionych w nowej
dziedzinie;
!zbir ukw prowadzcych z klasy korzenia C do bezporednich i
porednich dziedzin atrybutw C, zawartych w grafie QG, tworzy skierowany
graf zakorzeniony w klasie C. Std te, hierarchia kompozycji klas dla QG
tworzy skierowany zakorzeniony w klasie C graf. Dziki temu hierarchia
kompozycji klas dla QG tworzy skierowany graf zakorzeniony w klasie C.
Niektre gazie zawieraj licie inne nie (istota cykli zostanie opisana
poniej);
!wze-li w acyklicznej gazi ma tylko pojedynczy predykat. Dla wzw
wewntrznych dowolnej gazi (cyklicznej bd nie) mog by okrelone
predykaty (proste lub zoone).

Model zapyta - przykad

Model zapyta - przykad

Przyjmujc graf z poprzedniego rys. za przykadowy graf schematu zadajmy


zapytanie: "Podaj wszystkie niebieskie samochody, wyprodukowane przez
firm z siedzib w Detroit, , ktrej prezes nie przekroczy 50 lat:":

(select Pojazd (Kolor = "niebieski"


and Firma Lokalizacja = "Detroit"
and Firma Prezes Wiek < 50))
Kolor = "niebieski" jest predykatem prostym, pozostae dwa predykaty s
zoone. Graf zapytania przedstawiony jest na rys.

Hierarchia kompozycji klas moe zawiera gazie cykliczne. Przypadek


taki wystpuje, jeeli ga hierarchii kompozycji klas zawiera takie klasy
Ci oraz Cj, e Cj jest (poredni) dziedzin atrybutu klasy Ci, a Ci (lub jej
podklasa albo nadklasa) jest dziedzin atrybutu Cj. Mog wystpi cztery
rodzaje takich powiza:
!cykl typu n jest zoony z n>1 wzw na gazi;
!cykl typu n-s jest quasi-cyklem odpowiadajcym cyklowi typu n, skada
si z n>0 wzw i nadklasy lub podklasy dla jednego z n wzw;
!cykl typu s jest zoony z jednego wza;
!cykl typu s-s jest quasi-cyklem odpowiadajcym cyklowi typu s, skada si
z jednej klasy oraz jej nadklasy lub podklasy.
Nastpny Rys. obrazuje te zalenoci.

Rys.Graf zapytania

Model zapyta - przykad

Model zapyta - przykad


Przedstawione zostan przykady zapyta, ktrych grafy zawieraj gazie
cykliczne:
dla grafu schematu z poprzedniego przykadu dokadamy zaoenie, e klasa
Pracownik ma dodatkowy atrybut WasnyPojazd, ktrego dziedzin jest klasa
Pojazd.
Zapytanie: "Wymie wszystkie niebieskie samochody posiadane przez
prezesw firm, w ktrych zostay wykonane" jest przykadem zapytania,
ktrego graf zawiera cykl typu n:
(select (Pojazd: V) (Kolor = "niebieski"
and Producent Prezes WasnyPojazd = V))
Zmienna V przyjmuje wartoci wszystkich instancji klasy pojazd.

Rys. Gazie cykliczne

Model zapyta - przykad


Zakadamy, e w grafie schematu, klasa Pracownik zawiera dodatkowy
atrybut: Kierownik, ktrego dziedzin jest klasa Pracownik (ga cykliczna
typu s). Dodatkowo zawiera klas PracownikKobieta bdc podklas klasy
Pracownik. Graf zapytania: "Wymie wszystkich kierownikw kobiety
pracownika o nazwisku Johnson: zawiera ga cykliczn typu s-s:
(select Pracownik (recurse Kierownik: M.
(:M. is-a PracownikKobieta))
(Nazwisko = "Johnson"))
Wyraenie: (recurse Kierownik: M.) mwi o tym, i po znalezieniu instancji
klasy Pracownik speniajcej predykat (Nazwisko = "Johnson"), w sposb
rekurencyjny maj zosta wyszukane wartoci atrybutu Kierownik wzgldem
znalezionej instancji. Wyraenie (:M. is-a PracownikKobieta) ogranicza wynik
tych poszukiwa do instancji klasy PracownikKobieta.

Model zapyta - przykad


Wynik zapytania jest zaleny od interpretacji dziedziny zapytania.
Dziedzin zapytania mona rozumie jako zbir instancji klasy C bdcej
przedmiotem zapytania lub zbir instancji hierarchii klas zakorzenionej
w C. Zalenie od tego, w wyniku zapytania jednoargumentowego na
klasie C, otrzyma si zbir instancji klasy C lub zbir niejednorodnych
(bo nalecych do rnych klas) instancji caej hierarchii klas
zakorzenionej w C. W wyniku operacji selekcji na hierarchii klas
zakorzenionej w C otrzymujemy zbir tych instancji, ktre speniaj
predykat zapytania. Operacja projekcji polega na wybraniu tylko
niektrych atrybutw z instancji speniajcych warunek zapytania. W
przypadku zmiany nazwy atrybutu odziedziczonego, atrybut ten jest
traktowany identycznie jak oryginalny atrybut. Atrybuty rwnowane
(odziedziczone, z przedefiniowaniem nazwy lub dziedziny) musz
rwnie znale si w wyniku zapytania. Podczas realizacji operacji
projekcji eliminuje si duplikaty wg dwch kryteriw:
!rwnoci obiektw - testuje si rwno identyfikatorw obiektw;
!rwnoci wartoci - testuje si rwno zdefiniowanych przez uytkownika
atrybutw instancji, jeeli porwnywane obiekty charakteryzowane prze zbir
takich samych atrybutw. Atrybuty systemowe (numer wersji, data
modyfikacji, itp.) nie s brane pod uwag.

Model zapyta - zapamitywanie wyniku


Otrzymany w wyniku wykonania zapytania zbir obiektw, nalecych do
danej klasy lub hierarchii klas w niej zakorzenionych, powinien zosta
zapamitany, czyli doczony do systemowej hierarchii obiektw. Rzecz
oczywist jest, e obiekty te musz otrzyma nowe identyfikatory, aby
mogy by jednoznacznie identyfikowane w ramach caej bazy danych.
Now hierarchi klas mona umieci w hierarchii klas caej bazy danych
na jeden z dwch sposobw:
!(W1) nadklas korzenia nowej hierarchii klas (powstaej w wyniku
zapytania) jest nadklasa korzenia hierarchii klas stanowicej dziedzin
zapytania (szczegy na nastpnym slajdzie). Nie jest to do koca
poprawne.

Model zapyta - zapamitywanie (W1)


nadklas korzenia nowej hierarchii klas (powstaej w wyniku zapytania) jest
nadklasa korzenia hierarchii klas stanowicej dziedzin zapytania - Rys.
poniej.
Nie jest to do koca poprawne w przypadku operacji projekcji. Moe si zdarzy
bowiem, e w jej wyniku uzyskamy klas o mniejszej liczbie atrybutw ni jej
nadklasa. Inny problem stwarzany jest przez moliwo ewolucji schematu bazy
danych. Usunicie dowolnego atrybutu z jednej z nadklas dla klas z
podhierarchii powstaej w wyniku zapytania musi by propagowane w d,
zmieniajc wynik zapytania.

!(W2) umieszczenie korzenia nowej hierarchii klas jako podklasy klasy


CLASS bdcej korzeniem hierarchii klas caej bazy danych (szczegy
na kolejnym slajdzie). Takie podejcie zwiksza nieco zajto pamici,
z uwagi na konieczno skopiowania atrybutw i metod z nadklas
korzenia nowej hierarchii do tego wanie korzenia.
Rys. Umieszczenie klasy wyniku zapytania w hierarchii klas

Model zapyta - zapamitywanie (W2)


umieszczenie korzenia nowej hierarchii klas jako podklasy klasy CLASS
bdcej korzeniem hierarchii klas caej bazy danych - rys. poniej.
Takie podejcie zwiksza nieco zajto pamici, z uwagi na konieczno
skopiowania atrybutw i metod z nadklas korzenia nowej hierarchii do
tego wanie korzenia. Nie jest to jednak powana wada. Rozwizanie to
przyjto w modelu zapyta systemu ORION.

Rys. Umieszczenie klasy wyniku zapytania w hierarchii klas

Model zapyta wieloargumentowych

Model zapyta wieloargumentowych


Zapytania wieloargumentowe zawieraj zczenia i operacje na zbiorach.
Zczenia w obiektowym modelu zapyta dziel si na: zczenie niejawne
i zczenie jawne.
Zczenie niejawne w hierarchii kompozycji klas. Zapytanie
jednoargumentowe jest niejawnym zczeniem klas z hierarchii
kompozycji klas o korzeniu w docelowej klasie zapytania. Zczenie
zachodzi midzy klas Ci zawierajc atrybut A, a klas Cj, ktra jest
dziedzin tego atrybutu. Atrybut A oraz identyfikator obiektowy klasy
Cj stanowi atrybuty zczenia. Wad jest ograniczenie zczenia
niejawnego do wyspecyfikowanego zwizku atrybut-dziedzina.
Zczenie jawne - zczenie klas wg dowolnego, okrelonego przez
uytkownika atrybutu. Zczenie moe by wykonane, jeeli atrybuty
zczenia nalece do dwch rnych klas s zgodne. Mwimy, e
atrybuty Ai i Aj s zgodne, jeeli ich dziedziny s identyczne lub
dziedzina jednego z nich jest nadklas/podklas drugiego. To
zczenie w obiektowym modelu zapyta jest faktycznie zapytaniem
wieloargumentowym. Dziedzin tego zapytania s instancje klas
ulegajcych zczeniu lub instancje hierarchii klas w nich
zakorzenionych.

Model zapyta wieloargumentowych

Skadnia zapytania musi umoliwia okrelenie dziedziny zapytania dla kadej ze


zczanych klas. Wynikiem zczenia jest zbir instancji powstay z konkatenacji
instancji rnych klas. Przechowywanie wyniku zczenia musi si odbywa,
podobnie jak w przypadku zapyta jednoargumentowych, przy uyciu nowej
klasy, bdcej bezporedni podklas klasy CLASS (korzenia hierarchii klas caej
bazy). Definicja grafu zapytania dla zczenia pary klas jest nastpujca (Si
oznacza dziedzin atrybutu zczenia w Ci, Sj dziedzin atrybutu zczenia w Sj):
!kada z klas Ci oraz Cj jest korzeniem grafu zapytania odpowiadajcego
zapytaniu jednoargumentowemu odpowiednio na Ci i Cj. Oznacza to, e kady z
dwch grafw zapytania jest korzeniem hierarchii klas i hierarchii kompozycji klas
zakorzenionych w zczanej klasie;
!grafy zapytania dla Ci oraz Cj czciowo pokrywaj si na skutek zgodnoci
atrybutw zczenia. Klasy Si i Sj s korzeniami hierarchii kompozycji klas, w
ktrych wzy stanowi z kolei korzenie hierarchii klas. Jeli Si=Sj, to caa
hierarchia kompozycji klas jest wsplnie wykorzystywana przez odpowiednie
atrybuty zczenia klas Ci oraz Cj. Jeli Si jest nadklas dla Sj, to hierarchia
kompozycji klas zakorzeniona w Si jest dziedzin atrybutu zczenia klasy Ci, a
dziedzin atrybutu zczenia z Cj jest hierarchia kompozycji klas zakorzeniona w
Sj.

Rys. Graf zapytania, zczenia dwch dowolnych zapyta.


Dziedzin operacji na zbiorach moe by zbir instancji klasy zdefiniowanej
w bazie danych lub zbir instancji otrzymanych w wyniku zapytania.
Argument i wynik mog tworzy heterogeniczny zbir obiektw. Operacje
teoriomnogociowe wykorzystuje si gwnie do dalszego przetwarzania
wynikw zapyta (argumentami s zapytania).

Jzyk zapyta w OBD


Notacja jzyka jest podobna do jzyka zapyta relacyjnych baz danych
SQL. Struktura zapytania prostego wyglda nastpujco:
ProsteZapytanie ::=
select KlauzulaCelu |
select KlauzulaCelu from KlauzulaZakresu |
select KlauzulaCelu where KlauzulaKwalifikacji |
select KlauzulaCelu from KlauzulaZakresu where
KlauzulaKwalifikacji
W zapytaniu prostym mog wystpi trzy klauzule:
!celu - okrelajca atrybuty wyjciowe;
!zakresu - zawierajca deklaracje zmiennych obiektowych w postaci par:
zakres zmienna, zakresem moe by klasa. Klauzula ta moe zosta
pominita, wwczas domylnie przyjmuje si zmienn obiektow o tej
samej nazwie co klasa, dla kadej klasy do ktrej s odwoania w klauzuli
celu;
!kwalifikacji - suy do specyfikacji warunkw zapytania przy pomocy
boolowskich kombinacji predykatw.
Zapytania bardziej skomplikowane mona tworzy czc zapytania proste
przy pomocy operacji na zbiorach.

Jzyk zapyta w OBD - zapytania


acykliczne
Zapytania acykliczne zwizane z hierarchi kompozycji klas.
Zagniedenie definicji obiektw zwizane z hierarchi kompozycji klas
wymusza wczenie do jzyka zapyta konstrukcji pozwalajcych w atwy
sposb specyfikowa predykaty na zagniedonym cigu atrybutw. Taki
zagniedony cig atrybutw nazywany jest ciek. Zmienna obiektowa
moe zosta uyta do okrelenia cieki zawierajcej cig nazw atrybutw w
obiekcie zoonym, taka cieka nazywana jest zmienn ciekow. Zmienna
ciekowa przyjmuje posta:
!zmiennej skalarnej - jeeli wszystkie, zawarte w niej atrybuty s
atrybutami skalarnymi oraz gdy kady wystpujcy w niej atrybut
zbiorowy poprzedzony jest jednym z kwantyfikatorw: each, exists (ich
znaczenie przedstawione zostanie w dalszej czci);
zmiennej zbiorowej - gdy zawiera przynajmniej jeden atrybut zbiorowy
dla ktrego nie podano adnego ze sw kluczowych (each, exists) lub
okrelono dla niego kwantyfikator set-of.

Jzyk zapyta w OBD - notacje cd..


Zwizki midzy skalarnymi zmiennymi ciekowymi lub midzy skalarn zmienn
ciekow, a sta skalarn okrela si przy pomocy skalarnych operatorw
porwna: =, equal, string-equal, string=, itp. Do okrelania zwizkw midzy
dwiema zbiorowymi zmiennymi ciekowymi lub zbiorow zmienn ciekow, a
sta zbiorow uzywa si zbiorowych operatorw porwna: has-subset, issubset, is-equal, itp. Zbiorow zmienn ciekow mona porwna ze sta
skalarn operatorami: has-element, -:has-element, a take w przeciwnym
kierunku: is-in, -:is-in.
W zapytaniach mona korzysta ze zmiennych zakresu. Stosuje si je jako skrt,
by unikn powtarzania zapisu dugiej zmiennej ciekowej. Mona rwnie
zwiza zmienn ze zbiorem obiektw bdcych wartociami atrybutu innego
obiektu, stosujc predykat przynalenoci w klauzuli zakresu. Rozszerzone
definicja klauzuli zakresu jest nastpujca:
KlauzulaZakresu :: ElementZakresu |ElementZakresu, KlauzulaZakresu
ElementZakresu ::= WyraenieKlasowe ZmiennaObiektowa |
ZmiennaObiektowa is-in ZbirZakresw |ZmiennaReferencyjna
ZmiennaObiektowa ::= NazwaZmiennej
ZbirZakresw ::= ZmiennaObiektowa ProstaciekaZbiorowa
ZmiennaReferencyjna ::= ZmiennaObiektowa is ZmiennaObiektowa
ciekaSkalarna |ZmiennaObiektowa is ZmiennaObiektowa ciekaZbiorowa
Wyraenie klasowe w najprostszym przypadku skada si z nazwy klasy.

Jzyk zapyta w OBD - przykady


W oparciu o schemat klasy Pojazd (przytaczany powyej)
postawione zostanie zapytanie o treci: "Wyszukaj wszystkie
niebieskie pojazdy, wyprodukowane przez firm
zlokalizowan w Detroit, ktrej prezes ma mniej ni 50 lat".
Pytanie to moe by sformuowane w nastpujcy sposb:
select :V from Pojazd :V
Rwno dwch obiektw (tosamo
where :V = "niebieski"
obiektow) wyraa si jednym z dwch
and :V producent lokalizacja = "Detroit" operatorw:
= (znak rwnoci) - rwno obiektw and :V producent prezes wiek < 50.
stwierdzenie czy identyfikatory obiektw
s rwne;

gdzie V jest zmienn obiektow. Mona pomin zmienn


obiektow w klauzuli zakresu, jeeli jednoznacznie wiadomo
do ktrych atrybutw stosowany jest predykat:
select Pojazd
== (podwjny znak rwnoci) - rwno
wartoci - kontrola czy odpowiadajce
where kolor = "niebieski"
sobie atrybuty (porwnywanych obiektw)
and producent lokalizacja = "Detroit"
zdefiniowane przez uytkownika maj te
and producent prezes wiek < 50.
same wartoci.

Jzyk zapyta w OBD - notacje


Ponisza notacja przedstawia definicj zmiennej skalarnej(zmienn zbiorow
definiuje si analogicznie, z wyjtkiem tego, e przynajmniej jeden atrybut
zbiorowy musi wystpi bez kwantyfikatora lub z kwantyfikatorem: set-of):
ZmiennaSkalarna ::= ZmiennaObiektowa ciekaSkalarna |
ciekaSkalarna
Zmienna obiektowa moe by pominita, jeeli wystpuje jednoznaczno
odwoa.
ciekaSkalarna ::= ElementciekiSkalarnej | ElementciekiSkalarnej
ciekaSkalarna
ElementciekiSkalarnej ::= NazwaAtrybutuSkalarnego |
Kwantyfikator NazwaAtrybutuZbiorowego
Zmienne ciekowe dziel si ponadto na:
!nieterminalne - zmienna ciekowa koczy si na niepierwotnej klasie;
!terminalne - dziedzin ostatniego atrybutu jest klasa pierwotna.
Do naoenia warunkw na atrybuty zbiorowe uywa si kwantyfikatorw:
!each - oznacza, e predykat musi by speniony dla kadego obiektu
nalecego do atrybutu zbiorowego;
!exists - wymusza spenienie predykatu przynajmniej dla jednego
obiektu ze zbioru atrybutu;
!set-of - okrela, e dany atrybut jest atrybutem zbiorowym.

Jzyk zapyta w OBD przykady cd..


Q-a1: "Podaj firmy, ktrych wszystkie oddziay zlokalizowane s w tym
samym miejscu co zarzd firmy"
select Firma
where each oddziay lokalizacja string-equal lokalizacja
Uyta zostaa skalarna zmienna ciekowa "each oddziay lokalizacja".
Pierwszy atrybut zawiera kwantyfikator each, poniewa jest
wielowartociowy.
Q-a2: "Podaj wszystkie firmy, posiadajce co najmniej jeden oddzia
zlokalizowany w tym samym miejscu co zarzd firmy"
select Firma
where exists oddziay lokalizacja string-equal lokalizacja
Q-a3: "Wybierz wszystkie firmy, ktrych oddziaami s fabryki samochodw
lub ciarwek". Przykad formuuje zapytanie na dwa sposoby:
select Firma
where oddziay funkcja
is-subset ("Fabryka Samochodw" "Fabryka Ciarwek")
Porwnuje si tu zbiorow zmienn ciekow "oddziay funkcja" do
zbiorowej staej.

10

Jzyk zapyta w OBD przykady cd..

Jzyk zapyta w OBD przykady cd..


select Firma
where each oddziay funkcja
is-in ("Fabryka Samochodw" "Fabryka Ciarwek")
Kwantyfikator each sprawia, e zmienna ciekowa staje si skalarem
testowanym wzgldem przynalenoci do danego zbioru wartoci.
Q-a4: Zapytanie "Wybierz wszystkie firmy posiadajce przynajmniej jeden
oddzia, zatrudniajcy co najmniej jednego pracownika mieszkajcego we
Wrocawiu i jedcego samochodem Ferrari" przedstawia przykad zwizania
zmiennej ze zbiorem obiektw bdcych wartociami atrybutu innego obiektu:
select :C from Firma :C, Oddzia :D, Pracownik :E
where :D is-in :C oddziay and :E is-in :D personel
and :E jedzi producent nazwa = "Ferrari"
and :E miejscezamieszkania = "Wrocaw";

Rys. Graf schematu definiujcy klas Pojazd

Jzyk zapyta w OBD przykady cd..


Z zastosowaniem predykatu przynalenoci do zbioru (is-in). Kadorazowo,
przy przypisaniu zmiennej :C instancji klasy Firma okrelony zostaje zbir
zakresu dla zmiennej :E. Jest to suma zbiorw obiektw klasy Pracownik
bdcych wartociami atrybutu personel po wszystkich oddziaach dla danej
instancji klasy Firma. Instancja klasy Firma spenia warunki zapytania, gdy
istnieje co najmniej jeden element w tym zbiorze speniajcy predykaty zawarte
w klauzuli kwalifikacji zapytania.
Q-a5 "Wybierz wszystkie firmy, w ktrych wszyscy pracownicy jed
samochodami ze zbioru (Fiat, Ferrari) lub (Ford, Chevrolet, Nissan)".
select :C from Firma :C, :S is :C oddziay personel jedzi
where :S is-subset ("Fiat", "Ferrari")
or :S is-subset ("Ford", "Chevrolet", "Nissan").

Z wykorzystaniem tylko zmiennych referencyjnych. Uwalniaj one od


kilkukrotnej specyfikacji dugiej zmiennej ciekowej powtarzajcej si w
zapytaniu.
select :C from Firma :C, :E is-in :C oddziay personel
where :E jedzi producent nazwa = "Ferrari"
and :E miejscezamieszkania = "Wrocaw";

Jzyk zapyta w OBD zapytania


acykliczne z hierarchi klas
Omawiany jzyk zapyta pozwala okreli, czy celem danego zapytania
jest pojedyncza klasa, hierarchia klas, czy te podzbir hierarchii klas.
Operator * (operator hierarchii) umieszczony w podzapytaniu po nazwie
klasy kieruje to zapytanie do caej hierarchii klas zakorzenionej w
wymienionej klasie. Podzbir hierarchii klas, bdcy celem zapytania,
moe zosta utworzony moe zosta utworzony poprzez zwizanie
zmiennej obiektowej z sum klas (lub hierarchii) albo rnic midzy
hierarchi klas i klas (lub hierarchi). Wyraenie klasowe pozwalajce
okreli cel zapytania w opisany sposb ma posta:
WyraenieKlasowe ::= WyraenieKlasowe |
WyraenieKlasowe union WyraenieKlasowe|
HierarchiaKlas difference WyraenieKlasowe |
Klasa |HierarchiaKlas
Klasa ::= NazwaKlasy
HierarchiaKlas ::= NazwaKlasy *

Jzyk zapyta w OBD przykady cd..


Q-h1: "Znajd wszystkie instancje klasy firma lub wszystkie jej podklasy,
posiadajce co najmniej jeden oddzia w Rzymie".
select Firma * where exists oddziay lokalizacja = "Rzym"
Q-h2: Zapytania jak powysze z wykluczeniem firm produkujcych
ciarwki:
select Firma * difference FirmaCiarwek
where exists oddziay lokalizacja = "Rzym"
Q-h3: "Znajd firmy produkujce samochody krajowe lub firmy japoskie
posiadajce przynajmniej jeden oddzia w Rzymie (dotyczy firm krajowych i
japoskich)"
select Firma *
KrajowaFirmaSamochodowa union JaposkaFirmaSamochodowa
where exists oddziay lokalizacja = "Rzym".

Jzyk zapyta w OBD przykady cd..


Przykad uycia kwantyfikatora union.
Q-h4: "Wybierz wszystkich pracownikw posiadajcych samochd z
silnikiem turbo o mocy wikszej ni 100 KM".
select :P from Pracownik * :P, Samochd * :A, SilnikTurbo * :T
where :A is-in :P wacicielpojazdu
and :A ukadnapdzajcy silnik = :T
and :T moc > 100
W powyszym zapytaniu wyraenie ciekowe wystpujce po
kwantyfikatorze is-in zwraca zbir wszystkich silnikw (dowolnego typu)
bdcych czci pojazdu (dowolnego typu), ktrych wacicielem jest
dana osoba. Mona ograniczy dziedzin wartoci atrybutu w wyraeniu
ciekowym, umieszczajc w nim wyraenie klasowe:
select :P from Pracownik :P
where :P exists wacicielpojazdu class Samochd * silnik
class SilnikTurbo moc > 100
Klauzula class Samochd * okrela obiekty bdce wartociami atrybutu
wacicielpojazdu i nalece do klasy Samochd.

11

Jzyk zapyta w OBD zapytania


cykliczne
Dotycz hierarchii kompozycji klas zakorzenionej w danej klasie,
zawierajcej jeden lub wicej cykli. Skadnia zapyta zostanie omwiona dla
cykli przedstawionch poprzednio.
Q-c1: "Wybierz wszystkie pojazdy, ktrymi jed prezesi, w ktrych zostay
one wyprodukowane". Zapytanie z cyklem typu n.
select :V from Pojazd :V
where kolor = "niebieski" and producent prezes jedzi = :V
Zmienna :V suy do przegldania wszystkich instancji klasy Pojazd.
Q-c2: "Wybierz wszystkie niebieskie samochody, wyprodukowane przez
firm, ktrej prezes jedzi japoskim samochodem". Przykad zapytania z
cyklem typu n-s.
select :V from Pojazd :V, JaposkiSamochd :J
where :V kolor = "niebieski" and producent prezes jedzi = :V

Jzyk zapyta w OBD zapytania z


wykorzystaniem metod
Metody ze wzgldu na penion w zapytaniu rol dzielimy na:
!metody atrybutu wyliczanego - peni rol podobn do atrybutu,
przekazujc jako swj wynik atrybut;
!metody predykatowe - przekazuje warto TRUE lub FALSE, warto
zwrcona przez tak metod moe by uyta w obliczaniu wyraenia
boolowskiego w zapytaniu
Przykady.
Q-m1: Przykadowe zastosowanie metody atrybutu wyliczanego. Zaoenie:
metoda Warto, zdefiniowana w klasie Samochd, oblicza warto
samochodu z jego skadowych (np. korpus, silnik). "Wybierz wszystkich
pracownikw posiadajcych co najmniej jeden samochd o wartoci
przekraczajcej 10000".

Jzyk zapyta w OBD zapytania


cykliczne
W celu przedstawienia kolejnych dwch przykadw, do klasy Pracownik
dodano atrybut Kierownik, ktrego dziedzin jest klasa Pracownik.
Q-c3: "Wybierz wszystkich kierownikw pracownika o nazwisku Johnson".
Zapytanie z cyklem typu s.
select Pracownik (recurse kierownik) where nazwisko = "Johnson"
Wyraenie recurse kierownik pozwala w sposb rekurencyjny pobra z
instancji klasy Pracownik warto atrybutu kierownik, w przypadku
znalezienia obiektu klasy Pracownik speniajcego zadany predykat
(nazwisko = "Johnson").
Q-c4: Dodatkowo do klasy Pracownik dodana zostaa podklasa
PracownikKobieta. "Znajd wszystkich kierownikw-kobiety pracownika o
nazwisku Johnson".
select :F from PracownikKobieta :F, Pracownik :E
where :F is-in :E (recurse kierownik) and :E nazwisko = "Johnson"

Jzyk zapyta w OBD zapytania z


wykorzystaniem metod - przykady
Q-m2: Przykad ilustrujcy uycie metody predykatowej. Zaoenie: w klasie
Firma zostaa zdefiniowana metoda DochdFirmy, zwracajca TRUE, gdy
dochd firmy jest rosncy. "Znajd firmy mieszczce si w Teksasie,
ktrych wszystkie oddziay zlokalizowane s rwnie w Teksasie o
rosncym dochodzie".
select Firma
where lokalizacja = "Teksas"
and each oddziay lokalizacja = "Teksas"
and DochdFirmy

select Pracownik
where exists wacicielpojazdu class Samochd warto > 10000

Porwnanie systemw -Wady i zalety


ODBMS
Zalety:
! zoone obiekty,
! typy danych definiowane przez uytkownika,
! tosamo obiektw (identyfikator), trwao,
! hermetyzacja, hierarchia, dziedziczenie
! rozszerzalno,
! zgodno we wszystkich fazach ycia bazy i danych,
! metody i funkcje przechowywane wraz z danymi,
! nowe moliwoci (wersjonowanie, rejestracja zmian, powiadamianie ...)
! moliwo nowych zastosowa mniejszym kosztem (bazy mulitmedialne,
przestrzenne, bazy aktywne...)
! porownywalna wydajno (i wcia rosnie)
Wady:
! brak optymalizacji zapyta (rozumianej jak w pozostaych modelach)
! niedopracowane mechanizmy zarzdzania du baz obiektw, sterowania
wersjami, ...
! maa liczba ekspertw od technik obiektowych
! nie wiadomo z jakimi kosztami wie si migracja duych systemw
! brak dopracowanych standardw

Porwnanie systemw relacyjnych,


obiektowych i ORDBMS
Cecha

RDBMS

ORDBMS

ODBMS

standard

SQL2 (ANSI X3H2)

SQL3/4 (w
opracowaniu)

ODMG-v2.0

wsppraca z
obiektowymi jzykami
programowania

saba, programici
musz dostosowywa
program obiektowy do
potrzeb bazy

ograniczona
gwnie do
nowych typw
danych

bezporednia, szeroko
rozumiana

Uytkowanie

atwa do zrozumienia
struktura, wiele
narzedzi dla
uytkownikw

latwe dla programistow,


uytkownikom pozostaje
pewien dostp przez SQL

Programowanie

Zapewnia niezaleno
danych od aplikacji,
trudno odzwierciedli
zoone powizania

podobnie jak w
RDBMS, ale
liczne
rozszerzenia
nieco komplikuj
zapewnia
niezaleno
danych od
aplikacji,
trudno
odzwierciedli
zoone
powizania

Obiekty w naturalny sposb


odzwierciedlaj dziedzin,
atwo modelowania
rnorodnych typw i
powiza

12

Porwnanie systemw relacyjnych,


obiektowych i ORDBMS cd..
Cecha

RDBMS

ORDBMS

ODBMS

Rozszerzalno

Brak

Gwnie ograniczona
do nowych typw
danych

Daje sobie rad z dowoln


zoonoci dziedziny,
uytkownicy mog pisa
metody i docza
struktury

Zoone dane i
powizania midzy nimi

Trudne do
zrealizowania

Trudne do
zrealizowania

daje sobie rad z dowoln


zoonoci dziedziny,
uytkownicy mog pisa
metody i docza
struktury

"dojrzao" systemw

Bardzo dojrzale,
dobrze
poznana,przetestow
ana metodologia,
liczne
implementacje,
stabilno na rynku

Niedojrzae,
rozszerzenia s nowe,
wci ewaluujce i
stosunkowo sabo
poznane

do dojrzae (dziki
powszechnoci OOA i
OOD)

Moliwo utrzymania
si na rynku

przewidywana dla
duzych
przedsiebiorstw
obecnych na rynku

przewidywana dla
przedsibiorstw
znanych z RDBMS,
doaczaja si nowi

na razie trudno
prognozowac mimo iz
sukces modelu
obiektowego wydaje si
oczywisty

13

Co to s transakcje?

Transakcyjne bazy danych

Transakcja to podstawowa logiczna jednostka interakcji


uytkownika z systemem bazy danych
Transakcja to sekwencja operacji, ktra musi zakoczy
si sukcesem w caoci w przeciwnym wypadku
przywrcony musi by stan pocztkowy
Przykad transakcji:
Operacja przelewu kwoty x z konta A na konto B:
1) Pobranie kwoty x z konta A
2) Dodanie kwoty x do konta B

Co to s transakcje? ..

Co to s transakcje?

Przykad zastosowania: musimy wykona


kilka komend SQL zmieniajcych dane w
tablicach. Jak to zrobi aby komendy wykona
si poprawnie do koca albo wcale?
Transakcja jest logiczn jednostk dziaa,
ktrej nie mona podzieli.
Logiczna jednostka dziaa to zbir
logicznych zmian w bazie danych, ktre
naley wykona wszystkie albo nie
wykonywa adnej.

W jzyku PostgreSQL zmiany te s kontrolowane przez


trzy kluczowe frazy:
Fraza BEGIN WORK rozpoczyna transakcj;
COMMIT WORK informuje, e wszystkie elementy
transakcji s kompletne i powinny zosta zatwierdzone
na stae oraz sta si dostpne dla wszystkich
transakcji;
ROLLBACK WORK mwi, e naley porzuci
transakcj, a wszystkie zmiany danych dokonane przez
transakcj SQL maj by anulowane. Baza danych, z
punktu widzenia uytkownikw, powinna si znajdowa
w takim stanie, jakby nie byy wykonywane adne
zmiany.

Co to s transakcje?

Trzeba uwaa aby nie wpa w


pewn puapk?
KLIENT 1

Dowolna transakcja w bazie danych


powinna by odizolowana od wszystkich
pozostaych transakcji, ktre s
wykonywane w tym samym czasie.
W idealnej sytuacji kada transakcja
zachowuje si tak jakby posiadaa wyczny
dostp do bazy danych.
Niestety realia zwizane z osigniciem
dobrej wydajnoci wymagaj kompromisw
o ktrych powiemy pniej.
5

KLIENT 2

Czy s wolne miejsca?

1
Czy s wolne miejsca?

Oferuje miejsce

1
1

Oferuje miejsce
Pytanie o kart kredytow lub konto

Podaje numer karty

Wolne miejsce

1
1

Pytanie o kart kredytow lub konto

Podaje numer konta

Autoryzacja

1
Autoryzacja

Przypisanie miejsca

1
1

Przypisanie miejsca
Obcienie karty

1
1

Obcienie karty
Zmniejszenie liczby wolnych miejsc

1
0

Zmniejszenie liczby wolnych miejsc

-1

Trzeba uwaa aby nie wpa w


pewn puapk?

Przykad transakcji

Ze rozwizania:
Pozwalamy tylko jednemu klientowi korzysta
w jednej chwili z aplikacji co powoduje sab
wydajno.
Piszemy aplikacj z technik semaforow.
Semafor ochrania dekrementacje zmiennej
liczba biletw.

Jak to rozwiza???
7

Przykad transakcji cd..

Przykad transakcji cd..

Kade wykonanie programu


PRZELEW_PKO_WBK
powoduje utworzenie nowej
transakcji.
9

Po co s transakcje? s rodkiem na
rozwizanie problemu wspbienoci

Przykadowa transakcja cd..


(begin transaction);
Zidentyfikuj klienta;
Jeeli nie da si zidentyfikowa to zerwij (abort);
Wczytaj zlecenie wypaty;
Sprawd konto klienta;
Jeeli konto < zlecenia to
komunikat o przekroczeniu konta;
zerwij (abort);
Wylij zlecenie do kasy;
Jeeli upyn czas wikszy od 5 minut to
cofnij zlecenie do kasy;
zerwij transakcj (abort);
Jeeli kasjer potwierdzi dokonanie wypaty to
potwierd transakcj (commit)
a inaczej
cofnij zlecenie do kasy;
zerwij (abort);

Transakcja, ktra
zacza si w systemie
jest identyfikowana
jako specjalny byt; jest
jej nadawany unikalny
numer (identyfikator).
abort - kasowanie
transakcji i wszelkich
skutkw ktre ona
poczynia
commit - wprowadzenie
skutkw transakcji na
dysk i skasowanie
transakcji

Takie programy mog by proste lub dowolnie skomplikowane.


Z tego wzgldu miara liczba transakcji/sekund jest czsto mao wiarygodna.

10

11

Zamy, e na bazie danych dziaa wiele procesw jednoczenie. Dla przykadu niech
bd dwa procesy A i B, ktre bd dziaa na bazie danych i wykonuj odczyt
atrybutu X, zwikszenie wartoci oraz zapis.
Czas Proces A
1
2
3
4
5
6

Proces B Warto XA Warto XB

Czyta X

5
5
6
X := X+1 6
Zapisuje X
6
Zapisuje X 6
Czyta X

X :=X+1

5
5
6
6
6

Jeeli te dwa procesy dziaayby niezalenie a X=5 przed rozpoczciem procesu to wynik
powinien w X by 7. Dziaajc rwnolegle i nie synchronizujc swoich akcji jedna
aktualizacja zostaa zgubiona.
Inny przykad: mamy kilku uytkownikw chcc rwnolegle aktualizowa pewien tekst.
Jeeli nie umwi si, ktry z nich aktualnie ma prawo wprowadza poprawki, to
cz poprawek moe zosta zgubiona.
12bazie
Transakcje do baz danych wprowadza si po to by umoliwi wspbiene dziaanie na
Danych. Mona wwczas uzyska spjno dziaania bez potrzeby umawiania si.

Po co s transakcje? - przeciwdziaaj
awariom
Zamy, e mamy system bankowy, w ktrym nastpuj operacje na kontach klientw
w sposb nastpujcy:
1. Klient wczytuje kart magnetyczn i jest rozpoznawany
2. Klient okrela sum wypaty
3. Konto klienta jest sprawdzane
4. Konto jest zmniejszane o sum wypaty
5. Wysyane jest zlecenie do kasy
6. Kasjerka odlicza sum wypaty od stanu kasy
7. Kasjerka wypaca klientowi pienidze

Normalnie, aby klient


dosta swoje pienidze,
tego rodzaju operacji
wykonuje si kilkadziesit.
Prawdopodobiestwo rnych
awarii jest spore.

Wasnoci transakcji
Nie myli pojcia transakcji z procedur! Transakcja angauje biece zasoby systemu
takie jak czas i dane. Wywoanie procedury moe by transakcj, ale moe ona te
skada si z wielu wywoa procedur i jedno wywoanie moe generowa wiele
transakcji. Transakcje mog obej si w ogle bez procedur.
Wasnoci transakcji: ACID

Atomowo (atomicity) - w ramach jednej transakcji wykonuj si albo


wszystkie operacje, albo adna

Spjno (consistency) - o ile transakcja zastaa baz danych w spjnym stanie,

Pytanie: co si stanie, jeeli pomidzy operacj 4 i 5 wycz wiato?


(Konto zostao zmniejszone, klient nie dosta pienidzy.

I
Transakcje: umoliwiaj uniknicie tego rodzaju nieprzyjemnych sytuacji
zwizanych z dowolnymi awariami sprztu, bdw w oprogramowaniu,
a nawet tego, e kasjerka poczua si niedobrze i musiaa wyj.
13

po jej zakoczeniu stan jest rwnie spjny. (W midzyczasie stan moe by


chwilowo niespjny)

Izolacja (isolation) - transakcja nie wie nic o innych transakcjach i nie musi
uwzgldnia ich dziaania. Czynnoci wykonane przez dan transakcj s
niewidoczne dla innych transakcji a do jej zakoczenia.

Trwao (durability) - po zakoczeniu transakcji jej skutki s na trwale


14
zapamitane (na dysku) i nie mog by odwrcone przez zdarzenia losowe (np.
wyczenie prdu)

Dwufazowe zatwierdzanie

Wasnoci transakcji cd..

Dla zapewnienia wasnoci atomowoci transakcji


rozproszonych opracowano protok zatwierdzania
dwufazowego (ang 2-Phase Commit)
Faza 1 Prepare: wzy (serwery) biorce udzia w
transakcji przygotowuj si do jej zatwierdzenia (na
danie koordynatora transakcji)
Faza 2 Commit: gdy wszystkie wzy s gotowe
do zatwierdzenia transakcji nastpuje jej rzeczywiste
zatwierdzenie

15

16

Wasnoci transakcji cd..

Jak realizuje si transakcje?


Standard ANSI/SQL nie definiuje frazy
SQL
BEGIN WORK, transakcje w tym
standardzie powinny wykonywa si
automatycznie. Fraza ta jednak jest
wymagana prawie we wszystkich
implementacjach baz danych.
Sowo WORK we frazie COMMIT WORK,
ROLLBACK WORK mona pomin.
17

18

Wasnoci transakcji cd..

Wasnoci transakcji cd..

19

20

Przetwarzanie transakcji

Kryterium poprawnoci transakcji


Wspbiene wykonanie transakcji jest poprawne wtedy i tylko wtedy jeeli jego efekt
jest dokadnie taki sam jak efekt wykonania tych transakcji pojedynczo po kolei.
Ta wasno nosi nazw szeregowalnoci (serializability)
Plan wykonania transakcji:
- Transakcje rozbija si na mniejsze fragmenty zwane operacjami.
- Plan ustala jak po kolei maj by wykonywane operacje z poszczeglnych transakcji.
-Plan jest szeregowalny, jeeli jego kocowy efekt jest taki sam, jak wykonanie
transakcji po kolei.
Istnieje matematyczna teoria szeregowalnoci transakcji, wiele osb na ni si powouje, ale
znacznie mniej wie, o co w niej chodzi. (Ja nie miaem cierpliwoci do tej teorii...) S opinie, e ta
teoria (jak wikszo teorii) jest mao przydatna, poniewa dla cokolwiek bardziej
skomplikowanych planw wykonania transakcji nic si nie da udowodni (trzeba i tak
zaimplementowa lub zasymulowa).
Istniej te opinie (Mohan) e teoria nie obejmuje wanych przypadkw takich jak usuwanie
danych.

Menader transakcji (MT) koordynuje wykonywanie transakcji.


Decyduje do jakiego menadera danych (MD) przekazuje operacj
transakcji.
Operacja przyjmuje planista zwizany z MD i zarzdza ich
wykonywaniem posuguje si protokem np.: dwu-fazowego
blokowania.

Problemy: znale szeregowalny plan o minimalnym totalnym koszcie


znale szeregowalny plan gdzie czas odpowiedzi nie jest duszy ni t, 21
....

22

Implementacja 2PL

Dziaanie planisty
Planista przyjmujc operacj ma do dyspozycji nastpujce
dziaania:

(dwufazowe blokowanie)

Zamek (lock): jedna z transakcji rezerwuje sobie dostp do obiektu.

!Przekaza operacj do wykonania menaderowi danych,

!Umieszczenie operacji w kolejce, jeli znajduje si ona w konflikcie z


inn operacj i naley poczeka na zakoczenie tej operacji,

!Odrzucenie operacji i tym samym caej transakcji, jeli np. konieczne

Inne transakcje nie maj dostpu lub maj dostp ograniczony.


Wyczny zamek (exclusive lock): transakcja zablokowuje jakikolwiek
dostp do obiektu dla innych transakcji.
Dzielony zamek (shared lock): inne transakcje mog czyta, ale nie mog
modyfikowa.

Udowodniono (szczeglnie, e dla kadego jest to oczywiste :-), e szeregowalno jest


zachowana, jeeli caa transakcja ma dwie fazy: rosnc i skracajc.

jest to z punktu widzenia rozwizywania zakleszcze (dead locs),


!Opisana strategia dziaania planisty jest w komercyjnych systemach
DBMS realizowana za pomoc tzw. protoku dwu-fazowego

start

Protok 2PL

potwierdzenie
(commit)

koniec

(two-phase locking)

blokowania. Planista realizujcy te strategi nazywany jest planist


zakadanie zamkw
(nie ma zwalniania)

blokowania dwufazowego.

zwalnianie
zamkw (nie
ma zakadania)

czas
23

Awarie s moliwe w obydwu fazach, ale faza commit jest szybka (milisekundy).
24

Implementacja 2PL

Implementacja 2PL

25

Zakleszczenie

Walka z zakleszczeniem

Koncepcja zamkw prowadzi do nieprzyjemnego efektu zwanego zakleszczeniem.

Bardzo powany problem, majcy skutki zarwno dla wydajnoci systemu jak i
spjnoci dziaania (szczeglnie w systemach czasu rzeczywistego, np. w bankach).

Transakcja A zablokowaa zasb X i da dostpu do zasobu Y


Transakcja B zablokowaa zasb Y i da dostpu do zasobu X.
Ani A, ani B nie mog dalej kontynuowa jakiejkolwiek akcji. (System zawiesi si.)
Moliwe s bardziej skomplikowane sytuacje zwizane z zakleszczeniem:
W ptli zakleszczenia s 3 transakcje:

Transakcja B

Transakcja A

Transakcja C

26

Zakleszczyy si dwie transakcje,


pozostae dziaaj normalnie:
Transakcja B

Transakcja A

Transakcja C

27

Metody bez zakleszcze oparte na


stemplach czasowych
Kada transakcja w momencie startu dostaje unikalny stempel czasowy, na tyle
precyzyjny, aby mc po stemplach rozrnia transakcje.

Dwie generalne metody:


1. Wykrywanie zakleszcze i rozrywanie ptli zakleszczenia. Detekcja zakleszczenia
wymaga skonstruowania grafu czekania (wait-for graph) i tranzytywnego
domknicia tego grafu (zoono gorsza ni n * n). Rozrywanie ptli
zakleszczenia polega na wybraniu transakcji ofiary uczestniczcej w
zakleszczeniu i nastpnie, jej zerwaniu i uruchomieniu od nowa. Wybr ofiary
podlega rnym kryteriom - np. najmodsza, najmniej pracochonna, o niskim
priorytecie, itd.
2. Nie dopuszczanie do zakleszcze. Istnieje wiele tego rodzaju metod, np.
a) Wstpne danie zasobw (preclaiming): przed uruchomieniem kada transakcja
okrela potrzebne jej zasoby. Nie moe pniej nic wicej da. Wada: zgrubne
oszacowanie danych zasobw prowadzi do zmniejszenia stopnia wspbienoci.
b) Czekasz-umieraj (wait-die): jeeli transakcja prbuje dosta si do zasobu, ktry
jest zablokowany, to natychmiast jest zrywana i powtarzana od nowa. Metoda
moe by nieskuteczna dla systemw interakcyjnych (uytkownik moe si
denerwowa koniecznoci dwukrotnego wprowadzania tych samych danych)
28
oraz prowadzi do spadku efektywnoci (sporo pracy idzie na marne).

Metody optymistyczne
Zasada podobna jak w przypadku stempli czasowych, ale transakcje nie dziaaj na
swoich wasnych kopiach, ale bezporednio na bazie danych.

adna zmiana nie jest nanoszona do bazy danych; transakcja dziaa na swoich
wasnych kopiach, a do potwierdzenia.

Optymizm polega na zaoeniu, e adnych konfliktw nie bdzie. Ale konflikty s


tym niemniej wykrywane i w przypadku ich wykrycia, transakcje s zrywane, a baza
danych jest cofana do poprzedniego stanu.

Kady obiekt bazy danych przechowuje 2 stemple czasowe: transakcji, ktra ostatnio
braa obiekt do czytania i transakcja, ktra ostatnio braa obiekt do modyfikacji.

Metody optymistyczne s bardzo nieskuteczne, jeeli konfliktw jest duo: praktycznie,


system staje i nie moe poruszy si ani o krok, bo co rusz, to konflikt...

W momencie potwierdzenia sprawdza si stemple transakcji oraz wszystkich


pobranych przez ni obiektw. Mona do atwo wyprowadzi reguy zgodnoci, np.

Wykrycie konfliktw przy metodach optymistycznych jest oparte o podobn jak


wczeniej zasad stempli czasowych.

Jeeli obiekt by aktualizowany i stempel na obiekcie do aktualizacji jest taki sam jak
stempel transakcji, to OK, a inaczej zerwij i uruchom od nowa.
Jeeli obiekt by tylko czytany i stempel na obiekcie do aktualizacji jest starszy ni
stempel transakcji, to OK; inaczej zerwij i uruchom od nowa.
.... (troch dalszych regu).

Niemniej, metody optymistyczne nie s zbyt optymistyczne:


- mimo wielkich nadziei, s one rzadko stosowane
- jak si okazuj, wymagaj one rwnie pewnej formy zamkw i mog prowadzi do
zakleszcze.

Metoda jest o tyle przyjemna, e zerwanie transakcji oznacza zlikwidowanie tylko


lokalnych kopii obiektw - nie potrzeba nic robi w bazie danych.
29

Byy nadzieje, e metody optymistyczne bd szczeglnie przydatne w systemach


rozproszonych, gdzie zakadanie zamkw jest bardzo kopotliwe. Nie bardzo wiadomo
jednak, czy znalazy one efektywne zastosowanie. Ludzie s raczej pesymistami... 30

Ziarnisto mechanizmu transakcji

granularity
Pytanie: co ma by jednostk na ktr zakada si zamek, albo ktr uwaa si za
atomowy obiekt na ktrym bdzie trzyma si stemple, kopiowa, odtwarza, itd.

Zmienna ziarnisto
A blokuje
do aktualizacji
cay obiekt

Baza danych?
Relacja (tablica, ekstensja klasy)?
Krotka (obiekt)?
Element krotki (warto atrybutu, pod-obiekt)?

variable granularity

Pomys (Gray, 1977) polega na tym, aby obiekty do blokowania organizowa hierarchicznie
i blokowa w nich tyle, ile trzeba. Pomys bardzo dobry dla obiektowych baz danych.

A blokuje
do aktualizacji
kawaek obiektu

B blokuje
do aktualizacji
kawaek obiektu

A moe fizyczna strona???


Grube ziarna (baza danych, relacja)

may stopie wspbienoci

Miakie ziarna (np. element krotki)

dua pracochonno zakadania zamkw,


due zapotrzebowanie na dodatkow
pami na zamki, przecienie sieci

A blokuje
do czytania
cay obiekt

Na dodatek, to trzeba zgra z innymi mechanizmami, np. buforowaniem w RAM.


Testy dla systemw relacyjnych pokazuj, e optymaln ziarnisto zapewnia
fizyczna strona.
Jest to wynik przykry (i tendencyjny), poniewa uniemoliwia bardziej inteligentne mechanizmy
przetwarzania transakcji, takie, ktre rozumiej semantyk tego, co blokuj (np. predicate31
locking).

B blokuje
do czytania
kawaek obiektu

Problem ze zmienn
ziarnistoci polega na
tym, e (chyba) nikt nie
odway si sprawdzi to
32
w powszechnej praktyce.

Odtwarzanie po awarii - rodki, terminy

Typy awarii i reakcje na awarie


Zerwanie transakcji: z rnych powodw, wewntrznych (np. czekaj-umieraj) lub
zewntrznych. Transakcja moe by powtarzana automatycznie lub (jeeli to niemoliwe)
stracona. Program wywoujcy transakcje powinien przewidywa sytuacj, e transakcja
moe by zerwana, wykry to i ewentualnie powtrzy.

Back up
(bekap?)

Cykliczne przegrywanie zawartoci bazy danych lub jej najwaniejszych


fragmentw na inny nonik (najczciej tam magnetyczn). Cykl: co 30
min (banki), na koniec dnia (instytucje), co tydzie (uniwersytety), itp.

Awaria systemu, ze strat zawartoci pamici operacyjnej

Recovery
(odtwarzanie)

Odtwarzanie (p-automatyczne lub automatyczne) stanu bazy danych po


awarii na podstawie ostatniego backup-u i ew. logu.

Log
(dziennik)

Rejestracja wszystkich operacji zachodzcych na bazie danych wraz ze


zmienianymi obiektami, z dokadnoci do transakcji, ktre to robi

Awaria nonikw pamici, ze strat zawartoci dysku.


Absolutna niezawodno

absolutna zoono, nieskoczony koszt

Cofanie operacji w bazie danych na podstawie logu, np. po zerwaniu


transakcji

Czyli, niestety, nawet z transakcjami absolutna niezawodno jest niemoliwa.


Ale y si da, jeeli awarie nie bd czciej ni np. raz na rok, wic nie jest le...
W kocu zakada si take ludzk interwencj, a ludzie na og jako sobie radz z kopotami...

Rollback
(cofanie)

Rozsdna niezawodno

Checkpoint
(czekpoint?)

Migawkowe zdjcie stanu przetwarzania (trwaych i nietrwaych obiektw,


stanu sterowania, itd.) stosowane w niektrych systemach celem powrotu
do poprzedniego stanu, o ile programista/uytkownik tego sobie zayczy.
Stosowane dla wykonania operacji undo.

Replication
(replikacja)

Zdublowanie informacji na fizycznie i geograficznie oddzielonych


nonikach, celem zwikszenia niezawodnoci i zmniejszenia kosztw
34
transmisji.

may wpyw na wydajno.

Transakcje rozsdnie podwyszaj niezawodno, nie prowadzc do nadmiernych


obcie czasu wykonania ani dodatkowego zapotrzebowania na pami.
33

Odtwarzanie po zerwaniu

Podstawowe algorytmy z zamkami

Warunek atomowoci transakcji wymaga, aby w przypadku zerwania wszelkie wykonane przez
ni czynnoci zostay odwrcone: baza danych ma wrci do stanu sprzed transakcji.
Dwie strategie:
1. Transakcje dziaaj na wasnych kopiach, ktre podmieniaj z oryginalnymi obiektami w
fazie commit. Wady: zwikszone zapotrzebowanie na pami, wiksza moliwo awarii w
fazie commit (bardzo niebezpieczne).
2. Transakcje dziaaj bezporednio na bazie danych, ale w specjalnym pliku zwanym
dziennikiem (log) zapisuj wszelkie operacje aktualizacyjne ktrych dokonay, wraz z
obiektami przed i ew. po aktualizacji. W razie zerwania - baza danych jest odtwarzana
do poprzedniego stanu poprzez czytanie logu od tyu.
relation LOG( trans_id, obiekt_id, operacja, stary_obiekt, nowy_obiekt)

Dynamiczne dwufazowe blokowanie (2PL): transakcje ustanawiaj zamki do czytania


(S) ktre nastpnie mog podwyszy do zamkw do aktualizacji (X). Jeeli zamek jest S,
to odrzucana jest prba zaoenia zamka X, jeeli zamek jest X, to odrzucana jest
jakakolwiek prba zaoenia innego zamka. System prowadzi dziennik i graf czekania,
umoliwiajc odtworzenie po zerwaniu i przeciwdziaajc zakleszczeniu.
Czekasz-umieraj (wait-die) dwufazowy (WD): Tak jak dla 2PL, ale transakcja ktrej
odmwiono dostpu ginie. S odmiany tego algorytmu: z dwch transakcji w konflikcie
ginie modsza, ginie starsza, ginie ta, co si mniej narobia, ginie ta, ktra jest mniej
wana, itd.
Dynamiczne dwufazowe blokowanie bez podwyszania zamkw: tak jak 2PL, ale nie
ma podwyszania zamkw z S do X.

Write ahead log: w dzienniku zapisywane s zmiany przed ich dokonaniem. W razie
awarii wiadomo, co byo zrobione, czyli moliwe jest poprawne cofnicie.
Czasami (SQL) stosuje si tryb oszczdny, w ktrym zmiany s zaznaczane w dzienniku, ale
nie s naniesione w bazie danych. Prowadzi to do tego, e transakcja nie widzi wasnych
zmian, co jest spor uciliwoci przy programowaniu i prowadzi do bdw.
35

Wstpne danie zasobw (opis ju by).

36

Komendy w SQL do przetwarzania


transakcji

Zagniedone transakcje
Czy maj sens?
C.J.Date argumentuje, e nie maj.
Reszta wiata (wraz ze mn) uwaa, e maj.

Dowolne zdanie select, insert, update, delete, create rozpoczyna transakcj, o ile nie
bya ona ju przez t transakcj rozpoczta.
Transakcja trwa a do do wydania komendy COMMIT (potwierdzajcej), ABORT
lub ROLLBACK (zrywajcej, cofajcej). Transakcja moe obj dowoln liczb zda
select, insert, update, delete, create i innych.

Powody: uatwienie programowania, dostarczenie nowego mechanizmu abstrakcji.


Programista moe kilka transakcji zamkn w jedn wiksz bez zmiany tekstu programu.
Programista moe wiksz transakcj rozbi na mniejsze bez zmiany koncepcji programu.

Komenda SAVEPOINT <nazwa> oznacza zapamitanie stanu pod okrelon nazw.


ABORT TO <nazwa> oznacza odtworzenie stanu.
SQL ma take inny kwiatek okrelany jako isolations levels (poziomy izolacji).
Idea jest suszna: dla pewnych sytuacji warunek penej izolacji okazuje si zbyt mocny.
Np. byoby prawie niemoliwe zrobienie raportu operacji na koniec dnia, jeeli system
byby w cigym ruchu, poniewa zawsze jakie dane byyby zablokowane. Operacja by
utykaa na kadym kroku, szef byby mocno wkurzony, a biedny programista
oberwaby cigi za nie swoje grzechy...
Osabienie izolacji jest wic czasami konieczne, ale powinno to by traktowane
wyjtkowo, ze specjalnym statusem, ze specjalnymi rodkami bezpieczestwa.
Rozwizanie SQL jest krytykowane jako dajce programicie zbyt wiele brudnych
37
moliwoci.

Kada pod-transakcja po potwierdzeniu bezporednio wprowadza zmiany do bazy


danych.
Zamki nie s dziedziczone (s zwalniane). Ale kada pod-transakcja posiada
bliniacz pod-transakcj kompensujc, ktra okrela co robi, jeeli mamusia nie
38
zostanie potwierdzona. Ta filozofia jest take okrelana jako saga.

Dugie transakcje (transakcje


projektowe)

Przykad zagniedonej transakcji


Facet zgasza si do biura podry i chce jecha na wczasy na wyspy Hula Gula.
Z punktu widzenia biura podry jest to jedna transakcja skadajca si z wielu podtransakcji,
wykonywanych w wikszoci rwnolegle:
Zaatwienie formalnoci paszportowo-wizowych
Ubezpieczenie
Rezerwacja i kupienie biletu na pocig na lotnisko.
Rezerwacja i wykupienie biletu na samolot na Hula Gula
Rezerwacja i zadatkowanie hotelu
Rezerwacja kosza na play
Rezerwacja i wykupienie biletu powrotnego na samolot z Hula Gula
Rezerwacja i wykupienie biletu powrotnego na pocig
Opata i umowa biura podry z klientem

Jeeli transakcje s bardzo dugie wwczas klasyczne wasnoci ACID s


niewygodne.
Zamy, e kilku autorw opracowuje ten sam projekt. Czy dopuszczalna
jest sytuacja, e koledzy nie maj moliwoci obejrzenia jakiego fragmentu
projektu, poniewa facet, ktry go opracowuje wykona tam kilka zmian, nie
dokoczy sprawy i poszed na duszy urlop?
Dugie transakcje wymagaj osabienia warunku izolacji lub jakiego innego pojcia
szeregowalnoci. Pewnym rozwizaniem s poziomy izolacji w SQL.

Jeeli kad z tych pod-transakcji mona byoby po prostu zerwa, wwczas


mielibymy zwyczajn zagniedon transakcj. Ale w yciu tak nie ma. Zamy, e
nie udao si zarezerwowa kosza na pla, a facet mwi: Nie ma kosza, to nie jad!
W tej sytuacji powstaje saga: dla potwierdzonych pod-transakcji mog by potrzebne
pod-transakcje kompensujce:
Zwrcenie biletu na pocig (ze strat)
Zwrcenie biletu na samolot (ze strat)
Odwoanie rezerwacji hotelu (ze strat)
....

Dwie filozofie:
Zagniedona transakcja jest potwierdzana wycznie dla swojej macierzystej
transakcji,
przez co aktualizacje zrobione przez pod-transakcj staj si widoczne dla innych
pod-transakcji. Zamki pod-transakcji s dziedziczone przez jej mamusi. Ostateczne
potwierdzenie pod-transakcji i zwolnienie zamkw nastpuje po potwierdzeniu
transakcji stojcej najwyej w hierarchii.

39

Pomimo wielu artykuw, w ktrych mwi si jak ten problem jest wany, nie
spotkaem ani jednego, ktry by jasno przestawi jakie sensowne i nietrywialne
rozwizanie.
Trywialne rozwizanie jest oczywiste: specjalny tryb czytania obiektu, ktry omija
naoone na niego zamki. Tzw. kuchenne drzwi (backdoor).
40

Podsumowanie
Transakcje s jednym z najprostszych i najbardziej skutecznych rodkw
zapewnienia bezpiecznego wspbienego dostpu do wsplnej bazy danych.
Transakcje mog by uwaane za prosty i w miar uniwersalny rodek
synchronizacji rwnolegych procesw (bez semaforw, monitorw, kanaw i
innych trudnych poj). Synchronizacja polega na uniemoliwieniu jednoczesnej
aktualizacji tych samych zasobw.
Jednoczenie, transakcje maja zdolno przeciwdziaania losowym awariom.
Brak rodkw przetwarzania transakcji w takich systemach jak LotusNotes, MS
Office, czy te systemach przepywu prac (workflows) lub pracy grupowej jest
ogromnym utrapieniem, ktre (nie tylko w mojej opinii) w duym stopniu
dyskwalifikuje te narzdzia.
Transakcje s szczeglnie istotne w systemach rozproszonych baz danych lub w
systemach opartych o Internet lub Intranet.
Transakcje s na licie usug poziomych OMG CORBA, s te skadnikiem
standardw ODMG, SQL3 i Workflow Management Coalition.

41

Rozproszone SYSTEMY BAZ DANYCH

Wprowadzenie do systemw
rozproszonych

Co to jest system rozproszony?

Co to jest system rozproszony?

! Systemem rozproszonym nazywamy taki system, w ktrym


przetwarzanie informacji odbywa si na wielu komputerach, czsto
znacznie oddalonych geograficznie (od kilku metrw do dziesitkw
tysicy kilometrw). Przeciwiestwem jest system izolowany lub
scentralizowany.
! Obecnie waciwie wszystkie systemy (poza domowymi komputerami) s
rozproszone. Ogromnym katalizatorem rozproszenia systemw jest
Internet. Komputer z Internetem mona ju uwaa za system
rozproszony.
! Projektowanie i wasnoci systemw rozproszonych w duej mierze s
takie same jak systemw scentralizowanych, ale istniej take istotne
rnice, ktry specjalista inynierii oprogramowania musi by wiadomy.
! Tendencja do budowy systemw rozproszonych jest pochodn rozbudowy
tanich, szybkich, uniwersalnych i niezawodnych sieci komputerowych.
! Przykady systemw rozproszonych: sie bankomatw, system rezerwacji
biletw, system pracy grupowej, itd.

Cztery najwaniejsze problemy do


rozwizania w systemach r.b.d.
! Przezroczysto (transparency): traktowanie rozproszonych zasobw i usug
tak, jak gdyby byy one wewntrz przestrzeni adresowej jednego komputera.
! Bezpieczestwo: przeciwdziaanie losowym awariom oraz moliwociom ataku
z zewntrz.
! Interoperacyjno (interoperability): umoliwienie wsppracy
heterogenicznych platform, aplikacji, logik biznesowych i organizacji danych.
! Efektywno: uzyskanie czasw przetwarzania akceptowalnych dla szerokiego
krgu uytkownikw rozproszonych aplikacji.

Przezroczysto

! Redukcja zoonoci przy pracy z rozproszonymi


zasobami danych i usug, polegajca na uwolnieniu
programisty od mylenia na temat pooenia i organizacji
rozproszonych danych.
! Przezroczysto ma bezporednie skutki dla czasu i
kosztu wytworzenia rozproszonej aplikacji, jej
przenaszalnoci i pielgnacyjnoci.

Formy przezroczystoci (1)

! Przezroczysto pooenia i dostpu: Uwolnienie


uytkownikw od koniecznoci korzystania z informacji o
aktualnym pooeniu geograficznym danych i usug.
! Przezroczysto wspbienoci: Umoliwienie wielu
uytkownikom jednoczesnego dostpu do danych i usug.
! Przezroczysto skalowania: Umoliwienie dodawania
lub usuwania serwerw, danych i usug bez wpywu na
dziaanie aplikacji i prac uytkownikw.
! Przezroczysto fragmentacji (podziau): automatyczne
scalanie obiektw lub kolekcji, ktrych fragmenty s
przechowywane w rnych miejscach.

Interoperacyjno
! Krytyczny problem dla projektu bottom-up, czyli systemu
integrujcego istniejce (spadkowe) niekompatybilne
(heterogeniczne) dane i usugi.
! Interoperacyjno na poziomie transportu (transport-level
interoperability) jako podstawa wyszych form
interoperacyjnoci. Chodzi o umoliwienie fizycznej
komunikacji pomidzy danymi i usugami, np. na gruncie
TCP/IP, HTTP, wsplnej pamici, itp.

Zalety systemw rozproszonych cd..


! Podzia zasobw: system rozproszony pozwala dzieli zasoby sprztowe
i programowe (pamici dyskowe, drukarki, pliki, kompilatory, itd.)
pomidzy wielu uytkownikw pracujcych na rnych komputerach
pracujcych w sieci.
! Otwarto: jest ona definiowana jako zdolno systemu do doczania
nowego sprztu, oprogramowania i usug. Otwarte systemy czsto maj t
zdolno rwnie w stosunku do w/w zasobw ulokowanych na
platformach sprztowych i systemach operacyjnych dostarczanych przez
rnych dostawcw.
! Wspbieno: w systemie rozproszonym wiele procesw moe dziaa
w tym samym czasie na rnych komputerach w sieci. Procesy te mog
(jakkolwiek nie musz) komunikowa si podczas swego dziaania.
! Skalowalno: Moc i moliwoci przetwarzania moe wzrasta w miar
dodawania do systemu nowych zasobw, w szczeglnoci komputerw.
W praktyce skalowalno jest czsto ograniczona poprzez przepustowo
sieci oraz (niekiedy) poprzez np. specyficzne protokoy wymiany
informacji. Niemniej skalowalno systemu rozproszonego jest
nieporwnywalnie lepsza w stosunku do systemu scentralizowanego.

Formy przezroczystoci (2)

! Przezroczysto replikacji: Umoliwienie tworzenia i


usuwania kopii danych w innych miejscach
geograficznych ze skutkiem dla efektywnoci
przetwarzania.
! Przezroczysto awarii: Umoliwienie nieprzerwanej
pracy wikszoci uytkownikw rozproszonej bazy
danych w sytuacji, gdy niektre z jej wzw lub linie
komunikacyjne ulegy awarii.
! Przezroczysto migracji: Umoliwienie przenoszenia
zasobw danych do innych miejsc bez wpywu na prac
uytkownikw.

Interoperacyjno kontra przezroczysto


! Konieczno poszukiwania kompromisowych rozwiza na zasadzie tzw.
wsplnego rozwizania.
! Moe by to atwe: Dla danej populacji serwerw istnieje prosty model
kanoniczny powiza inter-operacyjnych w jedn przezroczyst cao.
! Moe to by trudne: Jeeli rozbienoci pomidzy serwerami s due, to
informacja o zawartoci poszczeglnych serwerw musi by
doprowadzona do programisty i do modelu kanonicznego. Jest to
problem zoony i nieprzezroczysty.

Zalety systemw rozproszonych (2)


! Tolerancja bdw: Dostpno wielu komputerw oraz umoliwienie
zdublowania informacji (replikacje) oznacza, e rozproszony system jest
tolerancyjny w stosunku do pewnych bdw zarwno sprztowych jak i
programowych. Np. awaria wza komunikacyjnego powoduje
wygenerowanie innej trasy przepywu informacji.
! Przezroczysto: Oznacza ukrycie przed uytkownikiem szczegw
rozproszenia, np. gdzie ulokowane s zasoby lub jak s one fizycznie
zaimplementowane, pod jakim systemem pracuj, itd. Przezroczysto
ma zasadnicze znaczenie dla komfortu dziaania uytkownika oraz dla
niezawodnoci budowanego oprogramowania. Niekiedy, np. dla celw
optymalizacyjnych, uytkownik moe zrezygnowa z penej
przezroczystoci. Przykadem przezroczystoci jest Internet: klikajc w
aktywne pole na stronie WWW nie interesujemy si, gdzie znajduje si
odpowiadajca mu strona, oraz jak i na czym jest zaimplementowana.

Wady systemw rozproszonych


! Zoono: systemy rozproszone s trudniejsze do zaprogramowania i do
administrowania ni systemy scentralizowane. Zale od wasnoci sieci,
np. jej przepustowoci i czasu transmisji, co utrudnia zaprojektowanie i
zrealizowanie wielu algorytmw i procesw przetwarzania.
! Ochrona: Dla systemu scentralizowanego wystarcza w zasadzie stranik
z karabinem. System rozproszony nie moe by chroniony w ten sposb,
przez co moe by naraony na rnorodne ataki (wamania, wirusy,
sabota, odmowa patnoci, itd.) z wielu stron, ktre trudno
zidentyfikowa.
! Zdolno do zarzdzania: jest ona utrudniona wskutek tego, e
konsekwencje rnych dziaa administracyjnych w systemie
rozproszonym s trudniejsze do zidentyfikowania. Podobnie z
przyczynami sytuacji anormalnych, w szczeglnoci awarii.
! Nieprzewidywalno: system rozproszony jest nieprzewidywalny w
swoim dziaaniu, poniewa zakcenia mog by powodowane przez wiele
przyczyn: ma przepustowo i awari czy, awari komputerw, zbyt
due obcienie danego serwera, lokalne decyzje administracji serwera,
itd.; patrz WWW.

Popularne architektury rozproszenia

Krytyczne zagadnienia projektowe dla


systemw rozproszonych
! Identyfikacja zasobw: zasoby w systemie rozproszonym s podzielone
pomidzy wiele komputerw, w zwizku z czym schematy ich nazywania
musz by zaprojektowane tak, aby uytkownicy mogli zidentyfikowa
interesujce ich zasoby. Przykadem takiego schematu jest URL (Uniform
Resource Locator) znany z WWW.
! Komunikacja: moe by zaprojektowana w sposb uniwersalny, na bazie
np. protokou internetowego TCP/IP lub ktrego protokou pochodnego
(ftp, http, itd.). Niektre wymagania dotyczce szybkoci, kosztu,
niezawodnoci lub bezpieczestwa mog prowadzi do specjalnych
technik komunikacyjnych.
! Jako obsugi: odzwierciedla wydajno systemu, jego dostpno i
niezawodno. Podlega ona wielu czynnikom, w szczeglnoci,
przypisaniu zada do procesorw, optymalnoci geograficznego podziau
danych, itd.
! Architektura oprogramowania: opisuje ona w jaki sposb
funkcjonalnoci systemu s przypisane do logicznych i fizycznych
komponentw systemu. Wybr dobrej architektury przesdza o spenieniu

Rozproszone a scentralizowane BD

! Klient-serwer: rozproszony system ma wyrniony wze zwany


serwerem, oraz szereg podczonych do niego wzw zwanych klientami.
Zwizek nie jest symetryczny: serwer wykonuje usugi zlecane przez
klientw, nie moe im odmwi i nie moe im zleci wykonanie usug.
! Klient-multi-serwer: podobnie jak dla architektury klient-serwer, ale
istnieje wiele serwerw. Przykadem jest WWW.
! Koleeska (peer-to-peer, P2P): wiele wzw wiadczy sobie wzajemne
usugi poprzez bezporednie poczenie; nie ma wyranego podziau na
usugodawcw i usugobiorcw. Przykadem jest Gnutella, NXOR, w
mniejszym stopniu Napster ma centralne sterowanie. Komercyjny buzz
dookoa P2P.
! Architektura oparta na oprogramowaniu poredniczcym
(middleware): nie wystpuje podzia na klientw i serwery. Wzy
komunikuj si poprzez specjalne oprogramowanie poredniczce, ktre
zakada wsplny (przezroczysty dla uytkownikw) protok
komunikacyjny. Przykadem jest CORBA (rozproszone obiekty),
.NET/COM/DCOM, Java Beens/RMI, SOAP, ...

Co to jest rozproszona baza danych?

distributed database

Termin ten jest powtarzany w wielu kontekstach, czsto bez przypisywania mu


konkretnego, technicznego znaczenia.
Czy to, e z pewnego systemu mona dosta si do danych innego odlegego
systemu jest wystarczajcym wyrnikiem rozproszonej bazy danych?
! Dla wielu zastosowa cecha ta jest istotna, lecz
! Rozproszona baza danych musi spenia okrelone kryteria
dotyczce spjnoci, bezpieczestwa, zintegrowania i wygody
uytkownikw.
! Moliwo dostania si do danych innego systemu (np. poprzez
pakiety oparte o standardy ODBC, JDBC, DCOM lub CORBA)
oznacza wycznie ustanowienie niezbdnej bazy technicznej. Fakt
ten nie przesdza jednak o tym, czy zachodz dostateczne warunki
dla sprawnego, efektywnego oraz niezawodnego wykorzystywania
danych.

Podstawowe pojcia zwizane z


rozproszeniem
! Rozproszona baza danych: zbir skadajcy si z wielu logicznie
ze sob powizanych elementw bazy danych, oddalonych
geograficznie i poczonych ze sob poprzez sie komputerow.
! System zarzdzania rozproszon baz danych (SZRBD):
oprogramowanie umoliwiajce poczenie rozproszonych
zasobw w jedn cao, utrzymanie spjno zasobw oraz
udostpnianie ich uytkownikom przy zaoeniu przezroczystoci
rozproszenia.
! Dane s przechowywane w wielu miejscach - wzach sieci.
! Rozproszona baza danych jest baz danych, a nie kolekcj plikw,
ktre mog by indywidualnie przechowywane w kadym wle
sieci komputerowej.
! SZRBD posiada pen funkcjonalno systemu zarzdzania
scentralizowan BD. Nie jest to system zarzdzania rozproszonymi
plikami, ani te wycznie system przetwarzania transakcji.

Przykad rozproszonej bazy danych

Klasyfikacja rozproszonych baz danych

Rozproszona baza danych dla linii lotniczych (biuro obsugi klienta w


Warszawie moe dosta si do danych linii lotniczych w Sydney, Tokio,
Paryu, i setkach innych miast).
Jeeli w kadym miejscu organizacja bazy danych, rodki manipulacji, reguy
dostpu, itd. byyby inne, to praca byaby bardzo utrudniona.
Zatem konieczne s:
! standardy w zakresie poczenia (protokoy),
! standardy w zakresie organizacji danych i dostpu do
danych,
! moduy dla odwzorowania pewnej specyficznej bazy danych
na format oczekiwany przez danego klienta,
! przezroczysto rozproszenia (a la CORBA),
! zabezpieczenia przed niepowoanym dostpem.

Klasyfikacja rozproszonych baz danych cd..

Postulaty rozproszenia BD

Systemy wielu baz danych


(multidatabases)

Niefederacyjne rozproszone BD

Jednorodne
BD

Rozproszone BD z
globalnym schematem

Federacyjne BD

Sabo skojarzone
(loosely coupled)

Niefederacyjne BD: brak autonomii.

cile skojarzone
(tightly coupled)

Pojedyncze
federacje

Sabo skojarzone FBD: brak federacyjnego schematu i (pojedynczy


zarzdzania, operacje ad hoc, w zalenoci od aplikacji.
schemat)

Wielokrotne
federacje
(wiele
schematw)

cile skojarzone FBD: FSZBD jest odpowiedzialny za


zarzdzanie caoci federacji.

Komunikacja w rozproszonych BD

Wane cechy rozproszonych BD


! Architektury rozproszonego przetwarzania: bazy danych oparte o
architektur klient-serwer, bazy danych oparte o schemat globalny.
! Federacyjne bazy danych - (przezroczyste) poczenie wielu
(relewantnych czci) heterogenicznych i autonomicznych baz
danych w jedn cao.
! Przetwarzanie transakcji w rozproszonych bazach danych;
globalne transakcje, lokalne transakcje, dwufazowe i trjfazowe
potwierdzenie (two-phase commit, 2PC).
! Dugie transakcje, wymagajce osabienia poziomu izolacji i
minimalizujce ryzyku utraty ju wykonanej pracy.
! Wspdziaanie heterogenicznych, autonomicznych, rozproszonych
(Heterogeneous, Autonomous, Distributed, HAD) baz danych
(okrelane take jako wspdziaanie multi baz danych,
multidatabase interoperability).

Gwne problemy rozproszonych baz danych

Tematy zwizane z rozproszonymi BD


! Replikacje, czyli utrzymywanie kopii danych w wielu miejscach w
rozproszonych bazach danych.

Wieloaspektowa niezgodno i konflikty midzy


lokalnymi bazami danych z powodu:
! Awarii,
! Aktualizacji wielu rde i ogniw rozproszonego
rodowiska,
! Odniesienia danych do tej samej skali czasu

Tematy zwizane z rozproszonymi BD cd..

! Rozproszone przetwarzanie zapyta; optymalizacja zapyta w


sytuacji rozproszenia zasobw.
! Systemy operacyjne dla podtrzymywania rozproszenia: OSF DCE i
inne systemy oparte o woanie odlegej procedury (Remote
Procedure Call, RPC).
! Podtrzymywanie rnych form niewidocznoci rozproszenia
(distribution transparency) dla programistw i klientw baz danych.
! Standardy w zakresie rozproszenia: OMG CORBA, DCOM firmy
Microsoft, RMI i Java Beans, OpenDoc, ActiveX, SOAP/XML.
Porednicy (broker, ORB) wg standardu CORBA, np. Orbix,
Visibroker, ...

Transakcje w rozproszonych BD

! rodki wspomagajce rozproszenie bazy danych i rozproszone


przetwarzanie zrealizowane w konkretnych systemach relacyjnych
(Oracle, Sybase, Ingres, i inne), post-relacyjnych lub obiektoworelacyjnych (Informix Universal Server, DB2 Universal Database,
Oracle8, UniSQL/X, OSMOS, OpenIngres, Sybase Adaptive Server
i inne) oraz obiektowych (Gemstone, Versant, O2, Objectivity/DB,
ObjectStore i inne).
! Niezawodno, spjno, bezpieczestwo i prywatno w
rozproszonych bazach danych.
! Rozproszone bazy danych w sieciach Internet oraz Intranet.
! Rozproszenie danych i przetwarzania w systemach pracy grupowej
oraz systemach zarzdzania przepywem pracy.

Rozproszone BD: relacyjne czy obiektowe?


! Prace prowadzone nad rozproszonymi BD (w cigu ostatnich 20-tu
lat), byy oparte gwnie o relacyjny model danych.
! Zaletami modelu relacyjnego jest prosta, ujednolicona struktura
danych oraz prosta organizacja katalogw bazy danych.
! W ostatnich latach obserwuje si odchodzenie od modelu
relacyjnego w stron modeli obiektowych.
! Zoono samego problemu rozproszenia danych jest
prawdopodobnie niezalena od modelu danych.

Reguy rozproszenia

! Niektre metody systemw relacyjnych zwizane z rozproszeniem


daj si przenie na grunt systemw obiektowych.
! Problemy nowe: metamodel (ontologia), przetwarzania zapyta.
! W przecigu najbliszych 10-ciu lat obiektowo bdzie
odgrywa gwn rol w rozwijaniu koncepcji rozproszonych
baz danych, w rnych wariantach, np. XML/RDF.

Replikacja

Reguy rozproszonych baz danych(C.J.(1)


Date, 1987)
12 regu: w praktyce spenienie wszystkich jest trudne lub
niemoliwe. Jest to spekulacyjny idea.
! Autonomia lokalnych BD: lokalne dane powinny podlega
lokalnym reguom wasnoci i powinny by zarzdzane lokalnie.
Dotyczy to funkcji zwizanych z bezpieczestwem, integralnoci i
reprezentacj wewntrz pamici. Wyjtki dotycz sytuacji, kiedy
wizy integralnoci musz obejmowa jednoczenie wiele miejsc
oraz sytuacji, kiedy rozproszone transakcje musz by sterowane
przez pewne zewntrzne miejsce.
! Brak podporzdkowania przetwarzania do konkretnego
miejsca: uniknicie wskich garde dziki decentralizacji
wszystkich funkcji rozproszonego SZBD.
! Cigo funkcjonowania: Przestoje w wykonywaniu operacji nie
powinny by skutkiem dodania nowych miejsc, ich usunicia ze
rodowiska rozproszonej BD, dokonania zmian w meta-informacji
lub unowoczenienia wersji SZBD w pewnym indywidualnym
miejscu.

Fragmentaryzacja

Reguy rozproszonych baz danych (2)


! Niezaleno od lokalizacji: Uytkownicy lub programy
aplikacyjne nie musz wiedzie, gdzie dane s fizycznie
przechowywane.
! Niezaleno od fragmentacji: Fragmenty jednego zbioru danych
mog by przechowywane i zarzdzane przez rozproszony SZBD
jako jedna cao, bez uwiadamiania uytkownikw lub aplikacji o
sposobie ich rozczonkowania. Podan wasnoci
rozproszonego SZBD jest to, aby w sposb automatyczny unika
przetwarzania nierelewantnych fragmentw.
Np. jeeli grupa obiektw jest podzielona geograficznie ze wzgldu na
atrybuty w ten sposb, e atrybuty A1...Am s w miejscu X, za
atrybuty Am+1...An s w miejscu Y, i konkretne zapytanie odwouje si
wycznie do atrybutw A1...Am, naley pomin odwoania do miejsca
Y podczas realizacji tego zapytania.
Podobnie, fragmenty tej samej tabeli w rnych miejscach
rozproszonej bazy danych powinny by widocznej jako jedna tabela.

Reguy rozproszonych baz danych (3)

Reguy rozproszonych baz danych (4)

! Niezaleno od replikacji: Istnienie replik danych w wielu


miejscach, ich pojawianie si lub usuwanie nie powinno wpywa
na postpowanie uytkownikw ani na poprawno bd spjno
aplikacji.

! Niezaleno od systemu operacyjnego: oprogramowanie


rozproszonego SZBD powinno pracowa pod rnymi systemami
operacyjnymi.

! Rozproszone przetwarzanie zapyta: System powinien


zapewnia sprawne przetwarzanie rozproszonych zapyta
umoliwiajce zredukowanie zarwno czasu przetwarzania, jak i
obcienia sieci transmisji danych.
! Zarzdzanie rozproszonymi transakcjami: Zasady zarzdzania
transakcjami oraz sterowania wspbienoci powinny
obowizywa dla operacji w rozproszonej bazie danych. Zasady te
wczaj: wykrywanie i usuwanie zakleszcze (deadlocks),
zarzdzanie przekroczeniami dopuszczalnego czasu (timeout),
rozproszone protoky potwierdzenia (commit) i odwracania
(rollback), oraz inne metody.

! Niezaleno od sieci: Miejsca mog by poczone poprzez


szerok gam rodowisk sieciowych i komunikacyjnych. Modele
warstwowe istniejce dla wspczesnych protokw
komunikacyjnych (obowizujce w wikszoci obecnych systemw
informacyjnych, takich jak OSI 7, TCP/IP, warstwy SNA i DECnet)
zapewniaj rodki do osignicia tego celu nie tylko dla
rozproszonych baz danych, lecz w oglnoci dla systemw
informacyjnych.
! Niezaleno od SZBD: Powinno by moliwe przyczenie do
rozproszonej bazy danych lokalnej bazy danych zarzdzanej przez
dowolny lokalny SZBD.

! Niezaleno od sprztu: oprogramowanie rozproszonego SZBD


powinno pracowa na rnych platformach sprztowych.

Regua: niezaleno od centralnego miejsca


! Rozproszona baza danych nie moe zalee od jednego,
centralnego miejsca odpowiedzialnego za cao
funkcjonowania.
Zaleno taka moe "wkra si" niepostrzeenie, jako konsekwencja
pewnych (wydawaoby si drugorzdnych) decyzji projektowych, np.
powoanie jednego serwera nazw, lub rejestracja nowych miejsc
przyczajcych si do rozproszonej bazy danych.

! Zaleno taka jest niekorzystna, gdy:


Centralne miejsce moe sta si wskim gardem dla operacji na
danych
Awaria centralnego miejsca powoduje awari caej rozproszonej bazy
danych.

! Dla niektrych zastosowa brak centralnego miejsca jest


niekorzystny:
z powodu nadmiernego wzrostu obcienia sieci zwizanego z
wymian metadanych;
z powodu zbyt niskiej wydajnoci (indeksy w jednym miejscu)
z powodw biznesowych: centralne miejsce jest wygodne dla

Nazwy elementw danych w rozproszonych BD


! Problem nazywania i identyfikacji danych w rozproszonych BD
staje si znacznie bardziej trudny ni w scentralizowanych BD.
! Kryteria zarzdzania nazwami:
1. Kada dana, ktra ma by niezalenie identyfikowana w systemie
rozproszonym, musi mie swoj unikaln nazw (identyfikator).
2. Nazwa powinna zapewnia efektywne odszukanie lokalizacji danej.
3. Nazwa nie powinna utrudnia zmiany lokalizacji danej.
4. Kade lokalne miejsce w rozproszonej BD powinno powinno mie
moliwo autonomicznego nadawania unikalnych nazw dla danych.

! Centralny serwer nazw - nadaje wszystkie nazwy, udziela


informacji o lokalizacji nielokalnych danych na podstawie ich nazw:
nie spenia warunku 4,
moe powodowa wskie gardo dla transakcji,
jest pojedynczym powodem awarii caoci.

! Rozwizanie: prefiksowanie nazwy identyfikatorem miejsca trudnoci ze zmian lokalizacji danych (przy zachowaniu
tosamoci).

Gwne aspekty rozproszenia baz danych (1)


Przezroczysto (transparency)
Rozproszony SZBD powinien podtrzymywa rozproszenie danych
przy zaoeniu odizolowania programisty/uytkownika od wikszoci
aspektw rozproszenia.

Pojcia zwizane z
rozproszeniem

Wspdziaanie (interoperability)
Oznacza wspprac zbudowanych niezalenie od siebie
heterogenicznych systemw (heterogeneous systems).
Aspektem wspdziaania jest przyczenie do rozproszonej BD starych
systemw, tzw. spadkowych (legacy)
Przenaszalno (portability)
Wasno jzyka programowania i jego kompilatorw/interpreterw
umoliwiajca przenoszenie programw na rne platformy.

Gwne aspekty rozproszenia baz danych (2)


Autonomia (autonomy)
Lokalne bazy danych podlegaj wasnym lokalnym reguom. Tylko
okrelona cz lokalnych zasobw i usug jest udostpniana na zewntrz.
Niezaleno danych (data independence)
Moliwo projektowania, utrzymywania, udostpniania, zmiany nonikw,
zmiany reprezentacji, itp. dziaa na danych niezalenie od programw,
ktre na nich operuj.
Ontologia (ontology), czsto w kontekcie "ontologia biznesowa"
Formalny opis wszystkich tych wasnoci lokalnej bazy danych, ktre s
niezbdne do tego, aby projektant/programista mg prawidowo
zaprogramowa now aplikacj (np. mobilnego agenta).
Niekiedy ontologia jest okrelana jako metadane.

Przezroczysto (1)
Rozproszona BD musi spenia warunki komfortu pracy programistw,
administratorw i uytkownikw, jak rwnie niezawodnoci, bezpieczestwa
danych, zwikszenie odpornoci na bdy programistw. To oznacza
konieczno redukcji zoonoci przy pracy z rozproszon baz danych, co jest
okrelane jako przezroczysto.
Ma ona nastpujce formy:
! Przezroczysto pooenia: Umoliwienie jednorodnych metod
operowania na lokalnych i odlegych danych. Tego warunku nie
spenia np. system, w ktrym lokalna baza danych jest
obsugiwana przez pewien jzyk 4GL, za odlega - przez
specjalny zestaw procedur (API).
! Przezroczysto dostpu: Uwolnienie uytkownikw od
koniecznoci(a niekiedy rwnie uniemoliwienie) korzystania z
informacji o aktualnym pooeniu danych.

Przezroczysto (2)
! Przezroczysto wspbienoci: Umoliwia wielu uytkownikom
jednoczesny dostp do danych bez koniecznoci uzgodnie i
porozumiewania si, przy zapewnieniu penej spjnoci danych i
przetwarzania.
! Przezroczysto skalowania: Umoliwienie dodawania nowych
elementw bazy danych bez wpywu na dziaanie starych aplikacji i
prac uytkownikw.
! Przezroczysto replikacji: Umoliwienie tworzenia i usuwania
kopii danych w innych miejscach geograficznych z bezporednim
skutkiem dla efektywnoci przetwarzania, ale bez skutkw dla
postaci programw uytkowych lub pracy uytkownika kocowego.
! Przezroczysto wydajnoci: Umoliwienie dodawania nowych
elementw systemu komputerowego (np. serwerw, dyskw) bez
wpywu na prac wikszoci uytkownikw rozproszonej bazy
danych.

Przezroczysto (3)
! Przezroczysto fragmentacji (podziau): automatyczne scalanie
obiektw, tabel lub kolekcji, ktrych fragmenty s przechowywane
w rnych miejscach.
! Przezroczysto awarii: Umoliwienie nieprzerwanej pracy
wikszoci uytkownikw rozproszonej bazy danych w sytuacji, gdy
niektre z jej wzw lub linie komunikacyjne ulegy awarii.
! Przezroczysto migracji: Umoliwienie przenoszenia zasobw
danych do innych miejsc bez wpywu na prac uytkownikw.

W praktyce spenienie wszystkich wymienionych warunkw jest


ideaem, ktry prawdopodobnie nie zosta zrealizowany w adnym ze
znanych systemw.

Wspdziaanie i heterogeniczno

Heterogeniczno (niejednorodno)

interoperability, heterogeneity

! Np. system Intranetowy moe skada si ze sprztu:


! Umoliwienie wspdziaania heterogenicznych systemw
baz danych jest drugim wanym aspektem rozproszenia.
! Heterogeniczno jest nieodczn cech duych sieci
komputerowych, takich jak Internet, WWW, sieci
intranetowych, rozproszonych baz danych, systemw
przepywu prac, zasobw WWW opartych na plikach HTML i
XML, itd.

komputerw klasy mainframe


stacji roboczych UNIX
komputerw PC pracujcych pod MS Windows
komputerw Apple Macintosh
central telefonicznych, robotw, zautomatyzowanych linii
produkcyjnych

! ...wcza rnorodne protokoy komunikacyjne: Ethernet,


FDDI, ATM, TCP/IP, Novell Netware, protokoy oparte na
RPC,...
! ...bazowa na rnych systemach zarzdzania baz
danych/dokumentw: Oracle,SQL Server, DB2, Lotus
Notes,....
! ...oraz wymienia pomidzy sob niejednorodne dane,
podlegajce rnym modelom danych, schematom,

Przyczyny heterogenicznoci
! Niezaleno dziaania: wytwrcy systemw nie uzgadniaj midzy sob
ich cech. Standardy, o ile si pojawiaj, s spnione, niekompletne i nie
przestrzegane w 100%.

Przenaszalno

portability

! Konkurencja: wytwrcy systemw staraj si wyposay systemy w


atrakcyjne cechy, ktrych nie posiadaj konkurujce systemy

Typy przenaszalnoci:
Na poziomie skadni, koncepcji jzyka i edukacji (np. SQL-92).
Na poziomie kodu rdowego (np. C++ (?), JDBC).
Na poziomie interpretowanego kodu skryptowego lub poredniego (np. Java).
Na poziomie kodu binarnego (? - trudno poda przykad).

! Rnorodno pomysw: Nie zdarza si, aby byo jedno rozwizanie


dla zoonego problemu. Rne zespoy znajduj rne rozwizania,
bazujce czsto na odmiennych celach i zaoeniach.

! Przenaszalno wymaga precyzyjnej specyfikacji skadni i


semantyki jzyka, oraz wyeliminowania z niego wasnoci
specyficznych dla poszczeglnych platform.

! Efektywno finansowa i kompromisy: Wytwrcy oferuj produkty o


rnej cenie, funkcjonalnoci i jakoci, zgodnie z wyczuciem
potencjalnych potrzeb klientw, dostosowaniem si do ich portfela i
maksymalizacj swoich zyskw.
! Systemy spadkowe (legacy): Systemy, ktre dawno zostay wdroone i
dziaaj efektywnie, nie mog by z tego dziaania wyczone. Nie jest
moliwe (lub jest bardzo kosztowne) zastpienie ich nowymi systemami.
Nowe systemy, o podobnym przeznaczeniu, posiadaj inne zaoenia,
cechy i funkcjonalnoci

! Wiele standardw nie spenia kryterium przenaszalnoci z powodu


niedospecyfikowania i/lub nie speniania standardu przez
wytwrcw systemw.
! Przenaszalno jest celem standardw SQL, CORBA oraz ODMG,
niekoniecznie celem ju osignitym.
! Przenaszalno realizuje kod poredni jzyka Java, ale dotyczy to
funkcjonalnoci niskiego poziomu, np. nie dotyczy API do baz
danych.

Autonomia

autonomy

Autonomia lokalnej bazy danych w federacji baz danych oznacza, e:


! Lokalne dane podlegaj lokalnym priorytetom, reguom wasnoci,
autoryzacji dostpu, bezpieczestwa, itd. Lokalna baza danych moe
odrzuci zlecenia przychodzce z federacji, o ile naruszaj one lokalne
ograniczenia lub zbytnio obciaj czas procesora lub inne lokalne
zasoby.
! Lokalna baza danych moe udostpnia aplikacjom dziaajcym na
federacji baz danych tylko okrelon cz swoich danych i usug.
Programici tych aplikacji nie maj jakichkolwiek rodkw dostpu do
pozostaych danych i usug.
! Wczenie lokalnej bazy danych do federacji nie moe powodowa
koniecznoci zmiany programw aplikacyjnych dziaajcych na lokalnej
BD.
! Federacja moe przetwarza lokalne zasoby tylko poprzez interfejs
programowania aplikacji (API) specyficzny dla lokalnego systemu. Inne
metody (np. bezporedni dostp do plikw) s niedozwolone.
Moliwa
jest pewna
autonomii
jest raczej
intuicyjne.
! Federacja
nieskala
moeautonomii.
da odPojcie
lokalnej
bazy danych
zmiany/rozszerzenia
jej usug (np. udostpnienia lokalnego dziennika transakcji).

Ontologia

ontology

! W filozofii: nauka o bytach, teoria bytu, opis charakteru i struktury


rzeczywistoci, specyfikacja konceptualizacji.
! W sztucznej inteligencji: formalna specyfikacja (przy uyciu logiki
matematycznej) obiektw, poj i innych bytw, ktre istniej w
pewnej dziedzinie, oraz formalna specyfikacja zwizkw, ktre
pomidzy tymi bytami zachodz.
Podejcie sztucznej inteligencji jest naiwne.
Np. Gieda Papierw Wartociowych: wiele tysicy stron aktw
prawnych, zarzdze, regulacji, itd. Jako (doywotnia) kara dla
sztucznego (wier-) inteligenta wypisujcego bzdury na temat
"formalnej ontologii": niech to zapisze przy uyciu formu rachunku
predykatw.

! W biznesie (ontologia biznesowa, business ontology): wszystko to,


co projektanci systemw informatycznych powinni wiedzie o
biznesie, aby poprawnie napisa aplikacje wspomagajce ten
biznes. Wiedza ta powinna by formalnie zapisana. "Formalnie"
oznacza zwykle pewien standardowy i uzgodniony jzyk, np.
XML/RDF.

Metadane
! Metadane s kluczowe dla wielu rozproszonych aplikacji, poniewa
umoliwiaj rozpoznanie z zewntrz wasnoci lokalnego zasobu
danych
! Oglna definicja: s to dane o danych - co dane zawieraj, jak
maj budow, jakie jest ich znaczenie, jakim podlegaj
ograniczeniom, jak s zorganizowane, przechowywane,
zabezpieczane, udostpniane, itd.
! Metadane s pewnym rozszerzeniem pojcia schematu bazy
danych, albo te pewn implementacj tego schematu w postaci
katalogw.
! Metadane przykrywaj take informacj niezalen od treci
samych danych, np. kiedy pewna dana zostaa utworzona, w jakim
jest formacie, kto jest jej autorem, do kiedy jest wana, itd.
! Opisy danych zawarte w metadanych maj dwie podstawowe
zalety:
Zawieraj wsplne abstrakcje dotyczce reprezentacji danych, takie
jak format; oglnie "wycigaj przed nawias" wszystkie wsplne

Niezaleno danych

data independence

Oznacza, e nie ma potrzeby zmiany kodu programw aplikacyjnych mimo


zmian organizacji lub schematw danych. Jest osigana poprzez interfejsy
programistyczne umoliwiajce dostp do danych na odpowiednim poziomie
abstrakcji, gdy niewidoczne s szczegy organizacji i implementacji danych.
! Fizyczna niezaleno danych: ukrycie detali organizacji
fizycznej i technik dostpu, dziki czemu moliwa jest ich zmiana
bez wpywu na kod aplikacji.
! Logiczna niezaleno danych: umoliwienie niektrych zmian
schematu logicznego bez wpywu na kod aplikacji, np. dodanie
atrybutw do relacji, zmiana kolejnoci atrybutw, zmiana ich
typw, utworzenie nowych relacji, itd.
! Ewolucja schematu (schema evolution): umoliwienie daleko
idcych zmian schematu danych przy jednoczesnym utworzeniu
perspektyw (views) dla starych lub nowych danych. Perspektywy
maj umoliwi minimaln pracochonno przy zmianach aplikacji
(idealistycznie).

Ontologia i metadane
! Gwnym celem prac na biznesow ontologi jest standardyzacja
nastpujcych elementw:
Gramatyki opisw poszczeglnych bytw,
Nazw i znacze nazw obowizujcych w ramach danego
biznesu (np. co oznaczaj sowa "autor", "klient", "instrument",
"akcja", itd.),
Ogranicze zwizanych z opisywanymi bytami,
Metadanych zwizanych z bytami (autor opisu, data stworzenia
opisu, data ostatniej aktualizacji, itd.),
Dopuszczalnych operacji na bytach.
! W tym zakresie zapis ontologii jest pewn meta-baz danych, w
ktre ustala si zarwno struktur samej bazy danych, jak i pewne
dodatkowe informacje (meta-atrybuty) bdce podstaw
przetwarzania bazy danych.
! Nieco inne podejcie prezentuje standard RDF opracowany przez
W3C, gdzie ontologi reprezentuj wyraenia RDF.

Klasyfikacja metadanych
! Metadane niezalene od treci danych: lokacja danych, data
modyfikacji, typ kamery sucej do sporzdzenia zdjcia, itd.
Mimo, e nie skadaj si bezporednio na tre danych, mog by
wanym kryterium wyszukiwania.
! Metadane zalene od treci danych: rozmiar dokumentu, liczba
kolorw, liczba wierszy, liczba kolumn w tabeli. Metadane zalene
od treci mog by dalej podzielone na:
Bezporednie metadane dotyczce treci, np. indeksy, klasyfikacje,
itd.
Metadane opisujce tre: adnotacje o zawartoci zdjcia, np. opis
zapachu kwiatu przedstawionego na zdjciu.
Metadane niezalene od dziedziny biznesowej, ktrej dotyczy tre,
np. definicje typu dokumentu HTML/SGML
Metadane zalene od dziedziny biznesowej, np. schemat danych lub
opis ontologii biznesowej

! Podzia na dane i metadane nie jest do koca jasny i silnie zaley


od nastawienia projektanta i podziau zada podczas redakcji treci
danych.

Protok wymiany informacji


w rozproszonej BD
! Protok wymiany informacji pomidzy rozproszonymi miejscami
musi uwzgldnia:
przesyanie danych z jednego miejsca do drugiego miejsca
przesyanie zlece (np. zapyta) do odlegych miejsc celem
przetwarzania danych
zwrotne przesyanie wynikw tych zlece do zlecajcego klienta
automatyczn dystrybucj niektrych metadanych (np. schematu BD)
pomidzy uczestnikw rozproszonej bazy danych.
przesyanie zapyta dotyczcych metadanych
przekazywanie wynikw zapyta dotyczcych metadanych do
pytajcego

! Aktualnie, protokoy takie istniej w bardzo uproszczonej lub silnie


wyspecjalizowanej formie
IIOP (Internet Inter-Orb Protocol) - bardzo uproszczony
LDAP (Lightweight Directory Access Protocol) - silnie
wyspecjalizowany

Migracje obiektw
Migracja: przemieszczanie si obiektw midzy wzami sieci, przy czym obiekty
musz by skojarzone (statycznie lub dynamicznie zwizane) ze swoimi klasami i
przechowywanymi w ramach tych klas metodami. Problemy:
! Okrelenie jednostki migracji
! ledzenie obiektw
! Utrzymywania porzdku w katalogu systemu bazy danych
! Okresowa kondensacja acuchw obiektw porednich
! Przemieszczanie obiektw zoonych
! Zapewnienie globalnej przestrzeni nazw
! Zapewnienie waciwych mechanizmw zakresu i wizania
! Dostpno metod umoliwiajcych przetwarzanie obiektw
Jak dotd, metody s najczciej skadowymi aplikacji, a nie bazy danych.
Konsekwencj jest to, e po przemieszczeniu obiektu aplikacja dziaajca w jego
nowym miejscu musi mie wbudowane (powielone, skompilowane, zlinkowane)
metody do jego przetwarzania.

! Wiele orodkw prowadzi prace badawcze nad uniwersalnymi

Oprogramowanie komponentowe
Komercyjny buzzword, niezrealizowane marzenie informatykw od 30 lat.
Oznacza technologie zmierzajce do budowy standardw oraz wspomagajcego
je oprogramowania, ktre pozwolioby na skadanie duych aplikacji lub
systemw z mniejszych standardowych czci - komponentw, na zasadzie
podobnej do skadania komputera z podzespow.
Inne terminy: mega-programming, programming-in-the-large.
Jako przykady komponentowego podejcia wymienia si: OMG CORBA, OpenDoc firm Apple,
IBM i innych, technologia .NET/COM/DCOM, Java Beans i Enterprise Java Beans.

Obiektowo w systemach rozproszonych

Komponenty odnosz wiele sukcesw. Istniej jednak problemy


utrudniajce szerokie ich stosowanie, tj:
! problemy z osigniciem akceptowalnej wydajnoci,
! trudnoci w precyzyjnym a jednoczenie dostatecznie
abstrakcyjnym wyspecyfikowaniu interfejsw pomidzy
komponentami,
! dynamiczny postp w informatyce, powodujcy pojawianie si
coraz to nowych wymaga na interfejsy.

Obiektowo w rozproszonych bazach


danych
! Obiektowo zakada zwikszenie stopnia abstrakcji,
przystosowanie modeli realizacyjnych systemw informatycznych
do naturalnych konstrukcji i obrazw mylowych projektantw,
programistw i uytkownikw.
! Gwny problem - opanowanie zoonoci przy wytwarzaniu
oprogramowania.

rda zoonoci projektu oprogramowania

obejmujca
obejmujcaogromn
ogromnliczb
liczb
wzajemnie
wzajemnieuzalenionych
uzalenionych
aspektw
aspektwi iproblemw.
problemw.

! Punktem zainteresowania twrcw narzdzi informatycznych


staj si procesy mylowe zachodzce w umysach osb
pracujcych nad oprogramowaniem => modelowanie
pojciowe.
! Obiektowo przerzuca ciar problemu z kwestii narzdziowej (jak
mam to zrobi?) na kwesti merytoryczn (co mam zrobi i po
co?).

Zesp
Zespprojektantw
projektantw

Dziedzina
Dziedzinaproblemowa,
problemowa,

rodki
rodkii itechnologie
technologie
informatyczne:
informatyczne:

sprzt,
sprzt,oprogramowanie,
oprogramowanie,sie,
sie,
jzyki,
jzyki,narzdzia,
narzdzia,udogodnienia.
udogodnienia.

Oprogramowanie:
decyzje strategiczne,
analiza,
projektowanie,
konstrukcja,
dokumentacja,
wdroenie,
szkolenie,
eksploatacja,
pielgnacja,
modyfikacja.

podlegajcy
podlegajcyograniczeniom
ograniczeniom
pamici,
pamici,percepcji,
percepcji,wyraania
wyraania
informacji
informacjii ikomunikacji.
komunikacji.

Potencjalni
Potencjalniuytkownicy:
uytkownicy:

czynniki
czynnikipsychologiczne,
psychologiczne,
ergonomia,
ergonomia,ograniczenia
ograniczeniapamici
pamici
i ipercepcji,
percepcji,skonno
skonnodo
do bdw
bdw
i inaduy,
naduy,tajno,
tajno,prywatno.
prywatno.

10

Jak walczy ze zoonoci ?

Modelowanie pojciowe
Projektant i programista musz dokadnie wyobrazi sobie problem
oraz metod jego rozwizania. Zasadnicze procesy tworzenia
oprogramowania zachodz w ludzkim umyle i nie s zwizane z
jakimkolwiek jzykiem programowania.

Zasada dekompozycji:
rozdzielenie zoonego problemu na podproblemy, ktre mona rozpatrywa i
rozwizywa niezalenie od siebie i niezalenie od caoci.

Zasada abstrakcji:
eliminacja, ukrycie lub pominicie mniej istotnych szczegw rozwaanego
przedmiotu lub mniej istotnej informacji; wyodrbnianie cech wsplnych i
niezmiennych dla pewnego zbioru bytw i wprowadzaniu poj lub symboli
oznaczajcych takie cechy.

Pojcia modelowania pojciowego (conceptual modeling) oraz


modelu pojciowego (conceptual model) odnosz si procesw
mylowych
i
wyobrae
towarzyszcych
pracy
nad
oprogramowaniem.

Zasada ponownego uycia:


wykorzystanie wczeniej wytworzonych schematw, metod,
komponentw projektu, komponentw oprogramowania, itd.

wzorcw,

Modelowanie pojciowe jest wspomagane przez rodki


wzmacniajce ludzk pami i wyobrani. Su one do
przedstawienia rzeczywistoci opisywanej przez dane, procesw
zachodzcych w rzeczywistoci, struktur danych oraz programw
skadajcych si na konstrukcj systemu.

Zasada sprzyjania naturalnym ludzkim wasnociom:


dopasowanie modeli pojciowych i modeli realizacyjnych systemw do
wrodzonych ludzkich wasnoci psychologicznych, instynktw oraz mentalnych
mechanizmw percepcji i rozumienia wiata.

Perspektywy w modelowaniu pojciowym


odwzorowanie

Przykad: pojciowy schemat obiektowy w UML


Osoba
Nazwisko
Imi *
Adres *

odwzorowanie

... ... ...


... ...... ...... ...
... ...... ...
... ...
... ... ...

Pracownik
Zawd *
0..*

Percepcja
rzeczywistego
wiata

Analityczny
model
rzeczywistoci

Model
struktur danych
i procesw SI

Trwa tendencj w rozwoju metod i narzdzi projektowania oraz


konstrukcji SI jest denie do minimalizacji luki pomidzy
myleniem o rzeczywistym problemie a myleniem o danych i
procesach zachodzcych na danych.

Zatrudnienie
Wypata *
0..*
Ocena *

FZ

Firma
Nazwa
1 Miejsce *

Nie wicej ni 10 sekund zastanawiania si, co ten diagram przedstawia


i jak jest semantyka jego elementw.
Potem mona ju programowa np. w C++ lub Java.
Co otrzymamy po odwzorowaniu tego schematu na schemat relacyjny?

Skutki niezgodnoci modelu pojciowego i


relacyjnego

Schemat relacyjny
Firma(NrF, Nazwa)

Zatrudnienie(NrF, NrP)

Lokal(NrF, Miejsce)

PZ

Pracownik(NrP, NrOs)

Programy odwoujce si do schematu relacyjnego s dusze od programw


odwoujcych si do schematu obiektowego (szacunkowo od 30% do 70%). Ma
to ogromne znaczenie dla tempa tworzenia oprogramowania, jego jakoci,
pielgnacyjnoci, itd. Programy te s te zwykle znacznie wolniejsze.
Mini przykad:
Podaj adresy pracownikw pracujcych w firmach zlokalizowanych w Radomiu

Oceny(NrOceny, Ocena, NrF, NrP)


Dochd(NrDochodu, Wypata, NrF, NrP)

Osoba(NrOs, Nazwisko)

SBQL: (Firma where Radom in Miejsce).FZ.Zatrudnienie.PZ.Pracownik.Adres

Wyszkolenie(Zawd, NrP)

SQL:
Imiona(NrOs, Imi)

Adresy(NrOs, Adres)

Jest to jedno z kilku moliwych rozwiza.


Schemat relacyjny jest trudniejszy do odczytania i zinterpretowania przez
programist. Bdzie on musia co najmniej 10 minut zastanawia si, co ten
diagram reprezentuje i jak semantyk maj atrybuty i zaznaczone powizania.
Efektem jest zwikszona skonno do bdw (mylnych interpretacji).

select a.Adres
from Lokal as k, Zatrudnienie as z, Pracownik as p, Osoba as s, Adresy as a
where k.Miejsce = Radom and k.NrF = z.NrF and z.NrP = p.NrP
and p.NrOs = s.NrOs and s.NrOs =a.NrOs

Zapytanie w SQL jest znacznie dusze wskutek tego, e w SQL konieczne s


zczeniowe predykaty (takie jak k.NrF=z.NrF i nastpne) kojarzce
informacj semantyczn "zgubion" w relacyjnej strukturze danych.

11

Rozproszone obiektowe bazy danych

Rozproszona obiektowa baza danych

! Problemy s podobne jak w przypadku rozproszonych relacyjnych


BD.

Przedmiotem przetwarzania i wymiany informacji w obiektowej rozproszonej


bazie danych s obiekty. Zarzdzanie rozproszonymi obiektami ma na celu
utrzymywanie spjnoci i przezroczystoci (niewidocznoci) geograficznego
rozproszenia obiektw.
Zapytanie
Aplikacja

! Nie jest jednak pewne czy do przetwarzania zapyta w tych


systemach bd si odnosi te same metody.
! Problemy, rnice przetwarzanie zapyta w rozproszonych
obiektowych BD i w rozproszonych relacyjnych BD:

uytkownika

uytkownika

Oprogramowanie
klient/serwer

Obiekty nie zawsze s implementowane jako "paskie" zapisy.


Obiekty mog mie referencje do obiektw zlokalizowanych w innych
wzach sieci.
Przetwarzanie zapyta moe dotyczy kolekcji zoonych obiektw
Zapytania mog mie odwoania do metod.

Oprogramowanie
serwera

Podsystem
komunikacyjny

Oprogramowanie
serwera

Oprogramowanie
klient/serwer

! Przetwarzanie zapyta w rozproszonych systemach obiektowych


jest tematem bardzo istotnym. Standard ODMG tym si nie
zajmuje.
! Jak dotd, w zakresie przetwarzania rozproszonych zapyta nie
rozwizano podstawowych problemw koncepcyjnych.
! Niektre z problemw mog nie mie oglnego rozwizania.

Zapytanie
uytkownika

Oprogramowanie
klient/serwer

Aplikacja
uytkownika

Zapytanie
uytkownika

Zalety rozproszonych obiektw


! Zgodno z logik biznesu - bezporednia implementacja obiektw
biznesowych.
! Umoliwienie projektantom opnienie decyzji - gdzie i jakie usugi
powinny by zapewnione.
! Skalowalno aplikacji: maa zaleno czasu reakcji systemu od
zwikszenia iloci danych, liczby uytkownikw, liczby wzw.
! Dekompozycja aplikacji na mae elementy wykonawcze (obiekty,
metody,...).
! Przyrostowe dodawanie/odejmowanie funkcjonalnoci (pac tylko za
to, czego uywam).

Projektowanie rozproszonych
baz danych

! Podzia zasobw i zbalansowanie obcie.


! Wspbieno i asynchroniczne przetwarzanie.
! Elastyczno zmian w oprogramowaniu (konserwacja), w
szczeglnoci, przenoszenie obiektw i usug do innych miejsc.
! Moliwo przyczania aplikacji spadkowych (funkcjonujcych
wczeniej jako scentralizowane).

Podejcia do projektowania rozproszonych


BD: top-down i bottom-up

Projektowanie: podejcie top-down


Analiza

Od ogu do szczegw:
top-down

bottom-up

Odgrne zaprojektowanie caej bazy danych,


z uwzgldnieniem optymalizacji
przechowywanych danych, narzuconej przez
fakt geograficznego rozproszenia
producentw i konsumentw informacji
przechowywanej w bazie danych.
Od szczegw do ogu:
Zintegrowanie ju istniejcych (spadkowych)
lub zaprojektowanych lokalnych baz danych
w jedn globaln rozproszon baz danych.

Model pojciowy
scentralizowany

Analiza systemowa: rozpoznanie


wymaga, precyzowanie
kontekstu przyszej bazy danych.
Projektowanie schematu
pojciowego
Projektowanie struktury
logicznej

Model logiczny
scentralizowany

Modele logiczne
dla
poszczeglnych
miejsc

Kryteria
rozproszenia

Kryteria rozproszenia s
zwizane z faktem fizycznego
rozproszenia rde i
odbiorcw danych oraz
autonomii lokalnych baz
danych. Ustalaj one decyzje,
ktre fragmenty projektu
pojciowego bd
przechowywane w
poszczeglnych miejscach, a

12

Dalsze fazy postpowania


w podejciu top-down

Fragmentacja

Okrelenie danych podlegajcych replikacjom (lokalnych


kopii) oraz strategii replikacji.
Zrnicowanie logicznego schematu danych w zalenoci
od typu SZBD w poszczeglnych miejscach.
Okrelenie lokalnych schematw dla poszczeglnych
miejsc.
Okrelenie danych autonomicznych dla poszczeglnych
miejsc, nie uczestniczcych w rozproszonej bazie danych; co
prowadzi do okrelenia schematu pojciowego i logicznego
dla danych widzianych z zewntrz.
Podzia schematu logicznego: Wg rnych regu
zwizanych na og z fizycznym ulokowaniem obiektw
rzeczywistych (np. osb zatrudnionych, sprztu, co pociga
za sob odpowiedni podzia schematu logicznego) lub te z
fizycznym ulokowaniem programw aplikacyjnych
dziaajcych na tych obiektach.

Podstawowe metody fragmentacji schematu


! Fragmentacja pionowa oznacza przyporzdkowanie
poszczeglnych klas obiektw do poszczeglnych miejsc, lub
rozbicie obiektw danej klasy na dwa lub wicej podobiektw,
przy czym takie podobiekty s przechowywane w rnych
miejscach.
! Fragmentacja pionowa moe oznacza konieczno
odpowiedniego podziau informacji zawartych w klasach
obiektw oraz ustalenia rodkw podtrzymania
jednoznacznej tosamoci obiektw.
! Fragmentacja pozioma oznacza rozbicie populacji obiektw
danej klasy na dwa lub wicej miejsc geograficznych.
! Fragmentacja pozioma moe by dokonywana na podstawie
rnych kryteriw, ktre czsto wizane s z geograficznym
ulokowaniem obiektw rzeczywistych, lub te z
geograficznym ulokowaniem przetwarzania tych obiektw.

! Najpopularniejszym modelem jest fragmentacja


pozioma, oznaczajca, e kady serwer ma ten sam
schemat danych, ale inn populacj danych.
Sumowanie zbiorw danych w taki sposb, e informacja o
serwerach jest zbdna dla programisty/uytkownika.

! Fragmentacja pionowa: podzia obiektw na


fragmenty przechowywane w rnych miejscach.
Musi by zapewniony sposb sklejenia caoci obiektu z
fragmentw (np. NIP dla obywateli RP).

! Przy integracji zasobw mog pojawia si


wyrafinowane kombinacje fragmentacji poziomej,
pionowej i replikacji (redundancji).

Fragmentacja pionowa relacyjnej bazy danych


Warszawa

Pozna

DC

DNR CNR ILO

DNR NAZW STATUS


D1
D2
D3
D4
D5

Abacki
Bober
Czerny
Dbek
Erbel

20
10
30
20
30

Sie

Gdask
DOSTAWCA_MIASTO
DNR
D1
D2
D3
D4
D5

Fragmentacja pozioma relacyjnej bazy danych


DOSTAWCA

Kutno
DC

DOSTAWCA_DANE

MIASTO

D2
D2
D3

Radom
C1
C2
C2

Klasa
Pracownik

Pracownik
Nowak

300
400
200

Sie

DNR NAZW STATUS MIASTO


D5 Erbel

30 Radom

Kalisz

Sie

Pracownik
Styka

20 Lublin
20 Lublin

DC

Radom

Obiekty Pracownik s przechowywane


zgodnie z geograficznym pooeniem
pracodawcy.

...

DNR NAZW STATUS MIASTO


D1 Abacki
D4 Dbek

DOSTAWCA

Pracownik
Kowalski

Lublin

DOSTAWCA

DNR CNR ILO


D1
D4
D4

C6
C2
C4

100
200
300

300
200
400
200
100
100
300
400
200
200
300
400

Przykad fragmentacji poziomej

DNR CNR ILO

10 Pozna
30 Pozna

C1
C2
C3
C4
C5
C6
C1
C2
C2
C2
C4
C5

Lublin
Pozna
Pozna
Lublin
Radom

DNR NAZW STATUS MIASTO


D2 Bober
D3 Czerny

D1
D1
D1
D1
D1
D1
D2
D2
D3
D4
D4
D4

Kielce
Pracownik
Malasa

Klasa
Pracownik
Pracownik
Malina

...

Klasa
Pracownik
Pracownik
Zagrny.

...

13

Fragmentacja pionowa obiektw Pracownik


Radom

Fragmentacja danych

Klasa danych
osobistych

Nowak
dane osobiste

Kowalski
dane osobiste

...

Kalisz

Sie

Nowak
dane o ocenach

Krakw
Nowak
dane o zatrud.

Klasa danych o
ocenach
Kowalski
dane o ocenach

...

Klasa danych o
zatrudnieniu
Kowalski
dane o zatrud.

...

Inne fragmentacje danych w rozproszonej BD


! Moliwe s inne, bardziej zoone fragmentacje danych, ktre cz
fragmentacje pionowe, fragmentacje poziome oraz redundantne
dane (replikacje).
! Bardziej zoone fragmentacje rodz trudnoci z:
zarzdzaniem metadanymi: gdzie musz by ulokowane
informacje odnonie tego w jaki sposb podzielone dane maj
by scalone w kompletne obiekty lub kolekcje w ramach
rozproszonej bazy danych. Jest to rola metadanych oraz
mechanizmu waciwej dystrybucji metadanych pomidzy
uczestnikw rozproszonej bazy danych.
przetwarzaniem zapyta: dekompozycja zapytania na podzapytania adresowane do poszczeglnych miejsc staje si
znacznie bardziej kopotliwa. Przesyanie fragmentw obiektw
celem ich zmaterializowania po stronie klienta moe by zbyt
kosztowne.
! Bardziej zoone fragmentacje mog by nie do uniknicia w
rozproszonej bazie danych integrujcej istniejce bazy danych

Projektowanie: podejcie bottom-up

Replikacje

! Replikacja jest kopi danych i usug na innym serwerze.


! Replikacje maj na celu zwikszenie dostpnoci danych i
usug oraz ich ochron przed zniszczeniem.
! Przy integracji bottom-up replikacje (redundancje) s
czsto cech nieuchronn i niepodan.
Moe wystpowa redundancja danych o dowolnym stopniu
skomplikowania.

! Replikacje i redundancje stanowi powany problem dla


przezroczystoci i operacji aktualizacji danych.

Replikacja

! Podejcie ad hoc: Budowa uniwersalnych lub specyficznych dla


danego zastosowania pomostw (gateways) umoliwiajcych
dostp z danego systemu bazy danych do innych baz danych.
Pomost moe (nie musi) zapewnia przezroczysto rozproszenia.
! Podejcie oparte o globalny schemat: Wszystkie skadniki
rozproszonej BD s objte jednym globalnym schematem,
jednakowym dla kadego miejsca i zapewniajcym
przezroczysto rozproszenia. Istotn wad podejcia opartego na
globalnym schemacie jest brak moliwoci sterowania zakresem
autonomii kadego lokalnego systemu.
! Federacyjna baza danych: Kada lokalna baza danych
zachowuje swoj autonomi, udostpniajc tylko cz danych dla
innych miejsc w RBD. Podejcie federacyjne zakada, e kada
lokalna baza danych jest widziana poprzez pewn perspektyw
(view), ukrywajc niektre dane dla rozproszonych aplikacji.

14

Federacyjna BD tworzona metod bottom-up


Aplikacje
globalne
Aplikacje
Aplikacjeglobalne
globalne
Schemat federacyjnej bazy danych
Perspektywa
Mediator
Osona

Perspektywa
Mediator
Osona

Schemat lokalny 1
Miejsce 1
Aplikacje
Aplikacje
Aplikacje
lokalne
lokalne
lokalne

Schemat lokalny 2
Miejsce 2

Baza
danych 1

Aplikacje
Aplikacje
Aplikacje
lokalne
lokalne
lokalne

Baza
danych 2

.....

Podejcie federacyjne okazao si skuteczne ze wzgldu na zapewnienie


autonomii, bezpieczestwa i efektywnoci. Rodzi jednak duo problemw, m.in.
z zapewnieniem jednolitej ontologii biznesowej, uniwersalnoci aplikacji,
wydajnoci, itd.

15

Rozproszone
SYSTEMY BAZ DANYCH
Architektury rozproszonych
baz danych

Architektura klient-serwer

Architektura klient - serwer

Cao pracy wykonywanej przez system komputerowy jest


podzielona na dwie czci:

! Serwer - komputer (proces) oferujcy


okrelony rodzaj usugi
! Klient - komputer (proces) korzystajcy
z usugi

wykonywan po stronie klienta


(zwykle zwizan z interakcj z
uytkownikiem)

Okrelenie mechanizmu komunikacji pomidzy


klientem a serwerem.

Klient
Klient

Podstawowe
problemy:

Podzia funkcji na te, ktre s wykonywane po stronie


klienta i te, ktre s wykonywane po stronie serwera
Okrelenie jednostki komunikacji klient - serwer

Serwer

Klient
3

Klient

Heterogeniczne rodowisko
w architekturze klient-serwer
Windows 95
Client

wykonywan po stronie serwera


(komunikacja, dostp do bazy danych,
zarzdzanie repozytoriami pamici,
zarzdzanie globaln przestrzeni
nazw)

Windows NT
Client

UNIX
Client

Architektury serwerw w
dostpie do bazy danych
Windows 95
or NT
Client

TCP/IP network

Windows NT Server
with repository on
SQLserver

UNIX Server
with repository on
Informix
5

! Serwer
plikw,
! Serwer SQL,
! Serwer
obiektw,
! Serwer
stron.
6

Transfer plikw
Architektura z serwerem plikw
klient
Aplikacja po stronie
klienta odwouje si
do danych
umieszczonych w
pliku bazy danych

Zapotrzebowanie na
odczyt/zapis
danych w plikach

Odczytane dane z
plikw bazy danych

! Protok FTP (File Transfer Protocol)


! Usuga FTP:
" kopiowanie plikw z komputerw odlegych do komputera
uytkownika
" kopiowanie plikw z komputera uytkownika do
komputerw odlegych
! Dostp do danych (ograniczony, system weryfikacji
uytkownika)
! rodowisko pracy:
" tekstowe (program ftp w rodowisku systemowym)
" graficzne (dedykowane aplikacji komercyjne, przegldarki)

serwer

Alokacja pamici
WE/WY
obsuga plikw z baz
danych

Procedura transferu plikw

Typowe instrukcje usugi FTP


! open - podczenie si do serwera
! user - wejcie uytkownika do systemu (ftp,
anonymous)
! close - zamknicie poczenia
! dir - wywietlenie zawartoci katalogu na serwerze
! cd - zmiana katalogu biecego na serwerze
! lcd - zmiana katalogu biecego na komputerze klienta
! bin - binarny rodzaj transferu
! asc - znakowy rodzaj transferu
! put - przesanie pliku z komputera klienta do serwera
! get - pobranie pliku z serwera
! mput - przesanie plikw z komputera klienta do
serwera
! mget - pobranie plikw z serwera

! Podczenie si do serwera
odlegego
! Wejcie uytkownika do systemu
plikw
! Nawigacja w strukturze katalogw
! Okrelenie rodzaju transferu
! Pobranie/osadzenie plikw
! Zamknicie poczenia
9

10

Architektura z serwerem stron

Architektura z serwerem SQL

klient
aplikacja
Menader
obiektw
Aplikacja klienta
zadaje zapytanie
SQL
Zarzdzanie
kursorem
klient

serwer
Pami
podrczna
stron

Menader Menader
stron pamici dziennika
podrcznej blokowania

Menader
plikw/indeksw

Zapytanie SQL

Maszyna SQL

Menader stron
pamici
podrcznej

krotka

Alokacja pamici
WE/WY
strony

serwer
Pami
podrczna
obiektw

11

Pami
podrczna
stron

12

Architektura serwera stron

Architektura z serwerem obiektw

Aplikacja

Przedmiotem
zarzdzania
s fizyczne
strony dyskowe

Interfejs
zapytaniowy
Optymalizacja
zapyta

Przegldarka
obiektw

Interfejs
programistyczny

serwer

klient

Zarzdzanie obiektami
Zarzdzanie plikami i indeksami
Zarzdzanie kieszeni stron

Pami
podrczna
obiektw

Menader Menader
obiektw dziennika
blokowania

Aplikacja

Menader
plikw/indeksw

strony
Zarzdzanie zamkami
Zarzdzanie skadem
Zarzdzanie kieszeni stron

Pami
podrczna
stron

Menader
stron pamici
odrcznej

Menader
obiektw
obiekty

Alokacja pamici
WE/WY
Pami
podrczna
obiektw

Obiektowa
baza
danych
13

14

Architektura serwera obiektw

Reguy architektury klient-serwer (1)

Aplikacja

Przedmiotem
zarzdzania
s obiekty

Interfejs
zapytaniowy

Przegldarka
obiektw

Interfejs
programistyczny

Zachowanie autonomii serwera. Klienci powinni zachowywa reguy


wykorzystania serwera, nie powinni powodowa jego niedostpno (np.
zamyka due iloci danych), nie powinni ama ogranicze integralnoci.

Zachowanie autonomii klienta. Klienci nie powinni zachowywa si rnie


w zalenoci od tego, czy serwer jest lokalny czy odlegy. Powinni by
odizolowani od kwestii fizycznego ulokowania danych.

Wspomaganie dla aplikacji niezalenych od serwera.

Dostp do wasnoci (danych, usug) serwera. Klienci mog da od


serwera wykonanie przewidzianych dla niego funkcji.

Wspomaganie dla biecego dostpu do danych. Dostp ten powinien


by bezporedni, bez porednictwa plikw przekazywanych do/od klienta.

Minimalny wpyw architektury K/S na wymagania dla klienta.


Oprogramowanie klienta w architekturze K/S nie powinno wykazywa
znacznego zwikszenia zapotrzebowania na RAM lub objto dysku.

Zarzdzanie obiektami

obiekty
Zarzdzanie obiektami
Optymalizacja zapyta
Zarzdzanie zamkami
Zarzdzanie skadem
Zarzdzanie stronami i kieszeniami

Obiektowa
baza
danych
15

Reguy architektury klient-serwer (2)

16

Przykad architektury SZBD typu klient-serwer


Aplikacja generujca transakcje

Kompletno opcji niezbdnych do poczenia. Oprogramowanie klienta


nie powinno zawiera kodu realizujcego poczenie z serwerem.Powinien to
zapewnia serwer komunikacyjny.

Moliwo budowy lokalnych prototypw. Programista powinien mie


moliwo budowy i testowania aplikacji K/S wycznie na stacji klienta.

Kompletno narzdzi uytkownika kocowego. Projektowanie ekranw,


generacja zapyta, itd. powinny by czci rodowiska.

Kompletno rodowiska budowy aplikacji. Powinno przewidywa


moliwo czenia si w sieci, dostp do usug globalnych w zakresie nazw,
lokacji danych, itd.

Otwarte rodowisko jzyka-gospodarza. Powinno zapewnia moliwo


uycia uniwersalnego jzyka programowania do budowy aplikacji.

Szczeglna troska o standardy. Im bardziej bd one przestrzegane, tym


mniej bdzie pniejszych kopotw ze wspdziaaniem.
17

Zarzdzanie
transakcjami

Aplikacja generujca transakcje

Zarzdzanie
buforami

Zarzdzanie
transakcjami

...

Zarzdzanie
buforami

Zarzdzanie zasobami

Zarzdzanie zasobami

Klient 1

Klient n

Zarzdzanie
sieci

Interfejs serwera
Zarzdzanie
zasobami

Zarzdzanie
transakcjami

Zarzdzanie
logiem

Serwer

Zarzdzanie
buforami

Zarzdzanie
zamkami
18

Architektura klient-(multi) serwer (2)

Architektura klient-(multi) serwer (1)

Poczenia poprzez sie: nie ma bezporednich pocze, zarwno serwery jak i


klienci s przyczani w jednakowy sposb do wsplnej sieci komputerowej.

Poczenia bezporednie:

k2
k2

k3
k3

k7
k7

k1
k1
k4
k4

k3
k3

s4
s4

s1
s1

k9
k9

Sie komputerowa

s1
s1

s2
s2

s4
s4

k4
k4

k8
k8
s3
s3

k5
k5

k1
k1

k2
k2

k8
k8

k9
k9
s3
s3

k5
k5

k6
k6

k10
k10

k11
k11

s2
s2

k6
k6

19

Architektura trzywarstwowa i wielowarstowa

k7
k7

20

Logiczna architektura oprogramowania

three-tier architecture

Architektura klient-serwer powinna odzwierciedla logiczny podzia


oprogramowania na czci. Nie jest to tak istotne w systemie scentralizowanym.

multi-tier architecture
!

Interfejs
uytkownika

Architektura klient-serwer podzielona na trzy warstwy:


"

interfejs uytkownika,

"

logik przetwarzania (reguy biznesu, logik biznesu)

"

serwer (serwery) bazy danych.

Warstwy s zaprojektowane i istniej niezalenie, co ma


due znaczenie dla pielgnacyjnoci systemu ze wzgldu
na moliwo zmian w dowolnej warstwie bez koniecznoci
zmian w pozostaych warstwach.

Czsto warstwy s zrealizowane na odrbnych platformach:


interfejs na MS Windows, logika przetwarzania na serwerze
aplikacji i baza danych na serwerze bazy danych.

rodkowa warstwa moe skada si z wielu warstw, co jest


okrelane jako architektura wielowarstwowa.

Architektura trjwarstwowa:

Logika przetwarzania

cienki
klient

Warstwa
Warstwaprezentacyjna
prezentacyjna
(interfejs
(interfejsuytkownika)
uytkownika)
gruby
klient
Warstwa
Warstwaprzetwarzania
przetwarzania
(logika
(logikabiznesu)
biznesu)

Serwer
bazy
danych

Serwer
bazy
danych

Warstwa
Warstwazarzdzania
zarzdzania
baz
bazdanych
danych

Staranne rozdzielenie tych warstw jest


bardzo istotne z punktu widzenia
tworzenia i modyfikowalnoci
oprogramowania. Dziki temu
rozdzieleniu, moliwa jest np. poprawa
interfejsu uytkownika bez jakichkolwiek
interwencji w pozostae warstwy
oprogramowania.
Zasada oddzielania aspektw
(separation of concerns principle,
E.Dijkstra)

21

Cienki i gruby klient

22

Architektury dwuwarstwowe

Terminy cienki klient (thin client) oraz gruby klient (fat client) odnosz si do
mocy i jakoci przetwarzania po stronie klienta w architekturze klient-serwer.
Model cienkiego klienta: klient posiada niezbyt wielk moc przetwarzania,
ograniczon do prezentacji danych na ekranie. Przykadem jest klient w postaci
przegldarki WWW.
Model grubego klienta: klient posiada znacznie bogatsze moliwoci
przetwarzania, w szczeglnoci moe zajmowa si nie tylko warstw prezentacji,
lecz take warstw przetwarzania aplikacyjnego (logiki biznesu).
Powyszy podzia posiada oczywicie pewn gradacj.
Model cienkiego klienta jest najczstszym rozwizaniem w sytuacji, kiedy system
scentralizowany jest zamieniany na architektur klient-serwer. Wad jest due
obcienie serwera i linii komunikacyjnych.
Model grubego klienta uywa wikszej mocy komputera klienta do przetwarzania
zarwno prezentacji jak i logiki biznesu. Serwer zajmuje si tylko obsug transakcji
bazy danych. Popularnym przykadem grubego klienta jest bankomat. Zarzdzanie w
modelu grubego klienta jest bardziej zoone.
23

Uproszczone architektury trjwarstwowe z cienkim lub grubym klientem.

cienki
klient

Warstwa
Warstwaprezentacyjna
prezentacyjna
(interfejs
(interfejsuytkownika)
uytkownika)

Warstwa
Warstwaprzetwarzania
przetwarzania
(logika
(logikabiznesu)
biznesu)++
Warstwa
Warstwazarzdzania
zarzdzania
baz
bazdanych
danych

Warstwa
Warstwaprezentacyjna
prezentacyjna
(interfejs
(interfejsuytkownika)
uytkownika)
++Warstwa
Warstwaprzetwarzania
przetwarzania
(logika
(logikabiznesu)
biznesu)

gruby
klient

Warstwa
Warstwaprzetwarzania
przetwarzania
(logika
(logikabiznesu)
biznesu)++
Warstwa
Warstwazarzdzania
zarzdzania
baz
bazdanych
danych

W tym modelu przetwarzanie (logika biznesu)


jest dzielone pomidzy klienta i serwera.
Zaprojektowanie jej jest trudniejsze.
24

Przykad architektury K/S - portal WWW

Przykad architektury K/S - sie bankomatw

interakcja poprzez
HTTP

Bankomat
Bankomat

klient
klient
Serwer kont klientw banku

Bankomat
Bankomat

klient
klient

Monitor
Baza danych kont
tele-przetwarzania klientw banku

Bankomat
Bankomat

klient
klient
Oprogramowanie poredniczce
organizujce komunikacj z odlegymi
klientami i szeregujce transakcje klientw
celem przetwarzania ich przez baz danych.

Bankomat
Bankomat

Serwer
SerwerWeb:
Web:

zapytania
SQL

generacja
generacja
dynamicznych
dynamicznychstron
stron
HTML
HTMLdla
dlaklienta
klienta
++
zlecenia
zleceniado
dobazy
bazy
danych
danych

wyniki
zapyta
SQL

klient
klient

Serwer
Serwerbazy
bazy
danych:
danych:
wykonywanie
wykonywanie
zapyta
zapytawwSQL
SQL

25

26

2-warstwowa architektura aplikacji Web

3-warstwowa architektura aplikacji Web

Wiele warstw poredniczcych powoduje dodatkowe obcienie.

Serwer Web
Sie
Internet

Serwer aplikacji
Sie
Internet

Serwer bazy danych

Serwer bazy danych

HTTP
Baza
danych

Baza
danych

HTTP
Baza
danych

Przegldarka

27

Serwer

28

Architektura rozproszonych obiektw

Zastosowanie rnych architektur K/S

Baza
danych

Przegldarka

Serwer

Serwer Web
Serwer aplikacji

Dwuwarstwowa architektura K/S z cienkim klientem


" Systemy spadkowe (legacy), gdzie oddzielenie przetwarzania i zarzdzania
danymi jest niepraktyczne.
" Aplikacje zorientowane na obliczenia, np. kompilatory, gdzie nie wystpuje lub
jest bardzo maa interakcja z baz danych.
" Aplikacje zorientowane na dane (przegldanie i zadawanie pyta) gdzie nie
wystpuje lub jest bardzo mae przetwarzanie.
Dwuwarstwowa architektura K/S z grubym klientem
" Aplikacje w ktrych przetwarzanie jest zapewnione przez wyspecjalizowane
oprogramowanie klienta, np. MS Excel.
" Aplikacje ze zoonym przetwarzaniem (np. wizualizacj danych,
przetwarzaniem multimediw).
" Aplikacje ze stabiln funkcjonalnoci dla uytkownika, uyte w rodowisku z
dobrze okrelonym zarzdzaniem.
Trzywarstwowa lub wielowarstwowa architektura K/S
" Aplikacje o duej skali z setkami lub tysicami klientw.
" Aplikacje gdzie zarwno dane jak i aplikacje s ulotne (zmienne).
" Aplikacje integrujce dane z wielu rozproszonych rde.
29

W architekturze klient-serwer istnieje wyrana asymetria pomidzy klientem i


serwerem; w szczeglnoci, nie wystpuje tam komunikacja bezporednio
pomidzy klientami. Model taki dla wielu zastosowa jest mao elastyczny i
zapewnia zbyt ma skalowalno.

Architektura rozproszonych obiektw znosi podzia na klientw i serwery.


Kade miejsce w rozproszonym systemie jest jednoczenie klientem i serwerem.

Konieczne jest sprowadzenie wszystkich danych i usug do jednego standardu.

Taki standard obejmuje:


" Model (pojciowy i logiczny) danych i usug, ktry jest w stanie "przykry"
wszystkie moliwe dane i usugi, ktre mog kiedykolwiek pojawi si w
systemie rozproszonym;
" Specjalne oprogramowanie zwane porednikiem (broker), ktre akceptuje
wsplny model danych i usug umoliwiajc ich udostpnienie dla dowolnych
miejsc w systemie rozproszonym.
" Specjalne oprogramowanie, zwane oson, adapterem lub mediatorem, ktre
przystosowuje konkretne miejsce do modelu przyjtego przez porednika.
30

Architektura klient-broker-serwer

Architektura klient-broker-serwer

! Dostp do odlegych zasobw sieci komputerowej odbywa si miedzy


klientem (klientami) a serwerem (serwerami) nie odbywa si
bezporednio lecz za pomoc porednika (brokera)
! Porednik zapewnia przezroczysto do odlegych geograficznie
zasobw,
! Broker przedstawia wszystkie zasoby w postaci zbioru obiektw, dziki
czemu moliwe jest ujednolicenie operacji wykonywanych na
zasobach, niezalenie od ich implementacji i realizacji wewntrznej,
! Fizyczna lokalizacja obiektw nie jest istotna dla uytkownika, gdy
pooenie obiektw znane jest brokerowi,
! Porednik otrzymuje zadanie od klienta, lokalizuje serwer z
potrzebnymi zasobami, przekazuje zlecenie oraz przekazuje zwrotnie
wynik zlecenia zrealizowanego przez serwer do klienta

Host klienta
Host serwera
zlecenie
Wywoanie
operacji

Porednik (Broker)
wynik,
parametry WY

Klient
Klient

Obiekt
Obiekt

31

Architektura rozproszonych obiektw (2)

...

Aplikacja
napisana w
C++

Aplikacja na
relacyjnej
bazie danych

Aplikacja
na Lotus
Notes

Osona 1

Osona 2

Osona 3

Porednik

Porednik

Porednik

Miejsce 2

Struktura logiczna rozproszonych obiektw


Obiekty

O2
O2

O1
O1

Operacje na
obiektach

O3
O3

O4
O4

K1

O5
O5

O6
O6

O8
O8
O7
O7

K3

K2

...

O9
O9

K4

Szyna oprogramowania (software bus)


Aplikacje

Szyna oprogramowania (software bus)

Miejsce 1

32

A1

A2

A3

Szyna oprogramowania tworzy jedn przestrze obiektw. Obiekty te s dostpne dla


dowolnego miejsca poprzez operacje (zgrupowane w klasach). Miejsca i sposoby
implementacji obiektw s niewidoczne. Aplikacje korzystaj z caej puli obiektw.

Miejsce 3
33

34

Semistrukturalna architektura aplikacji


internetowych
Przegldarka
WWW

Narzdzia
wspomagajce XML :
system autorski, itd.

Przegldarka
WWW

Warstwa klienta

XML

XML
Serwer Web
Serwer aplikacji
Interakcja z aplikacjami poprzez
protokoy oparte na XML
Baza danych w XML
(strukturalizowana)

Logiczna warstwa porednia

Serwer integrujcy XML,


serwer zapyta,
serwer hurtowni danych

Standardy czenia
rozproszonych zasobw

XML
XML

XML

XML

Translatory formatw
z/do XML, pomosty

Zasoby danych
Obiektowo-relacyjna
baza danych
wspomagajca XML

Obiektowa baza
danych
wspomagajca XML

Dokumenty
Dokumenty
XML
XML
nana
Webie
Webie

Inne
Inne
dokumenty
dokumentynana
Webie:
Webie:HTML
HTML
Word,...
Word,...

Zasoby danych
pod OLE/DB
35

36

Standardy czenia rozproszonych danych (1)

Standardy czenia rozproszonych danych (2)

Java DataBase Connectivity (JDBC): analogiczny do ODBC standard dla Java.

ADO (Active Data Objects): atwy interfejs do funkcji OLE-DB

Open DataBase Connectivity (ODBC): standard [zdalnego] dostpu do relacyjnych


baz danych

Kilka standardw bazujcych na XML dla E-commerce


"

Np. RosettaNet (acuchy dostaw), BizTalk

"

bazuje na Call Level Interface (CLI) opracowanym przez konsorcjum X/Open

"

Definiuj katalogi, opisy usug, faktury, zamwienia, itd.

"

definiuje API oraz cechy SQL ktre musz by zapewnione na rnych


poziomach zgodnoci.

"

osony XML s uywane do eksportu informacji z relacyjnej BD do XML

Standardy X/Open XA: definiuj zarzdzanie transakcjami ze wspomaganiem


protokou 2PC.

OLE-DB: API podobne do ODBC, ale wspomagajce rda nie-bazodanowe, takie


jak paskie pliki.
"

OLE-DB program moe negocjowa ze rdem danych aby znale wasnoci,


ktre ono podtrzymuje.

"

API jest podzbiorem SQL

Resource Description Framework (RDF): specyfikacja ontologii dla zasobw


Web.

Simple Object Access Protocol (SOAP): bazujcy na XML standard dla zdalnego
woania procedur (RPC). SOAP jest mniej elastyczny i uniwersalny w stosunku do
CORBA, ale pozostaje pytanie, czy a taka elastyczno i uniwersalno jest
potrzebna.
"

Uywa XML do zakodowania danych, HTTP jako protokou transportowego

"

Dalsze standardy s oparte na SOAP dla specyficznych aplikacji, np. OLAP i


Data Mining (standardy Microsoft'u)

37

38

Standardy czenia rozproszonych danych (3)


!

Object Data Management Group (ODMG) standard obiektowych baz danych


"

jest uywany w projektach przyszociowych zwizanych z rozproszonymi lub


federacyjnymi bazami danych, np. IRO/DB.

OMG CORBA (Common Object Request Broker Architecture) - najbardziej


uniwersalny standard obejmujcy ogromn liczb aspektw. W szczeglnoci,
notacja UML jest jego skadow. Pakiety ORB (Object Request Broker) s
oprogramowaniem realizujcym t architektur.

.NET/DCOM (Distributed Component Object Model) - standard Microsoftu


zintegrowany z systemami operacyjnymi Microsoftu. Znacznie ograniczony w
stosunku do standardu CORBA.

RMI (Remote Method Invocation) - oprogramowanie firmy Sun, ograniczone w


stosunku do standardu CORBA do oprogramowania pisanego w Java. Java
Beans i Enterprise Java Beans wykorzystuj RMI jako transport.

Metody dostpu do baz danych


sterowniki

39

40

Co to jest ODBC ?
Potrzeby ?
!

! Rne DBMS mog realizowa rne wersje SQL dla realizacji


jzykw definicji danych (DDL) i manipulacji danymi (DML).

! Interfejsy bezporedniego dostpu do tych DBMS, stworzone


przez rnych producentw, te mog si rni.

! Wskutek tego konsekwentnoci zapyta SQL do rnych baz


danych, rnych serwerw SQL mog te si rni. To znaczy,
np., e dla bazy danych w rodowisku ORACLE trzeba
konstruowa inne konsekwentnoci zapyta SQL ni dla tej
samej bazy w rodowisku INFORMIX.
! W celu usunicia tej wady firma MICROSOFT w 1992r
opracowaa standard ODBC (Open Database Connectivity).

!
!
!
!
!

41

Technologia ODBC wprowadza jedyny interfejs dostpu do rnych typw


baz danych.
Jzyk SQL jest wykorzystywany jako gwny uniwersalny dialekt wszystkich
baz danych.
Standard ODBC pozwala realizowa technologi Klient Serwer, ktra
realizuje gwne operacji przetwarzania danych na serwerze, a klient tylko
otrzymuje rezultaty.
Aplikacje nie s poczone z konkretnym interfejsem jakikolwiek DBMS, a
realizuj jedyny standard zapyta do menedera ODBC sterownikw
(ODBC-drivers).
Meneder ODBC podcza potrzebny ODBC sterownik, ktry jest stworzony
przez producenta konkretnej DBMS.
Dla podczenia ODBC sterownika trzeba stworzy profile ODBC w trybie
(Source ODBC) panelu sterowania systemu operacyjnego.
Teraz istnieje ponad 50 typw ODBC sterownikw dla rnych DBMS.
Standard ODBC pozwala realizowa zapytania SQL bezporednio z
programw uytkownika. W tym celu mona wykorzystywa dynamiczny
SQL.
42

Schemat wsppracy rnych narzdzi w


architekturze Klient Serwer w sieci LAN

Architektura ODBC
Application 1

...

Application 2

!Aplikacja na stancji
klienta realizuje zapytania
do baz danych przez ODBC
Manager.

Application N

The manager of
drivers ODBC

Driver
ODBC
ACCESS

Source of data
ODBC
ACCESS

Driver
ODBC
SYBASE

Source of data
ODBC
SYBASE

...

!Zapytania mog by dla


lokalnej bazy danych lub do
baz danych umieszczonych
na innych serwerach sieci
lokalnej.

Driver
ODBC
ORACLE

Source of data
ODBC
ORACLE

!Na rys. pokazano trasy


wszystkich zapyta.

...

Client
application

Client MS Windows

ODBC driver
manager
ODBC
driver local
data

text
ODBC
driver
DBMS-2

ODBC
driver
DBMS-1

Server 1
DBMS - 1

File
System

Net Driver
Net Driver

Local Disk
LocalNet

Server 2
DBMS - 2

Fig. 33

Net Driver

Fig. 34

43

Gwne wady technologii dostpu do


baz danych przez ODBC

Uniwersalne strategie dostpu


" Technologia ODBC firmy Microsoft zaopatrzy oglny interfejs
dostpu do baz danych, ktre s kompatybilne przez SQL.
" Kada baza danych majca interfejs ODBC zawiera sterownik
(driver) , ktry realizuje bezporednio ten interfejs.
" Interfejs zawiera bibliotek funkcji specjalnych napisanych w
jzyku C++ .
" Zastosowanie tej biblioteki moe by wad przy realizacji
dostpu aplikacji stworzonych w innym rodowisku jzykw
oprogramowania.
" eby usuwa te wady rni producenci tworz specjalne
komponenty obiektowe dostpu do baz danych.

" Aplikacje s przystosowane do platformy


MS Windows
" Wzrasta czas obrbki zapyta dziki
dodatkowej warstwie programw.
" Jest potrzebna wczeniejsza instalacja
ODBC sterownika, profile ODBC dla
kadej stacji. Parametry tej instalacji s
statyczne i uytkownik nie moe ich
zmieni.
45

46

Przykad komponentw firmy


Microsoft

Przykad komponentw firmy


Microsoft cd
"

User Aplication

DAO (RDO)

44

ADO

OLE DB

ODBC

"

DB SQL
Fig 35

47

Obiektowy model DAO (Data Access Objects) jest przeznaczony w rodowiskach


Microsoft Access oraz Visual C++. DAO zawiera obiekty baz danych (component
DataBase), obiekty tabel(component TableDef), obiekty definicji kwerend
(component QueryDef), obiekty rezultatw zapyta do bazy danych (component
RecordSet) oraz inne obiekty. Model DAO jest przeznaczony przede wszystkim dla
dostpu do baz danych Access. Ten model nie odpowiada wszystkim standardom
oraz specyfikacjom SQL . Ten model teraz jest zamieniony nowym modelem RDO
(Remote Data Obiekt). RDO wchodzi do Visual Basica, Visual FoxPro oraz do
Microsoft SQL Servera.
Firma Microsoft zaproponowaa zbir obiektw OLE DB( Object Linking and
Embedding for DataBase), ktry pozwala aplikacjom wykorzystywa oraz sterowa
danymi w bazach danych przez swoje obiekty. Technologia OLE DB gwarantuje
dostp do jakikolwiek baz danych wcznie nie relacyjne modeli danych. Oprcz
tego przez OLE DB mona udostpni dane do plikowych oraz pocztowych
systemw, graficznych plikw, innych obiektw stworzonych w rnych aplikacjach.
Technologia OLE DB jest obiektowo - orientowana specyfikacja na podstawie C++
48
API.

Przykad komponentw firmy


Microsoft cd

Przykad komponentw firmy


Microsoft cd
!

!
Technologia ADO (Active Data Obiects) to jest rozwizanie technologii
ASP dostpu do baz danych, ktre jest realizowane we WWW
serwerze IIS (Internet Information Server) firmy Microsoft. Technologia
ADO zawiera wszystkie lepsze cechy technologii RDO oraz DAO i
musi zamieni te ostanie technologie. Technologia ADO zawiera
nastpne funkcje:
" Stworzenia niezalenych obiektw baz danych
" Wsparcie zapamitanych procedur baz danych
" Stworzenia kursorw dostpu do danych
" Wsparcie mechanizmw transakcji.
! Gwnymi zaletami technologii ADO s nie komplikowane
wykorzystanie, prdko, mae obcigi RAM oraz dysku.

"
"
"

Model obiektowy ADO zawiera 6 gwnych klasy obiektw:


" CONNECTION
" COMMAND
" PARAMETERS
" RECORDSET
" FIELDS
" ERRORS.
Obiekt CONNECTION poczy zwizek pomidzy aplikacj oraz rdem danych. Utworzenia
takiego poczenia zawsze jest pierwszym etapem obsugi bazy. Ten obiekt pozwala take
uruchomi instrukcje SQL. Dla zachowywania rezultatw instrukcji trzeba stworzy obiekt
klasy RECORDSET. Klasa CONNECTION zawiera nastpne metody:
Open( ) , Close( ) poczenie lub wyczenia ze rdem danych
Execute( ) uruchomienie instrukcji dla wyznaczonego poczenia
BeginTrans( ), CommitTrans( ) oraz RollbackTrans( ) sterowanie transakcjami dla
danego poczenia.

49

50

Przykad komponentw firmy


Microsoft cd
Connect
Open()
Execute( )
BeginTrans()
CommitTrans( )
RollbackTrans ( )

Errors

Przykad komponentw firmy


Microsoft cd
!

Error

Command
Execute ( )
CreateParametr ()

Parameters

Recordset
BOF
EOF
RecordCount
MoveFirst ( )
MoveLast ( )
MoveNext ()
MovePrevious ()
Move()
AddNew ()
UpDate ()
Delete ()
Open()
Close()

Append ( )
Delete ( )
Item ()
Refresh ()

Parameter

Obiekt COMMAND zawiera instrukcj SQL lub wywoanie zapamitanej procedury.


Ten obiekt moe mie kolekcj parametrw, ktre mog by zadane przez obiekty
klasy PARAMETER. Klasa COMMAND zawiera nastpne metody:
" Execute( ) uruchomianie instrukcji dla danego poczenia
" CreateParameter( ) tworzenie nowego parametru (obiektu klasy
PARAMETER)
Kolekcja PARAMETERS zawiera wszystkie parametry, ktre s wykorzystywane
razem z danym obiektem COMMAND. Parametry te s przechowywane w
obiektach klasy PARAMETER. Klasa PARAMETERS zawiera nastpne metody:
" Append(), Delete() dodawanie (usuwanie) parametru dla danej kolekcji
" Item() wywoanie wyznaczonego obiektu PARAMETR
" Refresh() wywoanie informacji pro parametry waciciela zapamitanej
procedury.

Fields
Fig 36
Field

51

Przykad komponentw firmy


Microsoft cd

52

Przykad komponentw firmy


Microsoft cd

! Obiekt RECORDSET pozwala na operowania danymi przechowywanymi


w tabeli.
! Obiekt ten zawiera zbir rekordw pobranych z tabeli. Pozwala on na
odczytywanie danych przechowanych w tabeli, modyfikowanie ich oraz
gromadzenie informacji, jakie maj by dodane do bazy.
! Aktualne analizowany rekord oraz jego pooenie wzgldem pozostaych
rekordw zbioru okrelane przez kursor bazy danych.
! Kursor to jest obiekt zawierajcy rezultat polecenia do bazy danych.
! Przy stworzeniu obiektu RECORDSET wskanik rekordu biecego
kursora odwzorowuje pierwszy rekord zbioru, a atrybuty BOF oraz EOF
otrzymaj wartoci FALSE. Kiedy zbir jest pusty atrybut RecordCount
otrzyma warto 0 (zero), lecz BOF oraz EOF wartoci TRUE.
53

Klasa RECORDSET zawiera nastpne metody:


! MoveFirst(), MoveLast(), MoveNext(), MovePrevious() oraz Move()
przesuwaj wskanik rekordu biecego. Obiektami RECORDSET s
kursory, ktre mog by sterowanymi tylko w jednym kierunku lub w dwch
kierunkach zbioru rekordw. W przypadku jednokierunkowego kursora
mona przechodzi jedynie do nastpnego rekordu zbioru, nie istnieje
moliwoci cofania si do poprzedniego wiersza lub przeskakiwania o kilka
rekordw do przodu lub do tylu zbioru. Tutaj moe by wykorzystywana
tylko metoda MoveNext(). Dla wyznaczenia koca lub pocztku rekordw
trzeba wykorzysta atrybuty BOF oraz EOF obiektu RECORDSET.
! AddNew(), Update() oraz Delete() dodawanie nowych rekordw,
aktualizacja oraz usuwanie istniejcych rekordw, ktre jest zwizane z
obiektem REKORDSET.
! Open(), oraz Close() uruchomienie (Zamknicie ) kursora, ktry
reprezentuje rezultaty instrukcji, ktra jest poprzednio stworzona przez
obiekt COMMAND. Metoda Open() odsya na ju stworzony obiekt
CONNECT.
54

Przykad komponentw firmy


Microsoft cd

Przykad komponentw firmy


Microsoft cd

! Kady obiekt RECORDSET zawiera kolekcj FILDS, ktra s zbiorem


obiektw klasy FIELD. Kady obiekt FIELD reprezentuje jedn
kolumn tabeli danych. Na kady obiekt FIELD w kolekcji FIELDS
mona odwala przez nazw lub liczb numeryczn.
! Kolekcja ERRORS jest stworzona dla zachowywania informacji pro
jakikolwiek bdy. Obiekt ERROR reprezentuje bd wygenerowany
przez rdo danych. Kolekcja ERRORS jest uywana w sytuacji, gdy
jedno wywoanie metody moe wygenerowa wiksz ilo bdw.
! Przy stworzeniu obiektu RECORDSET mona wykorzysta dwa typy
kursorw: jednokierunkowy lub dwukierunkowy. Podczas wywoania
metody Open() obiektu RECORDSET domylnie tworzony jest kursor
jednokierunkowy. Kursor tego typu jest najbardziej efektywny, jednak
oferuje ograniczone moliwoci poszukiwania si po zbiorze rekordw
.

Dwukierunkowe kursory zawieraj nastpne typy:


! Statyczny. Wyniki wykonania zapytania s przechowywane w tabeli
tymczasowej, ktrej wierszy nie s modyfikowane w momencie, gdy
kursor jest otwarty.
! Zbir kluczy. Kursory tego typu zapisuj w tymczasowej bazie danych
klucze wszystkich wierszy zwrconych w wyniku wykonania polecenia.
Dziki przechowywaniu jedynie kluczy, wszelkie modyfikacj rekordw
wykonane w czasie gdy kursor jest otwarty, bd zauwaane.
! Dynamiczny. W przypadku uycia kursora dynamicznego za kadym
razem, gdy zadamy nowego rekordu, polecenie okrelajce
zawarto zwracanych wynikw jest ponownie wykonywane. Oznacza
to, e wszelkie modyfikacje wprowadzane w tabeli bazy danych bd
widoczne, a co wicej, dodanie nowego rekordu moe mie wpyw na
zawarto wynikowego zbioru rekordw.

55

Dostp w Jawie przez JDBC sterownik

56

JDBC - sterownik

! Java, jako nowoczesny jzyk programowania, posiada m.in.


moliwoci zwizane z podczeniem si i operowaniem na bazach
danych.
! Jednak zaoeniem projektantw Javy byo stworzenie jzyka, ktrego
kod byby przenony midzy rnymi systemami operacyjnymi. Tak
przenono posiada Java w dziedzinie zastosowa aplikacji
bazodanowych.
! Java take wykorzysta technologi ODBC. Zostaa ona realizowana
jako interfejs niezaleny od architektury bazy danych i ma nazw JDBC
(ang. Java DataBase Connectivity).
! JDBC jest pomostem pomidzy przestrzeniami bazy danych, majc
sterownik ODBC, i aplikacji, napisanej w jzyku Java. Interfejs ten
operuje na poziomie SQL.
! Dziki JDBC aplikacje bazodanowe napisane w Javie s niezalene
od sprztu oraz stosowanej bazy danych. Niezaleno od systemu
operacyjnego zapewnia sama Java.

! Sterownikiem JDBC, czcym aplikacj z konkretn baz


danych, nazywa si zestaw klas, ktre implementuj interfejs
ODBC. Zadaniem JDBC jest ukrycie przez programista wszelkich
specyficznych wasnoci bazy danych. Dziki temu programista
moe skupi si wyczne na swojej aplikacji, nie wdajc si w
szczegy zwizane z obsug uywanej przez niego bazy
danych.
! Aby umoliwi niezaleno od platformy, JDBC udostpnia
menedera sterownikw ODBC, ktry dynamiczne zarzdza
rnymi obiektami sterownikw. Obiekty te bd wykorzystywa
zapytania do bazy danych.

57

JDBC - sterownik kolejno


czynnoci
Kolejno dostpu do bazy danych zawiera nastpne czynoci:
1) Zaadowa do pamici potrzebny sterownik JDBC. To mona zdarzy nastpnym
sposobem:
Class.forName ("sun. jdbc.odbc.JdbcOdbcDriver")
! Argumentem metody forName() jest obiekt typu STRING. Jest on nazw klasy
sterownika wraz z nazw pakietu, ktry trzeba zaadowa. Po zaadowaniu
sterownik staje si dostpnym dla aplikacji.
2) Dla poczenia z baz danych wykorzystaj konstrukcj :
DriverManager.getConnection(url,user,password)
! Pierwszy parametr w metodzie getConnection() to URL do bazy danych. Pozwala
on na identyfikacj bazy danych w taki sposb, e moliwe jest zaadowanie do
pamici odpowiedniego sterownika ODBC i uzyskanie poczenia z baz. Drugi i
trzeci parametry oznaczaj odpowiednio nazw uytkownika bazy danych i haso
dostpu do niej. Jeeli baza danych nie potrzebuje identyfikatora oraz hasa, drugi
oraz trzeci parametry s nieobecne. Standartowa skadnia URLa jest nastpujca:
jdbc:<subprotok>:<subnazwa>.
! JDBC to typ protoku, subprotok okrela nazw wykorzystanego sterownika (w
tym wypadku ODBC), subnazwa jest nazw identyfikujc baz danych, nazwa
profilu ODBC. Przykad poczenia z baz danych:
! Connection con;
! String url = "jdbc:odbc:biblio";
59
!
! con = DriverManager.getConnection(url);

58

JDBC - sterownik kolejno


czynnoci cd
3) Wykona zapytanie SQL do bazy danych. Dla wykonania zapytania
SQL do bazy danych, mamy do wyboru jeden z interfejsw:
Statement, PreparedStatement lub CallableStatement. Wszystkie
trzy su zasadniczo jednemu: wykonaniu zapytania SQL-owego.
! Tworzenie obiektw z grupy Statement ma nastpujc posta:
Statement stmt;
gdzie stmt = con.createStatement();
! Obiektu Statement uywamy do wykonania zapyta SQL. Rezultaty
zapytania s przechowywane w obiektu ResultSet:
! String query; // wiersz operatora SQL
! query = "SELECT FROMWHERE;
! ResultSet rs; // pole dla rezultatu zapytania SQL
! rs = stmt.executeQuery(query);
60

10

JDBC - sterownik kolejno


czynnoci cd

JDBC - sterownik kolejno


czynnoci cd

Struktura JDBC

4) Wywola dane ze zbioru skutecznego. Obiekt ResultSet


reprezentuje wynik zapytania SQL i zawiera zbir rekordw z
danymi. Stosujc metod next() tego obiektu, moemy mie
dostp do wszystkich danych:
! more = rs.next();
! Zatem stosujc metod getXXX(nazwa_pola) trzeba zdarzy
dostp do danych biecego rekordu. Na przykad:
While (rs.next())
{
Int x
= rs.getInt (pole1);
String s =rs.getString (pole2);
Float f = rs.getFloat (pole3);
}

ResultSet

ResultSet

ResultSet

Statement

PreparedStatement

CallableStatement

Connection

DriverManager

Oracle
Driver

JDBC-ODBC
Driver

...

ODBC Driver

BD

BD

BD

Fig 37

61

JDBC - przykady uycia

JDBC - przykady uycia cd..

Podczas dziaania aplikacji bazodanowej mog wystpi rnego rodzaju sytuacje


powodujce, e okrelone operacje na bazie zakocz si niepowodzeniem. Dlatego
wane jest, aby aplikacja potrafia obsuy tego typu zdarzenia. Pomocny okazuje
si mechanizm obsugi wyjtkw. W takich przypadkach wykorzystujemy klas
SQLException.
! Przykad stworzenia tablicy w aplikacji JAVA
//---------------------------------------------------------------------------------package jdbc;
import java.sql.*;
// Stworzenie tablicy w bazie danych biblio.
// Najpierw trzeba stworzy ODBC profile
// bazy danych biblio.
// Do tej bazy aplikacja umieszczona poniej dodaje now tabel SKLEP
public class JdbcCreateTable {
public static void main(String args[]) {
String url = "jdbc:odbc:biblio";
Connection con;
String createString;
createString = "create table SKLEP " +
"(SKL_NAME varchar(32), " +"SkL_ID int, " +
"SKL_ADDR varchar(32), " +"SKL_INV varchar(32))";
63

JDBC - przykady uycia cd..


//---------------------------------------------------------------------------------Przykad konstruowania zapyta do bazy danych w aplikacji Java
//---------------------------------------------------------------------------------import java.sql.*;
// Wykorzystanie pakietu Jdbc w bazie danych biblio
// Najpierw trzeba stworzy ODBC profile
//bazy danych biblio
public class JdbcExample {
// Deklaruje si obiekt poczenia z baz danych
static Connection dbcon;
/* Podprogram gwny*/
public static void main(String args[]) throws Exception {
// Uruchomienie ODBC sterownika (bryda Java ODBC)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// otworzenie bazy danych
open ();
// Odwzorowanie wszystkich wierszy w bazie
select ("And Authors.Au_ID < 20 )");
// Uaktualnienie rekordw oraz formowanie rezultatu
update ();
// zamknicie bazy danych
close();}

62

Statement stmt;
try {
// Uruchomienie ODBC sterownika (bryda Java ODBC)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch(java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}
try {
// Realizujemy poczenie z baz biblio
con = DriverManager.getConnection(url);
//tworzymy obiekt Statement dla przeniesienia SQL instrukcji
stmt = con.createStatement();
// uruchomienie instrukcji
stmt.executeUpdate(createString);
// usunicie objektw
stmt.close();
con.close();
} catch(SQLException ex) {
System.err.println("SQLException: " + ex.getMessage());
}}}

64

JDBC - przykady uycia cd..

65

// Odwzorowanie wszystkich wierszy w bazie


select ("And Authors.Au_ID < 20 )");
// Uaktualnienie rekordw oraz formowanie rezultatu
update ();
// zamknicie bazy danych
close();
}
/* otworzy poczenie z baz danych */
static void open() throws SQLException {
/* Zada imi rda ODBC, nazwiska uytkownika i hasa
String dsn = "jdbc:odbc:biblio";
String user = "";
String password = "";
/* Uruchomienie menedera sterownika dla poczenia
dbcon = DriverManager.getConnection(dsn,user,password);
/* Domylnie fiksacja transakcji jest dokonywana automatycznie, dla tego
funkcja AutoCommit() jest odczona */
dbcon.setAutoCommit(false);
}
/* okrelenie wszystkich czekajcych na zakoczenie transakcji oraz zamknicie
bazy danych */
static void close() throws SQLException {
dbcon.commit();
66
dbcon.close(); }

11

JDBC - przykady uycia cd..

JDBC - przykady uycia cd..

// Odwzorowanie wszystkich wierszy w bazie


/* okrelenie wszystkich czekajcych na zakoczenie transakcji oraz zamknicie bazy
danych */
static void close() throws SQLException {
dbcon.commit();
dbcon.close();
}
/* Otrzymanie zapyta SQL z klauzul WHERE*/
static void select(String whereClause) throws SQLException {
Statement stmt; //Obiekt operatora SQL
String query; // wiersz operatora SQL
ResultSet rs; // pole dla rezultatu zapytania SQL
String pr;
boolean more; // przecznik "wiersze dodatkowe s obecne
/* Przygotowanie zapytania SQL , konstruowanie operatora SQL, wypenienie
zapytania SQL */
//query = "SELECT Authors.Author FROM Authors WHERE (Au_ID < 20 // );";
query = "SELECT Authors.Author, Titles.Title, Publishers.`Company Name` ";
query = query + "FROM Authors, `Title Author`, Titles, Publishers ";
query = query + "WHERE (Authors.Au_ID = `Title Author`.Au_ID AND ";
query = query + "`Title Author`.ISBN = Titles.ISBN AND ";
query = query + "Titles.PubID = Publishers.PubID " + whereClause;
stmt = dbcon.createStatement();
67
rs = stmt.executeQuery(query);

/* sprawdzenie obecnoci wierszy, ktre bd zwrcone */


more = rs.next();
if (!more) { System.out.println("No rows found"); return; }
/* Cykl dla obrbki wierzy, ktre s wybrane */
while (more) {
pr = rs.getString("Author");
System.out.println("Autor: " + pr);
pr = rs.getString("Title");
System.out.println("Title: " + pr);
pr = rs.getString("Company Name");
System.out.println("Publishers: " + pr);
System.out.println("");
more = rs.next();
}
rs.close();
stmt.close();
}
/* Otrzymanie zapyta SQL bez klauzuli WHERE*/
static void select() throws SQLException {
select(""); } }

68

Przykadowa architektura klient


serwer w PostgreSQL
SERWER

Linux

Windows

69

KLIENT

Poczenie

POSTMASTER

Poczenie
POSTMASTER

KLIENT
KLIENT

Wielu klientw

ODBC

UNIX

Rozproszone bazy danych a


technologie dostpu

BAZA
DANYCH

Dostp
POSTMASTER

Wiele operacji dostpu jednoczenie

Konieczno dostpu do bd z www

Identyfikacja rde danych

! Protok HTTP (Hypertext Transfer Protocol)


! Dostp do informacji w postaci stron WWW

! URL (Uniform Resource Locator) - uniwersalny


sposb lokalizacji zasobw

! Informacja prezentowana w sposb nieliniowy (hipertekst)

! Struktura URL:

! Prezentacja rnych typw informacji (tekst, grafika, wykres,


wideo)

70

" usuga://adres_serwera (http://pluton.pol.lublin.pl)


" usuga:uytkownik@adres_serwera
(mailto:piotrm@pluton.pol.lublin.pl)
" usuga://adres_serwera/katalog (ftp://ftp.wspa.lublin.pl)
" usuga://adres _serwera/katalog/dokument
(http://pluton.pol.lublin.pl/wti.htm)

! Znajomo adresu serwera lub strony jako warunek konieczny


pozyskania informacji
! Przegldarka - sposb dostpu do informacji

! Wykorzystanie:
" odnoniki do innych stron WWW (linki)
" odnoniki do innych usug sieciowych
71

72

12

Metody dynamicznego dostpu do baz


danych z poziomu WWW

Identyfikacja rde danych a bd


w internecie
! Dostp bezporedni do rda:
" znajomo adresu serwera WWW
" nawigacja midzy stronami WWW w obrbie danego serwera
! Dostp poredni:
" polskie portale (Onet, Wirtualna Polska, Interia, ...)
" wyszukiwarki sieciowe (Altavista, Yahoo, Infoseek, Lycos, ...)
! Zalety dostpu statycznego:
" prosty sposb wyszukiwania
" duy wybr rnych informacji
! Wady:
" dugi czas poszukiwania informacji
" dostp tylko do wybranych rde informacji

Technologie dynamicznego generowania witryn:


! CGI (ang. Common Gateway Interface)
! SSI (ang. Server Side Includes)
! ISAPI (ang. Internet Server API)
! PHP (ang. PHP Hypertext Preprocessor)
! ASP klasyczne (ang. Classic ASP)
! CFML (ang. ColdFusion Markup Language)
! Roxen CMS (ang. Roxen Content Management Solution)
! Serwlety (ang. servlets) oraz JSP (ang. Java Server Pages)
! ASP.NET (ang. Active Server Pages .NET)

73

Statyczny witryny internetowe w


dostpie do rde danych

74

Rne metody generacji

Serwer

$ Niskopoziomowe API serwera aplikacji (np. CGI, ISAPI). Oglna


zasada polega na wywoywaniu zewntrznych programw, ktre
zwracaj nastpnie wyniki swojego dziaania do serwera aplikacji
WWW w postaci kodu HTML
$ Interpretowane skrypty (np. PHP, ASP klasyczne). Bezporednio w
kodzie strony, zanurzany jest skrypt, ktry po wykonaniu si na
serwerze, wywietlany jest na maszynie klienta
$ Kompilowane programy (JSP serwlety i ASP.NET). Strony blisko
kooperuj z kompilowanym kodem (np. kod zakulisowy w ASP.NET
oraz komponenty logiki biznesowej). Strony rwnie podlegaj
kompilacji. Raz skompilowany element aplikacji rezyduje na
serwerze, generujc zawarto stron przy kadym daniu.

Klient

Strona
HTML

Zapytanie
o stron HTML

4 Odpowied
strona HTML

3
Serwer przetwarza
danie

# Wykorzystanie dojrzaych protokow TCP/IP


# Opracowanie podstawowych protokow i standardw stron WWW
(HTTP, URL, HTML/XHTML)
# Brak wikszej interakcji pomidzy serwerem WWW, a klientem
# Statyczna zawarto witryn
75

ASP klasyczne schemat dziaania

Programowe interfejsy baz danych


#Potrzeba programowego interfejsu baz danych
#Wielo rnych rozwiza. Przykady:

Serwer

# ODBC (ang. Open Database


Connectivity)
# DAO (ang. Data Access Objects)
# RDO (ang. Remote Data Objects)
# OLE DB (ang. Object Linking and
Embedding Database)
# ADO (ang. ActiveX Data Objects)
# ADO.NET (ang. ActiveX Data Objects
.NET)
# JDBC (ang. Java Database Connectivity)

2
Skrypt
ASP

Klient
1 Zapytanie o
stron ASP

3
ASP.DLL

Odpowied
5
strona HTML

76

4
Strona
HTML

77

78

13

Technologia ADO.NET

ADO.NET warstwy dostpu do danych

! Integralny element platformy .NET


! Moe by wykorzystana jako rodzaj wysokopoziomej nakadki
ODBC lub OLE DB
! Bezpoczeniowa architektura
! Przejrzysta struktura obiektowa
! cisa wsppraca ze standardem XML
! Efektywne wywoywanie procedur skadowanych
! Obsuga ODBC, OLE DB oraz bezporednich interfejsw
bazodanowych, wybranych systemw (SQL Server, Oracle)
! ADO.NET jest wykorzystywane przez ASP.NET

Kodaplikacji
aplikacji
Kod

ObiektDataAdapter
DataAdapterlub
lubCommand
Command
Obiekt

ObiektConnection
Connection
Obiekt
Dostawca.NET
.NET
Dostawca
dlaOracle
Oracle
dla

Dostawca.NET
.NET
Dostawca
dlaSQL
SQLServer
Server
dla

Oracle

SQL
Server

Dostawca.NET
.NET
Dostawca
dlaOLE
OLEDB
DB
dla

Dostawca.NET
.NET
Dostawca
dlaODBC
ODBC
dla

OLEDB
DB
OLE

ODBC
ODBC

Baza
danych

Baza
danych

79

Architektura ADO.NET

.NET Framework Data Provider


Connection
Transaction

DataAdapter
SelectCommand

Architektura aplikacji baz danych


DataSet
DataTableCollection
DataTable

InsertCommand

DataRowCollection

Parameters

UpdateCommand

DataColumnCollection

DataReader

DeleteCommand

Command

80

ConstraintCollection
DataRelationCollection

Baza
danych

XML

81

Wnioski

82

Platforma.NET

! Nierozczna wsppraca technologii dynamicznego


generowania witryn z interfejsami baz danych
! Najpopularniejsze, niekomercyjne rozwizanie: PHP + MySQL
lub PostgreSQL + Apache + Linux
! Technologie stosowane tam gdzie najwaniejszym
priorytetem jest bezpieczestwo, wydajno i przejrzysto
rozwijanego projektu: JSP oraz ASP.NET
! Inne popularne rozwizania: ASP klasyczne, CFML

83

Najwaniejsze zaoenia:
! Zintegrowanie technologii programistycznych w postaci
jednej platformy
! Wsppraca wielu jzykw programowania
! Wsppraca wielu rnych architektur, zarwno
sprztowych
jak i systemowych (na razie ograniczona)
! Prba ustanowienia standardu przemysowego
(najwaniejsze elementy s standardami ECMA)

84

14

Model wykonawczy platformy .NET


Platforma.NET najwaniejsze pojcia
Kompilacja

Kodrdowy
rdowy
Kod

! CLR (ang. Common Language Runtime)


! BCL (ang. Base Class Library)
! MSIL (ang. Microsoft Intermediate Language)
! CLS (ang. Common Language Specification)
! CTS (ang. Common Type System)
! Podzesp (ang. assembly)
! Kompilator JIT (ang. Just-In-Time compiler)

Komponent niezarzdzany
Kodnatywny
natywny
Kod

Kompilator
Kompilator

Kodporedni
poredniILIL++metadane
metadane
Kod

Wykonanie

CLR
Kompilator kodu
poredniego

Kodnatywny
natywny
Kod

Systemoperacyjny
operacyjny
System
85

86

Architektura platformy .NET


rodowisko uruchomieniowe
C#
C#

VB
VB

C++
C++

Python
Python

J#
J#

itd.
itd.

CLR jest agentem odpowiedzialnym za:


" Zarzdzanie kodem podczas jego wykonywania
" Zarzdzanie pamici (mechanizm GC)
" Zarzdzanie wtkami
" Wymuszenie zgodnoci typw pomidzy rnymi jzykami
programowania
" Kompilacja
" Niedopuszczenie do uycia potencjalnie niebezpiecznego kodu
(np. wskanikw zmiennych)

Wsplnaspecyfikacja
specyfikacjajzykw
jzykw(CLS)
(CLS)
Wsplna

Strony
Strony
ASP.NET
ASP.NET

Architektura platformy .NET

FormularzeWindows
Windows
Formularze

AplikacjeASP.NET
ASP.NET
Aplikacje
ADO.NETi XML
i XML
ADO.NET
Bibliotekapodstawowa
podstawowa(BCL)
(BCL)
Biblioteka

Visual
VisualStudio
Studio.NET
.NET(lub
(lubinne
inneIDE)
IDE)

Jzykporedni
poredni(MSIL)
(MSIL)
Jzyk
Web
Web
services
services

rodowiskouruchomieniowe
uruchomieniowe(CLR)
(CLR)
rodowisko
Systemoperacyjny
operacyjnyWindows
Windows
System
87

88

Podzesp

Wsplny System Typw (CTS)

" Podstawowa jednostka wdroeniowa .NET


" Zawiera kod poredni MSIL, niezaleny od procesora (moe by
zaleny od OS)
" Jest to komponent samoopisujcy si (metadane)
" Nie wymaga rejestracji w systemie (instalacja xcopy)
" Moe by dzielony (podobnie jak standardowe DLL) przez wiele
aplikacji

" Umoliwia integracj wielu jzykw programowania


" Dwa podstawowe rodzaje typw:
# Typy wartoci
# Typy referencyjne
" Opakowywanie zmiennej (ang. boxing)
" Brak wskanikw (zmiennych i funkcji)
" Delegaty

89

90

15

Klasyfikacja typw .NET

Wsppraca wielu jzykw CLI


! Wsplna Infrastruktura Jzykowa CLI (ang. Common Language
Infrastructure) skada si z CLR i CLS. Jest publicznie
dostpna; kady moe opracowa kompilator JIT dla dowolnego
jzyka tak by by zgodny z platform .NET
! Faworyzacja jzykw podobnych do C#
! Jzyki programowania .NET w efekcie rni si pomidzy sob
tylko notacj (dialekty jzykw oryginalnych). Przykad: jzyk
Smalltalk, z dynamicznym typowniem
! Standard ECMA (wraz z jzykiem C#)
! Dostpnych ponad dwadziecia jzykw programowania na
platformie .NET (np. C++, C#, J#, Visual Basic, Smalltalk,
Python, Perl, Pascal, Eiffel, Fortran)

Typ

Typy wartoci

Wbudowane typy
wartoci

Typy referencyjne

Typy samoopisujce si

Typy interfejsw

Typy wartoci
uytkownika

Typy wskanikowe

Typy klas

Typy tablic

Typy wyliczeniowe

Typy spakowanych
wartoci

Delegaty

Typy uytkownika

91

.NET vs J2EE

92

Technologia ASP.NET
! Wany element architektury .NET
! Kompilowany kod wydajno
! Separacja kodu prezentacji od kodu obsugi strony
(kod zakulisowy); komponenty biznesowe
! Rozbudowane mechanizmy buforowania stron i
danych
! Wielo stosowanych jzykw programowania
! Obsuga elektronicznych urzdze przenonych
(telefony komrkowe, PDA)
! Wysoka produktywno
! Duy poziom bezpieczestwa
! Naturalna wsppraca z bazami danych i XML

! Trudno wskaza jednoznacznie lepsz platform


! J2EE bardziej dojrzaa (zaprezentowana w 1999 roku) i
szerzej akceptowana w przemyle
! .NET posiada bardziej przejrzyst architektur
! J2EE wsppracuje z najwaniejszymi systemami
operacyjnymi, .NET gwnie MS Windows
! .NET umoliwia wspprac wielu jzykw, J2EE ogranicza
si praktycznie tylko do jzyka Java
! .NET oferuje lepsz produktywno

93

Formularze ASP.NET (ang. Web forms)

94

Kod zakulisowy web forms


MojFormularz.aspx.cs

! Podstawowy element budulcowy aplikacji


ASP.NET
! Separacja kodu interfejsu od jego obsugi
! Obiektowy model projektowania
! Moliwo wykorzystania kodu client-side
do walidacji danych uytkownika

Class MojFormularz
MojFormularz.aspx

Witaj

MojFormularz

Witaj
Imi:

Imi:

Haso:
Haso:
OK
OK

OK
OK

Te dwa pliki tworz razem formularz internetowy

95

96

16

Cykl ycia formularza ASP.NET

Struktura ASP.NET web forms


Projektowanie

Przegldarka
internetowa

Wykonanie

Serwer

(Koszyk.aspx)

System.Web.UI.Page
System.Web.UI.Page

Koszyk

Dziedziczenie
WebForm1.cs
WebForm1.cs
Kompilacja

(Koszyk.aspx.cs)

Dodaj
Dodaj

Mka

Dodaj
Dodaj

Cukier

Dodaj
Dodaj

Sl

Przycisk Dodaj
wysya danie na
serwer

ObsluzStrone();
PobierzWybProdukt();
DodajDoKoszyka();
StworzNowaStrone();
Odswiez();

Dziedziczenie

Projekt.dll
KlasaWebForm1
WebForm1
Klasa

Serwer wykonuje
danie

WebForm1.aspx
WebForm1.aspx

temporary.dll
temporary.dll

Koszyk
Strona
HTML

Wynik do przegldarki lub


urzdzenia

Dodaj
Dodaj

Mka

Dodaj
Dodaj

Cukier

Dodaj
Dodaj

Sl

w wyniku ktrego
do przegldarki
wracana jest nowa
strona

97

98

Zarzdzanie stanem

Zarzdzanie stanem (c.d.)

! Potrzeba zarzdzania stanem; HTTP jako tzw.


stateless protocol
! Dwie generalne metody zarzdzania stanem:
" Po stronie klienta (np. cookies, query strings)
" Po stronie serwera (np. wsparcie serwera aplikacji
oraz baz danych)
! Kade podejcie ma swoje wady i zalety; strategi
naley dobiera cile do konkretnych wymaga
! Aspekt bezpieczestwa

Przykady metod zarzdzania stanem:


! Widok stanu
! Ukryte pola formularzy HTML
! Ciasteczka (ang. cookies)
! Cigi zapyta (ang. query strings)
! Stan aplikacji
! Utrzymanie stanu z uyciem baz danych

99

100

Kontrolki serwerowe

Dostp do danych w ASP.NET

! Analogiczne do kontrolek aplikacji desk-top


! Sze grup kontrolek serwerowych ASP.NET:
" Serwerowe kontrolki HTML
" Serwerowe kontrolki internetowe
" Kontrolki walidacyjne
" Kontrolki uytkownika
" Dostosowane kontrolki internetowe
" Mobilne kontrolki ASP.NET

! Wykorzystanie technologii ADO.NET jako interfejsu


bazodanowego programisty
! Bezpoczeniowy model klient-serwer; potrzeba cyklu
podry w obie strony (ang. round trip)
! Czstsze odczytywanie danych anieli ich zapis
! Minimalizowanie konsumpcji zasobw serwera
! Dostp do danych z uyciem rozproszonego
przetwarzania
! Zapewnienie odpowiedniego poziomu
bezpieczestwa danych
! Znaczenie procedur skadowanych po stronie serwera
bazy danych w aplikacjach internetowych
101

102

17

Mechanizmy buforowania

Konfiguracja rodowiska ASP.NET

! Znaczenie buforowania
! Dwa zasadnicze podjecia:
" Buforowanie wyjcia (ang. output
caching)
" Buforowanie danych aplikacji (ang.
application data caching)
! Buforowanie fragmentw strony

! Pliki konfiguracyjne w standardzie XML


! Moliwo wspistnienia wielu plikw
konfiguracyjnych Web.config w ramach jednej
aplikacji
! Znaczenie pliku Machine.config
! Dziedziczenie ustawie w hierarchii katalogw
wirtualnych serwera aplikacji internetowej
! Moliwo zmiany konfiguracji w dziaajcej aplikacji,
bez potrzeby restartu serwera
! Rozszerzalno plikw konfiguracyjnych jako plikw
XML
! Ochrona przed niepowoanym dostpem do plikw
konfiguracyjnych z zewntrz
104

103

Bezpieczestwo aplikacji ASP.NET


! Aspekt bezpieczestwa w aplikacjach internetowych
! Dwa fundamentalne procesy:
" Uwierzytelnianie (ang. authentication) sprawdzenie
tosamoci danego uytkownika w systemie
" Autoryzacja (ang. authorization) okrelenie do
jakich danych moe mie dostp uwierzytelniony
uytkownik
! Uwierzytelnianie moe nastpowa poprzez:
" System Windows
" Formularze ASP.NET
" Usug Passport

Bezpieczestwo aplikacji ASP.NET (c.d)


!Architektura ASP.NET
Klient
Klient

AplikacjaASP.NET
ASP.NET
Aplikacja

IIS
IIS

.NETFramework
Framework
.NET

Systemoperacyjny
operacyjny
System

105

106

Optymalizacja ASP.NET

Przyszo technologii ASP.NET

Cztery podstawowe czynniki wydajnociowe:


! Czas wykonania (ang. execution time)
! Czas odpowiedzi (ang. response time)
! Skalowalno (ang. scalability)
! Przepustowo (ang. throughput)

! Przykady wykorzystania we wspczesnym


biznesie (np. DELL, London Stock
Exchange, NASDAQ, Microsoft)
! Nastpca obecnej wersji ASP.NET v1.1
ASP.NET v2.0 Whidbey. Nie
zapowiedziano jeszcze terminu prezentacji
finalnej wersji.
! Gwny punkty rozwoju:
" Produktywno
" Administracja i zarzdzanie
108
" Wydajno

107

18

Architektura systemu (c.d.)

Architektura systemu (c.d.)

! Warstwy programu uytkowego

! Model klienta cienkiego i klienta grubego

Warstwaprezentacji
prezentacji
Warstwa

Cienki
klient

Warstwaprezentacji
prezentacji
Warstwa
(interfejsuytkownika)
uytkownika)
(interfejs

Warstwaprezentacji
prezentacji
Warstwa
(interfejsuytkownika)
uytkownika)
(interfejs
++
Warstwa
przetwarzania
Warstwa przetwarzania
(logikabiznesowa)
biznesowa)
(logika

Warstwaprzetwarzania
przetwarzania
Warstwa
(logikabiznesowa)
biznesowa)
(logika
++
Warstwazarzdzania
zarzdzaniadanymi
danymi
Warstwa

Warstwazarzdzania
zarzdzaniadanymi
danymi
Warstwa

Gruby
klient

Warstwaprzetwarzania
przetwarzania
Warstwa

Warstwazarzdzania
zarzdzaniadanymi
danymi
Warstwa

109

110

Przykadowa architektura systemu z


ADO.NET

warstwa
prezentacji

Formularze
Formularze
ASP.NET
ASP.NET

warstwa logiki
biznesowej

Komponentylogiki
logiki
Komponenty
biznesowej
biznesowej
korzystajce
korzystajce
z
ADO.NET
przy
z ADO.NET przy
dostpiedo
dobazy
bazy
dostpie
danych
danych

Podsumowanie

warstwa
danych

SQL Server 2000

111

112

Podsumowanie (1)

Podsumowanie (2)

! Globalizacja przestrzeni informacyjnej


powoduje nacisk na tworzenie rozproszonych
i federacyjnych baz danych, ktre
umoliwiyby tworzenie aplikacji globalnych,
dziaajcych na zestawie dziesitkw, tysicy
lub milionw lokalnych BD.

! Problemy rozproszenia s skutkiem spadku


pozostawionego nam przez naszych
poprzednikw. Znaczna cz problemw
moe rozwiza si sama poprzez rezygnacj
ze spadku, tj. poprzez wymarcie kopotliwych
SZBD i powstanie nowych SZBD, lepiej
przystosowanych do tworzenia rozproszonych
federacji.

! Poczenie tych lokalnych baz danych sieci


komputerow stwarza niezbdn
infrastruktur techniczn, ale nie rozwizuje
ogromnej iloci problemw koncepcyjnych,
113
ktrych cz zostaa omwiona na tym
wykadzie.

! Konieczna jest standardyzacja:


" w zakresie modeli danych

114

" w zakresie ontologii biznesowej i metamodeli

19

! W najprostszym przypadku transakcja obejmuje


Transakcje
rozproszone
operacje
na jednej
bazie danych tu transakcja jest
obsugiwana lokalnie przez odpowiedni SZBD (modu
zarzdzania transakcjami),
! W przypadku zoonych aplikacji, moliwe s jednak
sytuacje, w ktrych transakcja wykorzystuje dane z
wielu baz danych. Transakcja, ktra modyfikuje dane
w wicej ni jednej bazie danych okrelana jest jako
transakcja
rozproszona.
Przykadowo,
gdyby
dotyczyo to operacji przelewu dla dwch rnych
bankw,
posiadajcych
wasne
systemy
informatyczne oparte o wasne systemy baz danych,
realizacja
przelewu
stanowiaby
transakcj
rozproszon.
! Zapewnienie wymaganych wasnoci transakcji, w
przypadku transakcji rozproszonych znaczco si
komplikuje,
w
porwnaniu
z
transakcjami
115
dziaajcymi na jednej bazie danych.
! Dla realizacji transakcji rozproszonych stosuje si

cdtransakcje a JDBC
! Standard JDBC ju we wczesnych specyfikacjach umoliwia
realizacj transakcji w jednej bazie danych, pod warunkiem, e
wykorzystywany system zarzdzania baz danych wspiera
przetwarzanie transakcyjne.
! Wsparcie dla transakcji rozproszonych pojawio si w wersji
JDBC 2.0, wraz z wieloma rozszerzeniami funkcjonalnymi i
dotyczcymi zwikszenia efektywnoci przetwarzania.
! Wersja standardu JDBC 3.0 w zakresie przetwarzania
transakcyjnego wprowadza kolejne, tym razem mniej istotne, ale
z pewnoci uyteczne rozszerzenia np. wczeniej niedostpn
instrukcj SAVEPOINT.
! Standard JDBC 2.0 dostarcza baz dla realizacji transakcji
rozproszonych w jzyku Java. W praktyce aplikacje Java
realizujce transakcje rozproszone maj posta aplikacji
komponentowych (EJB) wykonujcych si w rodowisku
117
oferujcym obsug transakcji (np. serwer EJB). Realizacja
transakcji rozproszonych w takim rodowisku wymaga

Przykad realizacji
// rejestracja sterownika Oracle JDBC
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
// otwarcie poczenia z baz poprzez DriverManager
conn =
DriverManager.getConnection("jdbc:oracle:thin:@host1:1521:orcl"
,"scott","tiger");
// utworzenie i wykonanie instrukcji SQL
Statement stmt = conn.createStatement();
stmt.executeUpdate("DELETE FROM emp WHERE empno = 3981");
! Przykad nie zawiera adnych instrukcji sterujcych przebiegiem
transakcji.
! Takie rozwizanie jest dopuszczalne, poniewa domylnie
poczenia zwracane przez DriverManager pracuj w trybie
automatycznego zatwierdzania (ang. auto commit).
! Kada wykonywana instrukcja SQL stanowi osobn transakcj
i
119
jest automatycznie zatwierdzana.
! Rozwizanie to jest dostpne rwnie w bazach danych, ktre nie

Transakcje a JDBC
! Cay ten proces musi by oczywicie
koordynowany. Koordynatorem moe by
zarzdca
transakcji
(ang.
transaction
manager) dziaajcy w ramach jednego z
systemw
zarzdzania
baz
danych,
biorcych udzia w transakcji. Moe by nim
rwnie zewntrzny zarzdca transakcji np.
wbudowany w serwer aplikacji.
! W przypadku aplikacji tworzonych w jzyku
Java, operacje na bazach danych dokonywane
s w standardzie JDBC opracowanym przez
firm Sun, powszechnie zaakceptowanym i
implementowanym.
! Obecnie pewnego rodzaju alternatyw dla 116
JDBC jest standard SQLJ, oferujcy
wygodniejszy i mniej podatny na bdy

cdtransakcje a JDBC
! Tradycyjne
aplikacje
w
jzyku
Java
(wykorzystujce
jedynie
mechanizmy
przewidziane przez wczesne specyfikacje
standardu JDBC, np. JDBC 1.2), wykonuj
operacje na bazie danych poprzez obiekt
Connection, uzyskany w wyniku otwarcia
poczenia z baz danych za porednictwem
zarzdcy
sterownikw
(DriverManager).
Zarzdca sterownikw otwiera poczenie
korzystajc z jednego z zarejestrowanych
wczeniej w aplikacji sterownikw JDBC.
118
Odpowiedni sterownik wybierany jest na
podstawie zawartoci acucha znakw z

cdprzykad realizacji
! Jeli
aplikacja
wymaga
realizacji
transakcji
obejmujcych kilka instrukcji SQL, a wykorzystywany
system zarzdzania baz danych wspiera transakcje,
naley wyczy tryb automatycznego zatwierdzania
odpowiedni metod obiektu Connection i jawnie
koczy transakcj, co ilustruje przykad:
...
Connection conn = DriverManager.
// wyczenie trybu automatycznego zatwierdzania
conn.setAutoCommit(false);
...
120
// polecenia SQL
...

20

cdprzykad realizacji

cdprzykad realizacji

! W
przykadzie
transakcja
koczy
si
zatwierdzeniem (COMMIT). W przypadku
zakoczenia transakcji poprzez jej wycofanie
(operacja ROLLBACK), naleaoby zastpi
wywoanie metody commit() na rzecz obiektu
Connection
przez
wywoanie
metody
rollback().
! Naley zwrci uwag, e przy realizacji
transakcji w standardzie JDBC nie ma
jawnych operacji rozpoczcia transakcji
nowa transakcja rozpoczyna si w chwili
121
otwarcia
poczenia
z
baz
lub
po
zakoczeniu poprzedniej transakcji.

cdprzykad realizacji
Korzyci pynce z korzystania ze rde danych to:
" po pierwsze uniknicie zaszywania parametrw poczenia
z baz danych w kodzie aplikacji. Parametry te s czci
definicji rda danych i typowo znajduj si w plikach
konfiguracyjnych aplikacji do wersji korzystajcej z
DriverManager inna jest jedynie sekwencja operacji
prowadzca do uzyskania obiektu Connection
" po drugie, poczenie uzyskane poprzez rdo danych
moe oferowa dodatkow funkcjonalno. Standard
JDBC przewiduje rda danych wspierajce mechanizm
connection pooling i transakcje rozproszone
(implementacje takich rde danych dostarcza np.
Oracle). Mechanizm connection pooling polega na
buforowaniu pocze (utrzymywana jest pewna pula
otwartych pocze, ktre przydzielane s aplikacjom,
123
zamknicie poczenia z poziomu aplikacji fizycznie go nie
zamyka poczenie wraca do puli). Mechanizm ten jest

! Istnieje rwnie moliwo tworzenia instancji rde danych


bezporednio w aplikacji, jednak w przypadku aplikacji
uruchamianych w rodowisku serwera aplikacji, preferowane jest
rozwizanie polegajce na definiowaniu rde danych w plikach
konfiguracyjnych aplikacji. Typowy scenariusz korzystania ze
rde danych w aplikacji wyglda nastpujco:

1) uzyskanie przez aplikacj dostpu do serwisu


nazw dla niej
przeznaczonego
2) wyszukanie danego rda danych poprzez jego
nazw (ciek
dostpu do rda ustalon przez administratora
w memencie definiowania rda i 122jego
rejestracji w serwisie nazw)

cdprzykad realizacji
Poniszy fragment kodu ilustruje sposb uzyskania
poczenia z baz danych w oparciu o rdo danych
zarejestrowane w serwisie nazw.
...
// uzyskanie obiektu reprezentujcego kontekst JNDI
Context ctx = new InitialContext();
// wyszukanie rda danych przez nazw logiczn
OracleDataSource ds
= (OracleDataSource)ctx.lookup("jdbc/FinanceDB");
// uzyskanie obiektu Connection
Connection conn = ds.getConnection();
124

Transakcje rozproszone w JDBC 2.0

cdprzykad realizacji
! Pierwsz operacj w poprzednim przykadzie jest uzyskanie
przez aplikacj dostpu do kontekstu JNDI.
! Wykorzystany w przykadzie bezargumentowy konstruktor
InitialContext() zwraca obiekt kontekstu dla domylnego
rodowiska kontekstu aplikacji.
! W przypadku aplikacji uruchamianych na serwerze aplikacji,
takich jak serwlety, JSB, EJB, serwer aplikacji tworzy dla
aplikacji odpowiedni domylny kontekst.
! Aplikacje dziaajce po stronie klienta musz skorzysta z
konstruktora InitialContext (Hashtable env), ktremu naley
przekaza tablic z zestawem parametrw umoliwiajcym
poczenie z serwisem nazw.
125

! JDBC 2.0 Optional Package oferuje wsparcie dla transakcji


rozproszonych poprzez mechanizm rde danych. Wsparcie to
jest oparte o oglny standard XA dla transakcji rozproszonych,
bdcy czci standardu X/Open.
! Omwiono tu implementacj XA w JDBC 2.0, Naley podkreli,
e
omawiana
funkcjonalno
XA
jest
w
praktyce
implementowana w serwerach aplikacji i izolowana od aplikacji
uytkowych.
! Oglnie mwic funkcjonalno XA zapewnia zarzdcy transakcji
koordynacj poszczeglnych gazi transakcji (ang. transaction
branches) reprezentowanych przez zasoby XA (XA resource) i
zatwierdzanie lub wycofywanie gazi transakcji. Kluczowe
elementy XA to:

# rda danych XA (ang. XA data sources),126


# Poczenia XA (ang. XA connections),

21

Przykad

cd..transakcje w JDBC 2.0


! rda danych XA (ang. XA data sources) - jedno
rdo danych dla jednej bazy danych biorcej
udzia w transakcji (typowo tworzone na poziomie
serwera aplikacji)
! Poczenia XA (ang. XA connections) - uzyskane
ze rde danych XA, suce do uzyskania
instancji XA resource i pocze JDBC (jedno
poczenie XA reprezentuje jedn sesj w bazie
danych i moe zwrci jedn instancj zasobu XA)
! Zasoby XA (ang. XA resources) - wykorzystywane
przez zarzdc transakcji do koordynacji gazi
transakcji rozproszonej, ich funkcjonalno
127
obejmuje operacje: start, end, prepare, commit, i
rollback

cd.. przykad - opis


" przykadowy program ilustruje sposb realizacji transakcji
rozproszonej w standardzie JDBC 2.0 (z wykorzystaniem
mechanizmw pochodzcych ze standardu XA).
" w rzeczywistych aplikacjach warstwy poredniej, funkcjonalno
XA byaby realizowana przez zarzdc transakcji w ramach
serwera aplikacji.
" Przedstawiony przykad zosta oparty o jeden z programw
demonstracyjnych rozpowszechnianych wraz z serwerem
Oracle9i.
" Dla uproszczenia ukryte zostay w nim szczegy dotyczce
generowania identyfikatorw gazi transakcji i operacji SQL
skadajcych si na transakcj. Dziaanie poniszego kodu
mona podzieli na nastpujce kroki:

1) Przygotowanie rde danych, pocze i identyfikatorw


gazi transakcji
129
2) Rozpoczcie gazi transakcji
3) Wykonanie operacji SQL w poszczeglnych gaziach

cd..przetwarzania transakcji na platformie


J2EE - Standard JTA
" Zarzdca zasobw (ang. resource manager)
umoliwia aplikacjom dostp do zasobw.
Aplikacje cz si z zarzdc zasobw poprzez
dedykowan dla danego typu zarzdcy zasobw
bibliotek programow. Przykadem zarzdcw
zasobw s serwery relacyjnych baz danych
(bibliotek umoliwiajc aplikacji komunikacj z
zarzdc zasobw jest w tym przypadku
odpowiedni sterownik JDBC) lub serwery
zarzdzania komunikatami (dostpne poprzez
interfejs Java Message Service (JMS)),
" Transakcyjna aplikacja, typowo skadajca si z
wielu komponentw (np. oparta o standard 131
Enterprise
JavaBeans
(EJB)),
powierza

import java.sql.*;
import javax.sql.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.*;
import oracle.jdbc.xa.OracleXid;
import oracle.jdbc.xa.OracleXAException;
import oracle.jdbc.xa.client.*;
import javax.transaction.xa.*;
class XA_M
{
public static void main (String args []) throws
SQLException
{
try
{
String URL1 = "jdbc:oracle:thin:@serv1:1521:orcl1";
String URL2 = "jdbc:oracle:thin:@serv2:1521:orcl2";
// utworzenie rde danych XA
OracleXADataSource oxds1 = new
OracleXADataSource();
oxds1.setURL(URL1);
oxds1.setUser("scott");
oxds1.setPassword("tiger");
OracleXADataSource oxds2 = new
OracleXADataSource();
oxds2.setURL(URL2);
oxds2.setUser("scott");
oxds2.setPassword("tiger");
// uzyskanie pocze XA ze rde danych
XAConnection pc1 = oxds1.getXAConnection();
XAConnection pc2 = oxds2.getXAConnection();
// uzyskanie pocze JDBC
Connection conn1 = pc1.getConnection();
Connection conn2 = pc2.getConnection();
// uzyskanie instancji XA Resource
XAResource oxar1 = pc1.getXAResource();

// operacje SQL w ramach poszczeglnych


gazi transakcji
doSomeWork1 (conn1);
doSomeWork2 (conn2);
// zakoczenie gazi transakcji
oxar1.end(xid1, XAResource.TMSUCCESS);
oxar2.end(xid2, XAResource.TMSUCCESS);
// 2-phase commit: faza prepare
int prp1 = oxar1.prepare (xid1);
int prp2 = oxar2.prepare (xid2);
// okrelenie wyniku transakcji (commit czy
rollback?)
boolean do_commit = true;
if(!((prp1 == XAResource.XA_OK) || (prp1 ==
XAResource.XA_RDONLY)))
do_commit = false;
if(!((prp2 == XAResource.XA_OK) || (prp2 ==
XAResource.XA_RDONLY)))
do_commit = false;
// 2-phase commit: commit lub rollback
if (prp1 == XAResource.XA_OK)
if (do_commit)
oxar1.commit (xid1, false);
else
oxar1.rollback (xid1);
if (prp2 == XAResource.XA_OK)
if (do_commit)
oxar2.commit (xid2, false);
else
oxar2.rollback (xid2);
128
// zamknicie pocze
conn1.close(); conn1 = null;
conn2.close(); conn2 = null;

Przetwarzanie transakcyjne na
platformie J2EE - Standard JTA
" Realizacja transakcji rozproszonych na platformie
J2EE wymaga wsppracy oprogramowania rnego
rodzaju: zarzdcy transakcji, serwera aplikacji,
zarzdcw zasobw, aplikacji uytkowej oraz
zarzdcy komunikacji. Kady z uczestnikw
transakcji odpowiada za okrelon funkcjonalno,
" Zarzdca transakcji (ang. transaction manager)
dostarcza funkcje i usugi wymagane do wyznaczania
pocztku
i koca transakcji, transakcyjnego
zarzdzania zasobami i synchronizacji,
" Serwer aplikacji (ang. application server) stanowi
rodowisko
uruchomieniowe
dla
aplikacji
z
uwzgldnieniem zarzdzania stanem transakcji 130
(przykadem takiego serwera aplikacji jest serwer

cd..Przetwarzanie transakcji na
platformie J2EE - Standard JTA
" Standard JTA (Java Transaction API) specyfikuje
interfejsy midzy zarzdc transakcji a innymi
uczestnikami tj. aplikacj, serwerem aplikacji i
zarzdcami zasobw (np. serwerami baz danych).
Standard JTA oparty jest w duym stopniu na
specyfikacji JDBC 2.0 i standardzie XA.
" Obejmuje on nastpujce trzy gwne czci:
# Interfejs wysokiego poziomu umoliwiajcy
aplikacji transakcyjnej wytyczanie granic
transakcji (javax.transaction.UserTransaction)
# Interfejs zarzdcy transakcji umoliwiajcy
serwerowi aplikacji obsug wyznaczania
granic transakcji dla aplikacji zarzdzanych
przez dany serwer aplikacji
(javax.transaction.TransactionManager)
# Mapowanie do jzyka Java interfejsu XA

132

22

cd..Przetwarzanie transakcji na
platformie J2EE - Standard JTA

cd..Przetwarzanie transakcji na
platformie J2EE - Standard JTA

Role powyszych interfejsw definiowanych przez standard JTA


pokazuje Rys.
! Standard JTA zakada wspprac z zarzdc
transakcji zgodnym ze specyfikacj Java Transaction
Service (JTS).
! Standard JTS dotyczy implementacji zarzdcy
transakcji (ang. Transaction manager) wspierajcego
na wysokim poziomie standard JTA, poprzez
mapowanie do jzyka Java specyfikacji OMG Object
Transaction Service (OTS) na niskim poziomie.
! JTS obejmuje opis mechanizmw wsppracy
zarzdcw transakcji (komunikacji midzy nimi).

133

134

Transakcje JTA w aplikacjach Java

cd..transakcje JTA w aplikacjach Java

! JTA znajduje zastosowanie przede wszystkim w kontekcie


aplikacji budowanych w oparciu o komponenty Enterprise
JavaBeans (EJB). Naley jednak podkreli, e rwnie aplikacje
innego rodzaju (np. serwlety) mog wykorzystywa standard
JTA do specyfikacji transakcji. Z kolei w przypadku
komponentw EJB niektrych typw (komponenty sesyjne i
komunikatowe) dopuszczalne jest wykorzystanie standardu
JDBC do sterowania transakcjami.
! Realizacja transakcji JTA z punktu widzenia aplikacji J2EE
wymaga zarejestrowania zasobw i wyznaczenia granic
transakcji. Od liczby zarejestrowanych zasobw zaley
konieczno zastosowania mechanizmu 2-phase commit (gdy
aplikacja korzysta z jednego zasobu wystarczy zatwierdzanie
jednofazowe, gdy z wicej ni jednego konieczne jest
135
zatwierdzanie dwufazowe).

! Rejestracja zasobu dla aplikacji wymaga konfiguracji


odpowiedniego rda danych w jednym z plikw
konfiguracyjnym
aplikacji
(data-sources.xml).
Nastpnie aplikacja po rozpoczciu transakcji (!)
wyszukuje dane rdo danych w serwisie nazw
(operacja lookup JNDI) i uzyskuje za jego
porednictwem obiekt Connection.
! W zakresie wyznaczania granic transakcji, transakcje
mog by zarzdzane przez komponent (ang.
beanmanaged) lub przez kontener (ang. containermanaged). W przypadku transakcji zarzdzanych
przez komponent, aplikacja wykonuje jawnie operacje
136
rozpoczcia i zakoczenia transakcji poprzez interfejs

cd..transakcje JTA w aplikacjach Java

! Transakcje
zarzdzane przez kontener s dostpne
Java
dla komponentw EJB (komponenty EJB s
uruchamiane w rodowisku kontenera EJB w
ramach serwera EJB, kontener oferuje m.in. Wanie
usugi transakcyjne). W tym wypadku transakcj
steruje kontener, na podstawie informacji podanych
w sposb deklaratywny w pliku deployment
descriptor zawierajcym opis instalacji komponentu
(informacja o tym czy komponent EJB wykorzystuje
transakcje zarzdzane przez komponent czy
kontener rwnie zawarta jest w tym pliku).
Dostpnych jest sze rnych trybw obsugi
transakcji przez kontener (Required, RequiresNew,
Supports, NotSupported, Manadatory i Never). 138
! Tryb odpowiedni w typowych sytuacjach to

cd..transakcje JTA w aplikacjach


Poniszy fragment kodu ilustruje sposb programistycznego
wyznaczania granic transakcji w standardzie JTA za
porednictwem interfejsu UserTransaction:
...
Context ctx = new InitialContext();
UserTransaction ut
= (UserTransaction) ctx.lookup("java:comp/env/UserTransaction");
// rozpoczcie transakcji
ut.begin();
DataSource ds = (DataSource)
ctx.lookup("java:comp/env/jdbc/OracleDS");
// uzyskanie obiektu Connection po (!) rozpoczciu transakcji
Connection conn = ds.getConnection();
...
// zatwierdzenie transakcji
137
ut.commit();

23

Podsumowanie
! W wykadzie zaprezentowano zagadnienia
dotyczce przetwarzania transakcyjnego w
aplikacjach jzyka Java, ze szczeglnym
naciskiem
na
obsug
transakcji
rozproszonych.
! Omwiona zostaa rola i funkcjonalno
standardw JDBC i JTA w zakresie
przetwarzania transakcyjnego w jzyku
Java.
! Opisane
zostay
niskopoziomowe139
mechanizmy
do
obsugi
transakcji

24

Inne problemy SYSTEMW


BAZ DANYCH

Replikacje
Technologia replikacji oznacza przechowywanie dwch lub wicej
kopii danych (replik) w oddalonych geograficznie miejscach.

Cele:
Zwikszenie dostpnoci danych poprzez:
- zminimalizowanie czasu i kosztw ich transmisji z odlegego
miejsca
- rozoenie obcienia w zakresie dostpu na wiele kopii danych
Zwikszenie odpornoci danych na zniszczenie.
Zwikszenie bezpieczestwa

Jednoczesne aktualizacje

Aktualizacja replikacji

Aktualizacja dowolnej kopii danych powinna spowodowa jednoczesn


aktualizacj wszystkich pozostaych kopii. W idealnym przypadku powinno to
nastpowa jednoczenie, aby zapobiec sytuacji, gdy dane przechowywane w
rnych kopiach s wzajemnie niespjne. Ten idea nie daje si zrealizowa tak
atwo z kilku powodw:
Czas transmisji zlece aktualizacyjnych powoduje, e kopie s chwilowo
wzajemnie niezgodne;

ze sterowaniem
wspbienocia
Modele
replikacji
Transakcja aktualizujca

propagacja
aktualizacji

Replika 1

Zawodno czy i wzw sieci moe spowodowa czasow niemoliwo


wykonania zlecenia aktualizacyjnego;

Propagacja aktualizacji
Transakcja aktualizujca

Replika 2

prop
ag
aktua acja
liza c
ji
Replika 1

Replika 3

Replika 3
Replika 2

Planowane odwieanie kopii dla replik tylko do czytania


Transakcja aktualizujca

Koszt transmisji zlece aktualizacyjnych moe by nieakceptowalny w przypadku


bardzo czstych zmian.
Mona wyobrazi sobie sytuacj, kiedy kada aktualizacja dowolnej kopii jest
wykonywana w ramach transakcji, ktra nie bdzie potwierdzona a do momentu
zaktualizowania wszystkich kopii. Takie rozwizanie w wikszoci przypadkw
powoduje jednak znaczne zmniejszenie dostpnoci danych.

planowana
aktualizacja

Replika 1

Transakcja czytajca

plano
w
aktua a na
lizacja

Replika 3
Transakcja czytajca

Replika 2

Wady replikacji
! Konieczna dodatkowa przestrze dyskowa
! Moliwo powstania niespjnoci
pomidzy replik i oryginaem =>
zagroenie dla spjnoci procesw
biznesowych

Przetwarzanie transakcji

" Np. jeeli


dane
o czytajcych
wysokoci kont
s
ilo
zapyta
> ilo replik
Jeeli
ilo zlece
aktualizujcych
powtrzone
w wielu
miejscach, wwczas kto
to warto tworzy
repliki.
korzystajc
z (celowo)
uszkodzonych linii
W przeciwnym przypadku - nie warto.
transmisyjnych moe dokona nielegalnych
wypat.

! Zwikszenie kosztw aktualizacji danych:


aktualizacja oryginau pociga za sob

Transakcje a JDBC

Przetwarzanie transakcji

Problemy z transakcjami w systemach rozproszonych:

! Cay ten proces musi by oczywicie


koordynowany. Koordynatorem moe by
zarzdca
transakcji
(ang.
transaction
manager) dziaajcy w ramach jednego z
systemw
zarzdzania
baz
danych,
biorcych udzia w transakcji. Moe by nim
rwnie zewntrzny zarzdca transakcji np.
wbudowany w serwer aplikacji.
! W przypadku aplikacji tworzonych w jzyku
Java, operacje na bazach danych dokonywane
s w standardzie JDBC opracowanym przez
firm Sun, powszechnie zaakceptowanym i
implementowanym.
! Obecnie pewnego rodzaju alternatyw dla
7
JDBC jest standard SQLJ, oferujcy
wygodniejszy i mniej podatny na bdy

Implementacja transakcji poprzez


zamki

Zamek (lock): jedna z transakcji rezerwuje sobie dostp do obiektu.


Spjno przetwarzania transakcji jest zachowana, jeeli caa transakcja ma dwie fazy:
rosnc i skracajc.
potwierdzenie
(commit)

zakadanie zamkw
(nie ma zwalniania)

! Zakleszczenie: wykrywanie i usuwanie jest


znacznie trudniejsze, gdy wymaga
przesyania w sieci informacji ktra transakcja
8
czeka na ktr.

Koordynator (program aplikacyjny klienta)


Dwufazowe
potwierdzenie (2PC)
SZBD klienta

koniec
w
got

zwalnianie
zamkw (nie
ma zakladania)

czas

SZBD serwera

r d
wie
pot

gotw
potwierd

start

! Faza potwierdzenia (commit) moe trwa


dugo. Niepowodzenie (awaria) w tej fazie
moe spowodowa niespjno bazy danych i
przetwarzania. Std nowe protokoy
przetwarzania transakcji w systemie
rozproszonym: 2PC, 3PC.

SZBD serwera

pot
wie
r d
got

SZBD serwera

Awaria w fazie potwierdzenia jest krytyczna, gdy grozi utrat spjnoci.

! W systemach rozproszonych faza potwierdzenia moe


trwa minuty i wcza zawodne zawodne elementy
infrastruktury (cza).
! Warunek atomowoci oznacza, e jeeli transakcja
dzieli si na wiele podtransakcji wykonywanych na
9
odlegych serwerach, to nie moe zaj sytuacja, gdy
podtransakcja na serwerze A jest potwierdzona, za

2PC - zarzdzanie awariami


! Do zoone postpowanie zalene od tego,
czy awarii uleg serwer czy te koordynator.
! Protok 2PC okrela:
" Czas graniczny (timeout) nadesania sygnau
"gotw" od wszystkich serwerw do
koordynatora . Jeeli czas graniczny min
oraz nie ma wszystkich sygnaw "gotw", to
koordynator wysya do wszystkich serwerw
sygna "zerwij".
" Sposb rejestracji sygnaw od koordynatora
w dzienniku serwera. W razie awarii serwera, 11
po jego ponownym postawieniu, analizowany

1. Serwery wysyaj komunikaty gotw do koordynatora.


2. Po skompletowaniu wszystkich zgosze koordynator wysya komunikat
potwierd do wszystkich serwerw.
Jeeli nie nadejd wszystkie zgoszenia gotw, koordynator wysya komunikat
zerwij transakcj do wszystkich serwerw.
Wada: due straty wykonanej pracy w przypadku zerwania.

10

Transakcje w federacyjnej bazie


danych (1)
! Lokalne transakcje s wykonywane
autonomicznie przez lokalny SZBD.
Federacja nic o nich nie wie i (z reguy) nie
moe si dowiedzie.
! Globalne transakcje s wykonywane
przez aplikacje globalne. Mog skada si
z wielu podtransakcji, wykonywanych
przez lokalne SZBD.
! Z punktu widzenia lokalnego SZBD
podtransakcja globalnej transakcji jest
normaln lokaln transakcj.

12

Transakcje w federacyjnej bazie


danych (2)
! Lokalne bazy danych mog stosowa
rnorodne algorytmy przetwarzania
transakcji. Autonomia oznacza, e federacja
nie ma wpywu na te algorytmy.
! Lokalna BD moe w kadej chwili z rnych
powodw (np. zakleszczenia) zerwa dowoln
transakcj, w tym podtransakcj indukowan
przez globaln transakcj.

Niezgodnoci schematw i
ontologii

! Informacja o wewntrznym stanie lokalnie


przetwarzanych transakcji (np. stan dziennika13
transakcji, zamki zakadane przez transakcje,

schematic discrepancies

Niezgodnoci schematw

Przy integracji niezalenie zaprojektowanych baz danych w jeden schemat naley si


liczy z tym, e organizacja, struktura i semantyka danych bdzie niezgodna.
Nie istnieje ani jeden ani najlepszy sposb odwzorowania dziedziny
przedmiotowej w struktury danych zapamitane w bazie danych. Rni projektanci
projektuj cakowicie odmienne struktury dla tego samego problemu.
Dlaczego?

! Obiekty tej samej dziedziny problemowej mog


by widziane przez rnych projektantw
cakowicie odmiennie.

14

Niezgodnoci ontologii w
rozproszonych BD (1)

S one powan przeszkod, ktra pojawia si podczas konstruowania


federacyjnych rozproszonych BD.
Niezgodnoci te dotycz rnych aspektw organizacji i dziaania:

! Niezgodnoci pomidzy modelami danych:


relacyjna vs. obiektowa vs. hierarchiczna XMLowa, itd.

! Rne rodki manipulacji strukturami dostarczane

! Niezgodnoci pomidzy schematami


pojciowymi. Np. w jednej BD informacja o
dzieciach pracownika jest atrybutem jego obiektu,
za w innej jest zwizkiem czcym obiekt
pracownika z obiektami osb. W zalenoci od
BD te same dane mog wystpowa raz jako
16
nazwy (obiektw, atrybutw), a raz jako ich
wartoci. Nawet gdy zespoy stosuj t sam

Niezgodnoci ontologii w
rozproszonych BD (2)

Niezgodnoci ontologii w
rozproszonych BD (3)

! Niezgodnoci w zakresie interpretacji


semantycznej danych. W jednej bazie
danych zarobek pracownika moe by
zarobkiem brutto, w innej - netto, za jeszcze
w innej moe by rozbity na pensj, premi i
dodatki.

! Niezgodnoci dotyczce odniesienia


danych do skali czasowej. Informacje mog
by np. aktualizowane natychmiast, za w
innej BD raz na miesic.
! Niezgodnoci w sposobach dostpu. W
jednej BD dostp do danych bdzie
realizowany na przykad przy pomocy
standardowego SQL, a w innej poprzez rodki
dostpu pewnego jzyka czwartej generacji
lub API.jest bardzo duo. Niezalenie zbudowane lokalne bazy
Niezgodnoci
danych
zawszestrukturalizacja
bd obcione tego rodzaju
konfliktami.
!
Rna
informacji.
Np. w 18
jednej BD utworzono odrbn tabel

! Systemy zarzdzenia BD maj ograniczenia


struktur danych, ktre wymuszaj sposb
mylenia projektantw nad koncepcj struktur
danych.

15

! Niezgodnoci dotyczce budowy i rodkw


dostpu do katalogw. W relacyjnej BD
katalog jest zbiorem relacji dostpnym przy
pomocy SQL, w innej bazie katalog moe nie
istnie explicite, za informacje katalogowe s17
dostpne poprzez zmienne rodowiskowe

canonical data model

Kanoniczny model danych

Jeeli wiele baz danych ma tworzy jedn federacyjn baz danych w ktrej
bdzie obowizywa jeden wsplny API f, wwczas potrzebny jest model
danych w terminach ktrego dadz si wyrazi wszystkie inne modele danych.
Model powinien take uwzgldnia fakt, e w federacji mog pojawi si nowe
bazy danych, ktrych zaoe nie rozpatrywalimy podczas jej tworzenia.
Ktry z modeli danych mgby by takim kanonicznym modelem danych?
Relacyjny? Encja-zwizek? UML? CORBA? ODMG? Jaki inny?
Jeeli nie chcemy debaty religijnej o wyszoci modelu A nad B, to powstaje
pytanie o obiektywne kryteria. Czy istniej?
Debata nad kanonicznym modelem danych traktuje modele danych jako
obiektywne byty o ostro zarysowanych wasnociach i granicach.
Nie jest to suszne. Modele danych s tworami subiektywnymi, o niejasnych
granicach, podlegaj cigej ewolucji, moliwe s rnorodne ich mutacje i
rozszerzenia. Istnieje potencjalnie wiele modeli relacyjnych i wiele modeli
obiektowych.

Kryteria wyboru kanonicznego modelu


danych
Ekspresyjno (expressiveness): w jakim stopniu dany model jest w stanie
bezporednio odwzorowa pojcia z modelu pojciowego dziedziny
aplikacyjnej oraz definiowa nowe operacje, typy danych i wizy integralnoci.
Np. model relacyjny nie ma bezporednich odwzorowa zoonych obiektw,
dziedziczenia, agregacji, informacji behawioralnych, itd., wobec czego ma
nisk ekspresyjno. Pod tym wzgldem model obiektowy ma przewag.
Relatywizm semantyczny (semantic relativism): stopie, w jakim dany model
umoliwia wiele punktw widzenia na t sam dziedzin aplikacyjn. Miar
relatywizmu semantycznego danego modelu jest moliwo budowania
dowolnych schematw zewntrznych (perspektyw) nad schematem bazy
danych. Model relacyjny posiada pewien stopie relatywizmu, dziki jego
zdolnoci definiowania perspektyw (ograniczonej, szczeglnie w zakresie
aktualizacji perspektyw). Definiowanie perspektyw nie jest mocn stron
systemw obiektowych, jakkolwiek nie istniej tu ograniczenia koncepcyjne.

19

20

Co to jest Federacyjna Baza Federated Database


Danych?
Jest to kolekcja heterogenicznych, autonomicznych baz danych, poczonych
sieci komputerow, zarzdzana specjalnym systemem okrelanym jako
Federacyjny System Zarzdzania Baz Danych (FSZBD). Moe wcza
dziesitki, setki, tysice lub wicej lokalnych baz danych.

Federacyjne bazy danych

FSZBD umoliwia tworzenie aplikacji globalnych, dziaajcych na caoci


federacyjnej bazy danych. Jest ona zdefiniowana schematem federacyjnym,
bdcym sum schematw eksportowych lokalnych baz danych.
FSZBD zapewnia warunki pracy twrcw aplikacji globalnych okrelane jako
przezroczysto i niezaleno danych.
FSZBD moe by zainstalowany w wielu wzach sieci (m.in. w kadym
lokalnym miejscu FBD), umoliwiajc tworzenie aplikacji globalnych w wielu
miejscach geograficznych. Poszczeglne FSZBD wsppracuj ze sob celem
zapewnienia spjnoci i integralnoci przetwarzania.
21

Architektura federacyjnej bazy


Aplikacje globalne
danychAplikacje globalne
FSZBD
1

Przestrze
robocza

...

Schemat FBD

FSZBD
m

22

Global schema
(in an extended ODL)

Lokalna baza danych

Lokalny schemat
eksportowy

External sub-schemata
(through an accessibility matrix)

Zewntrzne podschematy
uytkownikw (macierz dostpu)

Architektura dostpu do lokalnej BD

Przestrze
robocza

Obiekty A
Obiekty A
Obiekty
Dane A A

Schemat FBD

Sie
komputerowa

API
Osona
Mediator

Obiekty A
Obiekty A
Obiekty
Dane B A

Zewntrzny
podschemat 1

Zewntrzny
podschemat 2

Interfejs IA1

Dostp

Zakaz

Zakaz

Interfejs IA2

Zakaz

Zakaz

Dostp
Dostp

Interfejs IB1

Zewntrzny
podschemat 3

Dostp

Zakaz

Interfejs IC1

Zakaz

Dostp

Zakaz

Ob.wirt. V3
Ob.wirt.
V3 V
Dane wirt.

Perspektywa V1

Zakaz

Dostp

Dostp

Ob.wirt.
VV3
Ob.wirt.
3V
Dane wirt.

Perspektywa V2

Dostp

Zakaz

Zakaz

Obiekty
Dane C A

Schemat eksportowy 1
Osona 1
API 1

Lokalny
SZBD 1

BD 1

Aplikacje lokalne

Schemat eksportowy 2
Osona 2
API 2

Lokalny
SZBD 2

BD 2

Aplikacje lokalne

...

Schemat eksportowy n
Osona n
API n

Lokalny
SZBD n

definiuje

us

a
tal

BD n

Aplikacje lokalne
23

Administrator
lokalnej bazy danych

Uytkownik Uytkownik
1
2

Uytkownik
24
3

Trj-warstwowa architektura
Uytkownik 1
Uytkownik 2
Uytkownik 3
3 federacyjnej BD
Schemat zewntrzny 1

Schemat zewntrzny 2

Przetwarzanie zapyta w FBD

Schemat zewntrzny 3

Schemat federacyjny

FSZBD

Podstawowe algorytmy przetwarzania zapyta w homogenicznych i federacyjnych


relacyjnych BD s podobne. Rnice dotycz cech autonomii i heterogenicznoci,
ktre znacznie komplikuj problem. Algorytmy polegaj na dekompozycji zapytania
na pewne podzapytania kierowane do lokalnych BD, nastpnie na skomponowaniu
globalnego wyniku z wynikw czstkowych zwrconych przez lokalne BD.
Komplikacje
Niezgodnoci schematw, ktre wymagaj mechanizmu refleksji lub nowych
operatorw w SQL.
Brak algorytmicznej uniwersalnoci SQL.
Ograniczona moc mechanizmu definiowania perspektyw.

Przestrze
robocza

Sie

Schemat eksportowy 1
Osona 1
API 1

Lokalny
SZBD 1

BD 1

Schemat eksportowy 2
Osona 2
API 2

Lokalny
SZBD 2

Problem zosta rozwizany dla niektrych przypadkw, ale nie dla generalnego.
Wyglda na to, ze w ramach obecnych paradygmatw modelu relacyjnego niewiele
wicej da si zrobi.

...

BD 2

W obiektowych bazach danych problem jest na pocztku drogi. Nie s mi znane


istotne prace, ktre dayby nadziej na rozwizanie. Przymiarki, spekulacje,...
25

26

Rozproszone BD w standardzie
CORBA

Problemy z RBD w standardzie


CORBA

Host globalnej aplikacji

! CORBA nie jest nastawiona na przetwarzanie


danych trwaych i masowych przy pomocy
jzykw zapyta. Jest to poziom jzykw
takich jak C++ i Java, znacznie niszy.
Obecny stan standardyzacji w zakresie Query
Service i Persistence Service jest uwaany za
niezadowalajcy.

Oprogramowanie komponentowe budowane wg standardu CORBA moe by


podstaw rozproszonych/federacyjnych baz danych.
Host lokalnej BD

Klient
Klient
Wywoanie
operacji

Obiekty
Obiekty
Obiekty

Pieniek
klienta

zlecenie

Implementacja
interfejsw do
obiektw
(szkielety + kod)

Porednik (ORB, Object Request Broker)


wynik, parametry wyj
Implementacja interfejsw do obiektw po stronie serwera powstaje ze szkieletu
automatycznie generowanego z wyraenia IDL, ktry jest wypeniany kodem operacji.
Taki szkielet peni jednoczenie funkcj osony oraz funkcj perspektywy. ORB jest w
stanie zapewni autonomi lokalnej BD.
27

! CORBA nie wprowadza pojcia perspektywy.


Osony w CORBA s pisane w jzykach
niskiego poziomu, s zorientowane na dan
28
aplikacj, nie daj konceptualizacji takiej, jak
daj perspektywy.

wrapper
Modu oprogramowania umoliwiajcy przystosowanie interfejsu
lokalnej bazy danych do pewnego standardu obowizujcego w
systemie rozproszonym.

Osona

Podstawowe zadanie: fizyczne poczenie rnych baz danych.

Osony i mediatory

29

! Osona nie zajmuje si bardziej wyrafinowanym


odwzorowaniem; chodzi o translacj danych,
parametrw i wywoa funkcji pyncych z zewntrz
lokalnego systemu (o specyficznych formatach i
reprezentacji) na analogiczne dane, parametry i
funkcje wyraone w API konkretnego lokalnego
systemu bazy danych.
! Dla niektrych przypadkw, np. dla niektrych stron
HTML, napisanie osony jest bardzo trudnym 30
zadaniem ze wzgldu na nieregularnoci formatu
(dane p-strukturalne, semi-structured).

Osona udostpnia dane i usugi lokalnego systemu i (dostpne w pewnym API i)


dla aplikacji globalnych (wykorzystujcych wsplny API f).

Osony w federacyjnych BD

Osony przystosowuj lokalne


obowizujcego w federacji.

SZBD

do

interfejsu

programistycznego

SZBD

Osona 1

API f
Osona 2

API 1
Lokalny
SZBD 1

API 2
Lokalny
SZBD 2

Potencjalne problemy i rozwizania:

! Konieczno silnego ograniczenia modelu obiektowego,


np. brak zoonych obiektw, metod, zwizkw,
hermetyzacji, polimorfizmu, itd.;

Federacyjny

API f

Osony dla lokalnych relacyjnych


SZBD

Problem pojawia si wtedy, gdy API f dla federacyjnej bazy danych nie jest
oparty o model relacyjny, lecz o model obiektowy a la CORBA lub ODMG.

API f

...

Osona n
API n

! Odwzorowanie krotek tabel na zoone obiekty - wiele


krotek skadajcych si na jeden obiekt. Przetwarzanie
np. w OQL+Java. Problemy koncepcyjne.
! Odwzorowanie obiektowego API, np. OQL +Java na
relacyjne API, np. JDBC. Oglne rozwizanie jest
bardzo trudne.

Lokalny
SZBD n

31

! Zredukowanie API relacyjnej BD do prymitywnych 32


operacji (get first, get next,...), dziki czemu relacyjn

mediator
Warstwa porednia pomidzy lokaln baz danych a globalnymi aplikacjami.
Jest konieczny wtedy, gdy nie ma odwzorowania 1:1 pomidzy ontologiami.
Np. w jednej bazie podany jest zarobek brutto z ubezpieczeniem, w innej
zarobek brutto bez ubezpieczenia. Jak to sprowadzi do wsplnego
mianownika?
Zadania mediatora:

Mediatory

Perspektywy

! Rozstrzyganie rozbienoci pomidzy schematem lokalnym a


schematem federacyjnym.
! Wspomaganie dla wyowienia cech formalnych z danych
niesformatowanych.
! Selekcja waciwej informacji.
! Wspomaganie dla informacji sumarycznych, wyliczalnych oraz
o wikszym stopniu abstrakcji.

Zasady konstrukcji mediatorw nie s jasne. W wikszoci przypadkw mediator musi


! Wspomaganie
wykrywania
niezidentyfikowanych
by zaprojektowany
ad hoc,dla
pisany
technik niskiego
poziomu i przypisany do
33
konkretnejzwizkw
aplikacji (nie
uniwersalny).
w danych
(eksploracja danych).

view, database view

Perspektywa (view) jest to odwzorowanie schematu lokalnego w inny


(zmodyfikowany) schemat. Temu odwzorowaniu towarzyszy
odwzorowanie danych rzeczywistych lokalnej bazy danych na dane
wirtualne lub dane zmaterializowane (wyliczone). Przykadem s
perspektywy w SQL. Podstawowe problemy:

Perspektywy

! W przypadku istotnych rnic pomidzy schematami


lokalnymi baz danych, odwzorowanie ich w zadany
schemat moe by zoone lub niemoliwe. rodki
definiowania perspektyw np. w SQL s za mao
uniwersalne.
! Aktualizacja perspektyw (view updating): problem nie
jest rozwizany w stopniu zadowalajcym.
! Aplikacje (np. w C++) s czsto przywizane do 35
fizycznej postaci danych. Odwzorowanie ich w dane
wirtualne powoduje, e wikszo aplikacji przestaje

34

Perspektywa jak schemat


zewntrzny

W szerokim znaczeniu:
Perspektyw nazywa si odwzorowanie globalnego schematu bazy danych
(okrelajcego zapamitane zasoby danych) na schemat zewntrzny,
przystosowany do potrzeb i przyzwyczaje konkretnego uytkownika.
Architektura
ANSI/SPARC:

Uytkownik 1

Uytkownik 2

Uytkownik 3

Perspektywa 1

Perspektywa 2

Perspektywa 3

Schematy
zewntrzne

W tym sensie
pojcie perspektywy
funkcjonuje w literaturze z
zakresu modeli danych,
analizy i projektowania.

Schemat globalny

Projektant BD
Administrator BD

Poziom fizyczny
bazy danych

Administrator BD
36

Perspektywa jako odwzorowanie

W wszym znaczeniu:
Perspektyw okrela si nazwane odwzorowanie danych zapamitanych w
bazie danych na dane wirtualne, t.j. pochodne lub wyliczalne.
Matematycznie, perspektywa jest dowoln funkcj okrelon na danych.
Ten punkt widzenia nie jest jednak dostatecznie precyzyjny, gdy nie uwzgldnia
mechanizmw nazywania (naming), wizania (binding) i zakresu (scoping), ktre s
kluczowe, szczeglnie w przypadku obiektowoci z hierarchi klas, tosamoci
obiektw, hermetyzacj i innymi pojciami.
Bardziej precyzyjny punkt widzenia:
Perspektywa jest procedur funkcyjn, ktra (najczciej, ale niekoniecznie)
zwraca wynik bdcy dan typu masowego (zbir, wielozbir, sekwencj). Taki
wynik powinien by wyposaony w dodatkowe nazwy (np. nazwy atrybutw
wirtualnych obiektw zwracanych przez perspektyw).
Perspektywy znane z SQL mieszcz si w tej definicji. S to uproszczone procedury
funkcyjne, ktrych ciao mona sprowadzi do pojedynczego zdania:
return <zapytanie SQL>
37

Istnieje wiele wanych zastosowa perspektyw, ktre czyni z nich


Pogorcy
co s
perspektywy?
bardzo
i aktualny
temat.

! Uproszczenie modeli pojciowych dla


poszczeglnych uytkownikw.
! Uproszczenie zapyta poprzez wyliczane
obiekty, atrybuty, zwizki.
! Dostosowanie si do punktu widzenia i
terminologii dziedziny zastosowa
! Ograniczenie dostpu do obiektw, ochrona
prywatnoci.
! Ograniczenie dostpu w systemach
rozproszonych federacyjnych baz danych.

Perspektywy w relacyjnych bazach


danych

Jak s widziane perspektywy w


relacyjnych
BD?
Perspektyw wyznacza zapytanie, np. w SQL, plus drugorzdne rodki

Perspektyw okrela pewne zapytanie, np. SQL.


Zdanie definiujce perspektyw okrela nazwy atrybutw wirtualnej tabeli.

syntaktyczne i semantyczne, takie jak zmiana nazw kolumn wirtualnych tablic.


Po ewaluacji perspektywa zwraca tablic, koncepcyjnie taka sam jak
zapamitane tablice.

Zapamitana tabela:
Pracownicy( Id_pracownika, Imi, Nazwisko, Stanowisko, Kierownik,
Data_zatrudnienia, Zarobki, Premia, Id_dziau )

Popularn i efektywn technik przetwarzania perspektyw jest nie ich ewaluacja


(materializacja), lecz modyfikacja zapyta, traktujca perspektyw jako makrodefinicj, oraz czna optymalizacja tekstu zapytania z rozwinitym tekstem
definicji perspektywy.
Aktualizacja perspektyw jest ograniczona do pionowego/poziomego obcicia
zapamitanych tablic. Nie wystpuj i nie s dyskutowane rodki sterowania
intencj aktualizacji perspektywy.
Aktualizacja perspektyw odbywa si w tym samym jzyku, co ich definicja
(SQL); nie jest rozwaana (chocia by moe osigalna) aktualizacja perspektyw
z jzykw niszego poziomu (np. z C).

Definicja perspektywy:
CREATE VIEW Urzdnicy( Id_pracownika, Imi, Nazwisko, Zarobki )
AS
SELECT Id_pracownika, Imi, Nazwisko, Zarobki FROM Pracownicy
WHERE Stanowisko = urzdnik;

Uycie perspektywy:

(Zarobki urzdnika o nazwisku Nowak: )

SELECT Zarobki FROM Urzdnicy


WHERE Nazwisko = Nowak

39

Relacyjna baza danych z


perspektywami
Uytkownik lub

Dane wirtualne

Przykad relacyjnej bazyDCdanych


DNR CNR ILO

DNR NAZW STATUS MIASTO

Perspektywa
V1

D1
D2
D3
D4
D5

Perspektywa
V2

Abacki
Bober
Czerny
Dbek
Erbel

20
10
30
20
30

Lublin
Pozna
Pozna
Lublin
Radom

CZ

Dane rzeczywiste
(logiczne)

CNR NAZWAC
Tablica BD
B1

Tablica BD
B2

Perspektywy wolno uy w
zdaniach SQL (prawie) na
takich samych zasadach jak
zapamitanej tabeli. 40

DOSTAWCA

SQL

program aplikacyjny

38

Tablica BD
B3

Tablica BD
B4

C1
C2
C3
C4
C5
C6

Dane zapamitane
(fizyczne)
41

Nakrtka
Wkrt
Podkadka
Nit
Nit
Tulejka

KOLOR
Czarwony
Zielony
Niebieski
Czerwony
Niebieski
Czerwony

WAGA MIASTO
12
17
17
14
12
19

Lublin
Pozna
Rzeszw
Lublin
Pozna
Lublin

D1
D1
D1
D1
D1
D1
D2
D2
D3
D4
D4
D4

C1
C2
C3
C4
C5
C6
C1
C2
C2
C2
C4
C5

300
200
400
200
100
100
300
400
200
200
300
400

42

Przykad bardziej zoonej


perspektywy

Perspektywa OcenaDostawcy podaje numer dostawcy i sum dostarczanych przez


niego czci.
CREATE VIEW OcenaDostawcy( DNR, suma ) AS
SELECT DNR, SUM( ILO ) FROM DC
GROUP BY DNR;

Perspektywa DobryDostawca ustala DNR, nazwisko, status i sum dostarczanych


czci dla tych dostawcw, ktrzy dostarczaj ich ponad 600:
CREATE VIEW DobryDostawca( DNR, nazwisko, status, suma ) AS
SELECT V.DNR, D.NAZW, D.STATUS, V.SUMA
FROM DOSTAWCA AS D, OcenaDostawcy AS V
WHERE V.DNR = D.DNR AND V.SUMA > 600;

Rezultat:
Wirtualna tabela o postaci:
DROP VIEW DobryDostawca;

- usunicie perspektywy z bazy danych.

DobryDostawca
DNR nazwisko status suma
D1 Abacki
D2 Bober
D4 Dbek

20 1300
10 700
20 900 43

Perspektywy zmaterializowane
! Perspektywa jest wyliczona na zapas,
jej wynik jest przechowywany w bazie
danych na normalnych zasadach.
Aktualizacja danych stanowicych
podstaw wyliczenia pociga za sob
aktualizacj zmaterializowanej
perspektywy (lub jej skasowanie i
ewentualnie, ponowne wyliczenie).
! Tego rodzaju perspektywy okrela si
take jako zdjcie migawkowe
45
(snapshot).

Najpowaniejszym, nierozwizanym problemem jest aktualizacja perspektyw.


Aktualizacja wirtualnych danych jest oczywicie niemoliwa, wobec czego naley
zamieni t aktualizacj na aktualizacj zapamitanych danych.

Aktualizacja perspektyw
Aktualizacja

Dane wirtualne

! Perspektywa istnieje wycznie w


postaci definicji (np. zapytania,
procedury funkc.).
! Wyliczenie (materializacja) nastpuje w
momencie uycia perspektywy.
! Wynik jest konsumowany i nastpnie
kasowany (tak jak wynik procedury
funkcyjnej) .
! Zalety: nie ma dublowania danych,
problemw aktualizacji wyliczonych

Zasada przezroczystoci
perspektyw

44

view transparency

Z punkty widzenia uytkownika dowolne operacje na perspektywach nie


powinny niczym rni si od podobnych operacji na zapamitanych danych.
Np. jeeli w federacyjnej bazie danych administrator udostpnia tylko cz
danych poprzez perspektyw, wwczas programista kocowy nie powinien
by zmuszany do modyfikacji programw dziaajcych na zapamitanych
danych z tego powodu, e maj one teraz dziaa na perspektywach.
Warunek przezroczystoci perspektyw jest trudny, gdy:

! Dla pewnych odwzorowa danych zapamitanych


w wirtualne przyjte rodki definicji perspektyw
(np. SQL) mog okaza si niewystarczajce
(schematic discrepancies).
! Problem aktualizacji perspektyw pozostaje
nierozwizany.
46
! Pewne dane mog by manipulowane
wycznie przez przypisane im interfejsy, a nie

Dane wirtualne
Przykad aktualizacji perspektyw
(1)
Dane rzeczywiste

Pracownik
Dzia zatrudnia
Nazwisko
*
Nazwa
Zarobek

/MojeDziay
Nazwa
redniZarobek

Podwysz redni zarobek w dziale Krasnale ogrodowe o 500 z:

Perspektywa

Baza danych

Perspektywy wirtualne

Dane zapamitane

Na og odwzorowanie danych wirtualnych w dane zapamitane nie jest


jednoznaczne. Odwzorowanie aktualizacji danych wirtualnych w aktualizacje
danych zapamitanych mona zrobi na wiele sposobw. Czasami takie
47
odwzorowanie odwrotne w ogle nie istnieje.

update MojeDziay set redniZarobek = redniZarobek + 500


where Nazwa = Krasnale ogrodowe;

Zlecenie jest bdne, gdy:


Nie ma danej o nazwie redniZarobek.
Nawet gdybymy chcieli je poprawnie wykona na danych rzeczywistych, mamy
do wyboru nieskoczenie wiele sposobw. Prawdopodobnie tylko jeden z nich
satysfakcjonowaby naszego szefa, ktry wyda takie polecenie.
48

Przykad aktualizacji perspektyw (2)


Dane rzeczywiste

Dzia
Nazwa

Dane wirtualne

zatrudnia Pracownik
*
szef Nazwisko
Zarobek
0..1

/MoiPracownicy
Nazwisko
NazwiskoSzefa

Ograniczenia w aktualizacji
perspektyw
W klauzuli SELECT nie ma sowa DISTINCT

System Oracle:

W klauzuli FROM jest tylko jedna nazwa tabeli lub tylko jedna nazwa tabeli lub aktualizowalnej perspektywy
Na licie SELECT (wynikowej) znajduja si tylko nazwy kolumn

Przyjmujemy strategi implementacji perspektyw polegajc na tym, e po


wyliczeniu perspektywy MoiPracownicy zwraca ona referencje do nazwiska
pracownika i nazwiska jego szefa. Czy problem aktualizacji zosta rozwizany?

W klauzuli WHERE nie ma podzapytania


W zapytaniu nie mog wystpowa klauzule GROUP BY i HAVING

Pracownik Kowalski, pracujcy dla Styki, ma mie nowego szefa Nowaka.


update MoiPracownicy set NazwiskoSzefa = Nowak
where Nazwisko = Kowalski;

Tym razem aktualizacj mona wykona, za nowym szefem Kowalskiego bdzie


Nowak. Niestety, nasz system zmieni pewnemu pracownikowi nazwisko Styka na
nazwisko Nowak, a chodzio o zupenie co innego, mianowicie, o przeniesienie
Kowalskiego do innego dziau. Intencja tego zlecenia zostaa znieksztacona. 49

Dodatkowe moliwoci aktualizacji


perspektyw

W Oracle mona aktualizowa perspektywy powstajce w wyniku zczenia, ale


tylko atrybuty relacji znajdujce si po stronie klucza obcego:
CREATE VIEW MoiLudzie( IdPracownika, Nazwisko, IdDziau, NazwaDziau, Zarobek)
AS
SELECT p.Id_pracownika, p.Nazwisko, p.Id_dziau, d.Nazwa, p.Zarobek
FROM Pracownicy AS p, Dziay AS d
WHERE p.Id_dziau = d.Id_dziau AND p.Stanowisko = programista;
Podwyszy o 500 zarobki
wszystkim programistom z
dziau Krasnali ogrodowych:

UPDATE MoiLudzie
SET Zarobek = Zarobek + 500
WHERE NazwaDziau = Krasnale ogrodowe

OK.

Przenie programist Nowaka


do dziau Lalek Barbie:

UPDATE MoiLudzie
SET NazwaDziau = Lalki Barbie
WHERE Nazwisko = Nowak

le!
51

Klasyfikacja zoonoci perspektyw

Ta lista powinna by uzupeniona o wany warunek: mianowicie, wynikowa


wirtualna tablica powinna posiada peny klucz gwny (primary key) pewnej
zapamitanej tablicy. Warunek ten (Ch.Date) jest logiczn konsekwencj tego,
e identyfikacja zapamitanej krotki nastpuje wycznie na podstawie wartoci
klucza gwnego. W istocie jednak, systemy relacyjne odeszy od filozofii
klucza gwnego na rzecz wewntrznego identyfikatora krotki, w zwizku z
czym ten warunek okaza si zbdny.
50

Perspektywy s trudnym problemem


! Perspektywy s problemem, ktry
doczeka si efektywnych rozwiza w
relacyjnych bazach danych.
! Podstawowy problem - aktualizacja
wirtualnych danych - nie zosta rozwizany
w stopniu zadowalajcym.
! rodki definicji perspektyw w relacyjnych
bazach danych s ograniczone.
! Implementacje perspektyw nie zakadaj
sterowania intencj aktualizacji. Powoduje to,
52
e wszelkie zapowiedzi opanowania poprzez
perspektywy problemw takich jak

Kryteria aktualizowalnoci
perspektyw

! Proste perspektywy, np. definiowane poprzez


operatory selekcji i projekcji w relacyjnych BD.
Maa przydatno dla federacyjnych baz danych.

Brak nadmiarowej akualizacji. Jeeli uytkownik aktualizuje


pewien element perspektywy, nie powinien bezwiednie powodowa
aktualizacji innego jej elementu.

! Perspektywy bardziej zoone, np. wymagajce


zcze i grupowania, ale wyraalne w SQL i
OQL. Problemy z aktualizacj perspektyw i
wydajnoci.

Brak niedostatecznej/bdnej aktualizacji - wynik aktualizacji nie


powinien odbiega od intencji uytkownika. Np. uytkownik
aktualizuje zarobek netto o 100 z, tymczasem okazuje si, ze
faktyczna aktualizacja wyniosa 91,50 z.

! Perspektywy umoliwiajce zmian reprezentacji


danych.

Pozostae kryteria klasyfikacyjne: generyczno, moc, stopie uwzgldnienia poj


modelu
obiektowego, perspektywy
rekurencyjne,
perspektywy z parametrami,
! Perspektywy
uwzgldniajce
niezgodnoci
53
moliwoci aktualizacji perspektyw, moliwoci optymalizacji, itd.

schematw, np. zamieniajce atrybut Zawd z


wartociami piekarz, stolarz itd. na wirtualne

Brak efektw ubocznych aktualizacji. Np. takim efektem jest


zniknicie krotki z perspektywy BiednyPracownik (Zarobek < 500)
po zaktualizowaniu tego zarobku.
Podane kryteria s spekulatywnym stereotypem i dotycz sytuacji, kiedy translacja
aktualizacji perspektyw jest dokonywana w pewien automagiczny sposb.
! mie
Braksens,
spontanicznej
bazy danych
poza jej jest w rkach
Przestaj
jeeli pena aktualizacji
kontrola nad aktualizacj
perspektyw
fragmentem
widocznym poprzez perspektyw.
54
definiujcego
perspektyw.
!

Aktualizacja perspektyw w
relacyjnych BD

Perspektywy z opcj sprawdzania

CREATE VIEW MaoZarabiajcy( Nazwisko, Zarobek) AS


SELECT Nazwisko, Zarobek FROM Pracownicy
WHERE Zarobek < 500
WITH CHECK OPTION;

Kocowa klauzula oznacza brak efektw ubocznych w postaci znikania krotki po


aktualizacji perspektywy.

UPDATE MaoZarabiajcy
SET Zarobek = Zarobek + 500
WHERE Nazwisko = Marucha

Taka aktualizacja spowoduje, e Marucha


zostanie usuniety z perspektywy (ale
oczywicie, nie z bazy danych)

CHECK OPTION oznacza, e ta aktualizacja zostanie odrzucona.

55

capacity augmenting views, stateful views

Perspektywy ze stanem

! Dua liczba artykuw, gwnie teoretycznych,


ale (poza opisanymi praktycznymi
rozwizaniami) rezultaty tego nurtu s gorzej
ni mizerne.
" Artykuy zakadaj jaki "automagiczny"
sposb aktualizacji perspektyw, bez
sterowania intencj aktualizacji.
" rodki formalne modelu relacyjnego (algebra
relacji i inne) s nieprzystosowane do operacji
imperatywnych takich jak aktualizacja.
! Model relacyjny nie zaoferowa dostatecznie
uniwersalnego formalizmu do opisu konstrukcji
imperatywnych, procedur, metod, itd.

56

Przetwarzanie perspektyw w
zapytaniach
Materializacja. Perspektywa jest cakowicie liczona w momencie, kiedy sterowanie

Obowizuj dwie strategie:

Klasyczne perspektywy udostpniaj (w inny sposb) informacje, ktra ju s


zapamitane w bazie danych. Czsto takie ograniczenie jest nieakceptowalne.
Lokalna BD zawiera atrybut stanowisko, ktrego wartoci s numery 11,
Przykad 45, 77, itd., gdzie 11 oznacza projektant, 45 oznacza analityk, 77 oznacza
sprztaczka, itd. Federacja wymaga penych nazw zawodw. Potrzebna jest
1:
dodatkowa funkcja, ktra zamieni numery na stringi. Definicja perspektywy
musi wic zawiera definicj trwaej tabeli z numerami i stringami.

programu/zapytania osignie punkt, w ktrym wynik tej perspektywy staje si niezbdny


dla dalszego przetwarzania. Kade odwoanie si do perspektywy powoduje jej ponowne
wyliczenie (dla uniknicia niespjnoci zwizanych z ewentualn aktualizacj BD). Ta
strategia moe by optymalizowana poprzez zmaterializowane perspektywy.

Modyfikacja zapyta (query modyfication). Tekst zapytania, w ktrym wystpuje


Przykad
2:

Dla celw kontroli utworzona jest perspektywa w postaci tabeli


WynikiKontroli( NrUrzdzenia, NazwaUrzdzenia, OcenaKontrolera )

odwoanie do perspektywy, jest scalany z tekstem definicji perspektywy. Nastpnie takie


rozwinite zapytanie jest wsplnie optymalizowane na normalnych zasadach. W tej
strategii definicja perspektywy jest traktowana jako makro.

NrUrzdzenia i NazwaUrzdzenia pochodz z lokalnej BD. Natomiast


OcenaKontrolera jest atrybutem, ktrego w lokalnej BD nie ma. Jest on
wasnoci globalnej aplikacji, gdzie kontroler wpisuje swoj ocen. Jest to
zapamitany atrybut, wprowadzony na potrzeby tej perspektywy.

Poniewa wczeniejszy SQL nie dopuszcza klauzuli SELECT wewntrz klauzuli FROM,
kwestia banalnego tekstowego zastpowania przybraa cudaczne formy, owocujc w
super-naukowe algorytmy :-) (Stonebraker et al). W SQL-92 t wad usunito.

Perspektywy ze stanem (oraz autonomia lokalnych BD) oznaczaj konieczno


wprowadzenia na poziomie federacji specjalnej BD przechowujcej dane niezbdne
57
do definicji perspektywy. Komplikuje to architektur federacyjnej bazy danych.

W rnych sytuacjach pierwsza lub druga strategia moe by bardziej optymalna, ale
najczciej strategia modyfikacji zapyta jest bardziej skuteczna. Z tego powodu jest
58
ona standardem we wszystkich relacyjnych SZBD.

Przykad modyfikacji i optymalizacji


CREATE VIEW Urzdnicy( Id_pracownika, Imi, Nazwisko, Zarobki ) AS
SELECT Id_pracownika, Imi, Nazwisko, Zarobki FROM Pracownicy
zapytania

Definicja
perspektywy:

Uycie
perspektywy:

WHERE Stanowisko = urzdnik;

SELECT Zarobki FROM Urzdnicy


WHERE Nazwisko = Nowak

Po tekstowej
modyfikacji
zapytania:

SELECT Zarobki FROM


(SELECT Id_pracownika, Imi, Nazwisko, Zarobki FROM Pracownicy
WHERE Stanowisko = urzdnik)
WHERE Nazwisko = Nowak

Usunicie
zbdnych
astrybutw:

SELECT Zarobki FROM


(SELECT Nazwisko, Zarobki FROM Pracownicy
WHERE Stanowisko = urzdnik)
WHERE Nazwisko = Nowak

Ostateczna
optymalizacja:

SELECT Zarobki FROM Pracownicy


WHERE Stanowisko = urzdnik AND Nazwisko = Nowak

Perspektywy czce dane


zapamitane i wirtualne

Dla integracji systemw spadkowych lub sfederowanych potrzebne s perspektywy,


ktre cz w jedn kolekcj zarwno dane wirtualne (odwzorowanie danych ze
starszych systemw) jak i dane rzeczywiste (pochodzce z nowszych systemw).
Stary system:

StaryStudent (Id, Nazwisko, RokStudiw, redniaOcena )

Nowy system:

NowyStudent (Id, Nazwisko, NrIndeksu )

Pewne atrybuty znikny, pojawi si nowy.


Tego rodzaju sytuacje mona sprowadzi do sumy dwch perspektyw: jednej
dziaajca na starych danych i drugiej dziaajcej na starych i nowych:
CREATE VIEW StaryNowyStudent( Id, Nazwisko, NrIndeksu) AS
SELECT Id, Nazwisko, NULL FROM StaryStudent
CREATE VIEW Student( Id, Nazwisko, NrIndeksu) AS
SELECT * FROM StaryNowyStudent
UNION
SELECT * FROM NowyStudent

59

Pozostaj
problemy spjnej
aktualizacji oraz
wydajnoci.
60

10

Aktualizacja zmaterializowanych
perspektyw

Gwny problem w aktualizacji zmaterializowanych perspektyw polega na tym, jak


unikn ponownego generowania caej zmaterializowanej perspektywy po
aktualizacji bazy danych. Istniej dwie strategie:
Okrelenie kryteriw do stwierdzenia, e dana aktualizacja nie wpywa na
wyliczon zmaterializowan perspektyw.
Np. najprostsze kryterium moe by nastpujce:
Jeeli zlecenie aktualizacyjne uywa nazw danych n1, n2,..., definicja perspektywy uywa
nazw m1, m2,... przy czym zbiory {n1, n2,...} i {m1, m2,... } s rozczne, wwczas
zlecenie aktualizacyjne nie wpywa na wynik materializacji perspektywy.

Ustalenie zwizku pomidzy fragmentami bazy danych i fragmentami


zmaterializowanej perspektywy w taki sposb, aby dany fragment
zmaterializowanej perspektywy by funkcj danego fragmentu bazy danych.
W tym przypadku moliwa jest aktualizacja przyrostowa (incremental), tj. po aktualizacji
bazy danych modyfikowany/przeliczany jest tylko fragment perspektywy. Metoda zaley
od formy definicji perspektywy. Moliwe jest wczenie aktywnych regu wyzwalajcych
przeliczenie fragmentw zmaterializowanej perspektywy.

Mao prac zajmuje si odwzorowaniem aktualizacji perspektywy na aktualizacj


oryginalnych danych, ale problem bardzo przypomina techniki replikacji. 61

Perspektywy obiektowe (1)


! Wskutek wtoczenia w problem perspektyw
ogromnej liczby poj obiektowych i innych,
przy braku spjnego i jednorodnego modelu
formalnego, propozycje rozwizania tego
problemu s partykularne, nieregularne,
niedostatecznie generalne, obcione
drugorzdnymi szczegami, sporym
bagaem syntaktycznym i mtnymi
dywagacjami semantycznymi.
62
! Podstawowa metoda przetwarzania
perspektyw, czyli modyfikacja zapyta, zostaa

Refleksja nt. obiektowych


perspektyw...

Problem obiektowych perspektyw dla prostego przypadku jest banalny.

Perspektywy obiektowe (2)


! Nie wystpuj rodki sterowania intencj
aktualizacji perspektywy.
Nie wystpuj
perspektywy rekurencyjne i perspektywy z
parametrami. wiat nie dojrza...
! Problemem s niespjne i ograniczone
podejcia do obiektowych jzykw zapyta.
Funkcjonuje dua ilo faszywych
stereotypw, z ktrych cz pochodzi ze zbyt
dosownego przeniesienia do obiektowoci
63
paradygmatw modelu relacyjnego

Podejcia do obiektowych
perspektyw

Podejcie Abiteboula i Bonnera, Rundensteinter et al (MultiView), Kifera, Kima i


Sagiva, Scholla et al (COOL/COCOON), LIVING IN A LATTICE, Edera i inne.
Rnice pomidzy tymi podejciami polegaj na arbitralnym wyborze wasnoci
perspektyw i ustaleniu dla nich konstrukcji skadniowej. Konstrukcja ta obejmuje
szereg ortogonalnych cech pochodzcych z dwch wymienionych na pocztku
pogldw na pojcia perspektywy oraz ich potencjalnych zastosowa (np.
ograniczenie dostpu, zintegrowanie z systemem klas, itd.)
Moje podejcie jest rne od zaproponowanych. Polega na przyjciu zaoenia, e:
Perspektywa jest procedur funkcyjn zdefiniowan w jzyku zapyta,
zwracajc kombinacj referencji, nazw i wartoci.
To pocztkowe zaoenie jest nastpnie nieco modyfikowane.
Tak rozumiana perspektywa korzysta z normalnych wasnoci obiektowych struktur
danych, w szczeglnoci, struktury moduw i klas, rodkw ograniczenia dostpu,
itd. rodki dodatkowe dla tak rozumianej perspektywy s ograniczone do minimum.
65

! Mona przyj, e perspektywa wyznacza


podzbir obiektw pewnej klasy, za caa
semantyka rzeczywistych obiektw jest
przeniesiona do obiektw wirtualnych. To
rozwizanie mona wzmocni ograniczeniem
dostpu do pewnych atrybutw (patrz rozwizanie
w O2 lub COCOON)
! Podejcie to mona zastosowa w stosunku do
aktualizacji perspektyw. Analogi s perspektywy
w SQL z wykorzystaniem wycznie selekcji.
64
! Generalny problem perspektyw jest trudny,
poniewa brakuje uniwersalnego modelu

Perspektywy jako procedury


funkcyjne

Konieczne jest okrelenie:

! Gdzie taka procedura funkcyjna jest umieszczona


w strukturze obiektowej? W zalenoci od tego,
moemy mie wirtualne obiekty, jeeli procedura
jest na czubku struktury obiektowej, lub wirtualne
atrybuty, jeeli procedura jest metod
zdefiniowan wewntrz klasy.
! Na jakim rodowisku taka funkcja dziaa? Chodzi
o reguy zakresu. Jak wynik takiej procedury ma
by podczony do istniejcych lub nowych klas?
! Co taka procedura funkcyjna zwraca? Chodzi o
66
ich dziedzin semantyczn.
! W jaki sposb wynik takiej procedury (czyli

11

Przetwarzanie zapyta w
rozproszonych BD

Przetwarzanie zapyta powinno minimalizowa zarwno obcienie linii


transmisyjnych jak i pracochonno przetwarzania po stronie klienta
(globalnej aplikacji) jak i po stronie serwerw.

Przetwarzanie zapyta

67

Strategie optymalizacji zapyta w


rozprosz. BD

Indeksowanie rozproszonych

! Przetwarzanie wycznie po stronie klienta.


Pobiera on wszystkie dane potrzebne do realizacji
zapytania do swojego obszaru => duy czas i koszt
transmisji danych, mae problemy koncepcyjne.
! "Statyczna" (jednoczesna) dekompozycja zapytania
na podzapytania, wysanie ich do lokalnych miejsc,
przesanie rezultatw podzapyta do klienta, ktry
czy tych rezultaty w globalny rezultat. Skuteczna dla
podziau poziomego danych i zapyta ograniczonych
do selekcji/projekcji, nieskuteczna dla zapyta
zoonych.
! "Dynamiczna" dekompozycja: generacja
podzapytania do miejsca 1 i przesanie wyniku 1 do

! Przetwarzanie wycznie po stronie klienta (gruby


klient): ogromne obcienie linii transmisyjnych.
! Przetwarzanie wycznie po stronie serwerw
(chudy klient): moe powsta wskie gardo
wskutek tego, e jednoczenie wielu klientw
bdzie da usugi od jednego serwera.
! Generalna zasada: "wylij zapytanie do danych, a
nie dane do zapytanie" nie dla wszystkich
przypadkw jest suszna i rodzi problemy
koncepcyjne.
68
! Przetwarzanie zapyta odbywa si poprzez:

69

Statyczny schemat przetwarzania


zapyta (1)

1. Klient realizuje zapytanie Z odwoujce si do danych na serwerach S1,


S2,..., Sk
2. Klient dokonuje odwzorowania zapytania Z na zapytania Z1, Z2, ... , Zk
adresowane do serwerw S1, S2,..., Sk. Odwzorowanie wymaga
znajomoci lokalnych schematw danych.
3. Zapytania Z1,Z2,...,Zk s konstruowane z Z w taki sposb, aby wyniki
tych zapyta W1, W2,...,Wk uzyskane z poszczeglnych serwerw day
moliwo utworzenia globalnego wyniku W.
4. Zapytania Z1,Z2,...,Zk s kierowane do serwerw S1, S2,..., Sk, gdzie s
wykonywane.
5. Serwery zwracaj do klienta wyniki W1, W2,...,Wk zapyta Z1,Z2,...,Zk
6. Klient dokonuje scalenia wynikw W1, W2,...,Wk w globalny wynik w.
71

!zasobw
Szczeglnie istotne w przypadku technologii
P2P, ale nie tylko.
! Indeks centralny, adresujcy cae zasoby
rozproszonej sieci. Przykadem wykorzystania
indeksw centralnych jest Napster oraz liczne
motorki wyszukiwawcze takie jak Google lub
AltaVista,
! Indeksy lokalne replikowane, trzymane przez
klientw celem szybkiego zlokalizowania miejsc
z interesujcymi danymi. W tym przypadku dua
cz optymalizacji zapytania moe by
wykonana przez klienta zanim on wyle zlecenia
70
do odlegych serwerw.

Statyczny schemat przetwarzania


zapyta
(2)
Serwer S1
Klient
Z1
Z2

Dekompozycja zapytania Z
Scalenie wynikw

W1

Serwer S2
W2

...

Zk

Wynik W zapytania Z
Wk

Serwer Sk

! Statyczny schemat ma przede wszystkim


zastosowanie w przypadku poziomej fragmentacji
danych, np. rozbicia obiektw Pracownik na wiele
podzbiorw o takiej samej budowie
przechowywanych na poszczeglnych serwerach.
! W tym przypadku dekompozycja zapytania oznacza
72
po prostu jego skopiowanie: Z = Z1 = Z2 = ... = Zk

12

Dynamiczny schemat przetwarzania


zapyta
2. Klient dokonuje odwzorowania zapytania Z na podzapytanie Z1 adresowane do serwera S1
1. Klient realizuje zapytanie Z odwoujce si do danych na serwerach S1, S2,..., Sk

(na podstawie schematu S1). Z1jest konstruowane z Z w taki sposb, aby jego wynik W1
uzyskany z S1 wystarczy do realizacji zapytania Z.
3. Z1jest kierowane do serwera S1, gdzie jest wykonywane. Serwer S1 zwraca do klienta
wynik W1 podzapytania Z1.

semijoin

Przykad: technika p-zcze (1)

Serwer 1

Serwer 2

DOSTAWCA

DC

DNR NAZW STATUS MIASTO

DNR CNR ILO

D1 Abacki
D2 Bober
D5 Erbel

20 Lublin
10 Pozna
30 Radom

D1
D1
D2
D2
D3
D4
D4
D4

4. Na podstawie znajomoci W1 klient konstruuje z Z kolejne podzapytanie Z2 kierowane do


serwera S2. Moe do tego serwera skierowa pewien fragment W1, nazwijmy go F1;
.... proces jest powtarzany dla wszystkich serwerw, a do uzyskania rezultatu.
Klient

Z Z1
(Z, W1) Z2, F1

(Z, W1, W2) Z3, F2


Scalenie wynikw

Z1
W1

Serwer S1

Z2, F1
W2

select * from DOSTAWCA, DC


where DOSTAWCA.DNR = DC.DNR

Serwer S2

Serwer S3
73

W celu realizacji zapytania klient musi wykona nastpujce czynnoci:


1. Sciag dane z serwera 1 przy pomocy zapytania Z1:
select * from DOSTAWCA
Uzyska w ten sposb wynik W1.

Przykad: technika p-zcze (2)


W1
DNR NAZW STATUS MIASTO
D1 Abacki
D2 Bober
D5 Erbel

200
100
300
400
200
200
300
400

Klient ma dokona zczenia relacji DOSTAWCA i relacji DC:

Z3, F2
W3

C4
C5
C1
C2
C2
C2
C4
C5

20 Lublin
10 Pozna
30 Radom

74

Przykad: technika p-zcze (3)

4. Uzyska w ten sposb wynik W2: Jest to tzw. p-zczenie relacji DC,
parametryzowane relacj DOSTAWCA.
W2

DNR CNR ILO


D1
C4
200
D1
C5
100
D2
C1
300
D2
C2
400

P-zczenie relacji R1, parametryzowane relacj


R2, powstaje poprzez zczenie R1 z R2, a
nastpnie projekcj wyniku na atrybuty relacji R1

5. Przesya wynik W2 - p-zczenie - do klienta


6. Klient dokonuje ostatecznego scalenia wynikw - zczenia relacji W1 i W2.

2. Tworzy pomocnicz tabel poprzez projekcj W1 na DNR: t tabel nazywa F1.


F1
DNR
D1
D2
D5

3. Wysya tabel F1 do serwera 2 dajc tymczasowego ulokowania jej w bazie


danych serwera 2; nastpnie wysya tam zapytanie Z2:
75
select * from DC, F1 where DC.DNR = F1.DNR

Wynik
DNR
D1
D1
D2
D2

NAZW STATUS MIASTO CNR ILO


Abacki
20 Lublin
C4
200
Abacki
20 Lublin
C5
100
C1
300
Bober
10 Pozna
Bober
10 Pozna
C2
400

W zalenoci od oceny kosztw przetwarzania i transmisji klient moe zacz od


76
cignicia danych z serwera 2 i nastpnie dokona p-zczenia relacji DOSTAWCA.

13

Temporalne i historyczne bazy danych


! HISTORYCZNE BAZY DANYCH (HBD) pozwalaj na zapis czasu
rzeczywistego s to niemalejce kolekcje danych, co oznacza ich
nieustanny rozwj w sensie logicznym i fizycznym.
! Podstawowym typem zapyta w HBD s zapytania o histori wartoci
atrybutw obiektw (encji, zdarze) w bazie.
! Bazy danych, ktre pozwalaj odtworzy histori stanw systemu to
tzw. transakcyjne bazy danych, za czas, w ktrym nastpia zmiana
bazy danych (zapis zmian) nazywa si czasem transakcyjnym.
! Baza, ktra umoliwia zapis zarwno czasu rzeczywistego
transakcyjnego to baza transakcyjna lub inaczej BITEMPORALNA
BAZA DANYCH.
! Czas transakcyjny zwykle jest pniejszy ni czas rzeczywisty, ale nie
zawsze wiadczy on o opnieniu procesu wprowadzania danych do
bazy danych, lub moe by wczeniejszy, gdy informacj o jakim
fakcie wprowadzono zanim miaa ona miejsce w rzeczywistoci.

Definicje cd..
! Czas transakcyjny nie moe by jednak pniejszy ni czas aktualny.
Zapisy czasu transakcyjnego mog suy do analizy tzw. wskich
garde systemw oraz ujawnia rda bdnych decyzji, ktre oparte
byy na zdezaktualizowanych danych.
! Bitemporalne bazy danych s odpowiedzi na problem korekty danych
w taki sposb, by bdna informacja nie zostaa utracona bdne
zapisy s traktowane jako element historii opisu obiektw w bazie
danych.
! Do obsugi baz temporalnych (bitemporalnych) utworzono specjalne
jzyki manipulacji danymi temporalnymi

TSQL (Temporal SQL,rozszerzony SQL)

Definicje cd..
Wrd teoretycznych koncepcji s dwie podstawowe grupy jzykw
manipulowania danymi temporalnymi:
" Jzyki oparte o istniejce jzyki zapyta (np.: HQUEL-Historical
Query Language i TQL Temporal Query Language),
" Nowe konstrukcje utworzone specjalnie dla potrzeb technologii
TPD (np.: Legal 2.0, Time-By-Example oraz jzyki wykorzystujce
nowe operatory logiczne oparte m.in. na rwnoci czasowej =T,
koniunkcji ANDT , negacji NOTT itp.)
Ze wzgldu na zakres zastosowa wyrni mona trzy grupy jzykw
manipulowania danymi temporalnymi:
" Uwzgldniajce czas rzeczywisty (HSQL, TSQL),
" Uwzgldniajce czas rzeczywisty i transakcyjny (TSQL2),
" Pozwalajce formuowa pytania dotyczce dynamiki powiza i
konstrukcji relacji (SQL/SE).

! Konstrukcja jzyka manipulowania danymi temporalnymi wymaga


przeprowadzenia tzw. normalizacji czasowej
! Dla prezentacji jzyka TSQL zamy, e mamy relacje temporalne
opisujce ceny i towary w nastpujcy sposb:
CENA(towar, cena, TS, TE)
DOST(towar, dostawca, TS, TE)
gdzie TS=czas pocztkowy(TIME-START),
TE=czas kocowy (TIME-END),
interwau, w ktrym warto atrybutu przyjmowaa
okrelon warto.
! Dla oznaczenia odstpu czasu wprowadzono operator INTERVAL a
programista odwoujcy si do bazy danych uwarunkowanej czasem, w
TSQL jest zwolniony z programowej obsugi czasu, gdy wszystkie
zwizane z czasem czynnoci przejmuje system DBMS.
! W klauzuli WHERE mona posuy si predefiniowanymi specjalnymi
operatorami czasowymi.

Operatory czasowe w TSQL

Przykady zapyta w TSQL

[t1,t2] BEFORE [t3,t4] t2<t3

Jakie byy ceny yek, gdy ich dostawc bya firma A?

[t1,t2] DURING [t3,t4] t1>=t3 i t2<=t4

SELECT cena
FROM CENA
WHERE CENA.towar = DOST.towar
AND DOST.towar=yki
AND DOST.dostawca = A
WHEN CENA.INTERVAL OVERLAP
DOST.INTERVAL

[t1,t2] AFTER [t3,t4] t1>t4


[t1,t2] EQUIVALENT [t3,t4] t1=t3 i t2=t4
[t1,t2] ADJACENT [t3,t4] t3-t2=1 lub t1-t4=1
[t1,t2] OVERLAP [t3,t4] t1<=t4 i t3<=t2
[t1,t2] FOLLOWS [t3,t4] t1-t4=1
[t1,t2] PRECEDES [t3,t4] t3-t2=1
gdzie t1, t2, t3, t4 oznaczaj odpowiednie chroniony

Przykady zapyta w TSQL cd..

Klauzula Time-Slice

Jaka firma dostarczaa widelce przed firm, ktra dostarcza je


obecnie?
SELECT B.dostawca
FROM DOST as A, DOST as B
WHERE A.towar = B.towar
AND A.towar=widelce
AND A.TIME-END=nadal
WHEN B.INTERVAL BEFORE
A.INTERVAL

! Kade pytanie o dane zmienne w czasie mona ucili przy


pomocy klauzuli TIME-SLICE, dziki czemu mona wskaza,
jakiego czasu dotyczy pytanie,
! Oprcz jawnego wskazania czasu (MONTH, YEAR, DAY,)
mona to uczyni przy pomocy staej NOW, ktra wskazuje na
aktualny czas w systemie
Przykad
Jeli chcemy ograniczy zasig pytania do okresu trzech ostatnich
miesicy wystarczy wwczas dopisa do zapytania selekcyjnego
klauzul

TIME-SLICE month[NOW-3, NOW]

gdzie nadal umieszczono w sytuacji, gdy zdarzenie aktualnie trwa

a gdybymy chcieli uzyska informacj z lat 1990-1993, to


naleaoby uy klauzuli:

TIME-SLICE year[1990, 1993]


7

Klauzule okrelajce kolejno

Klauzula MOVING WINDOW

FIRST, SECOND, THIRD, nTH., LAST

Pozwala ona na przegldanie bazy w okrelonym przedziale


czasu ma zastosowanie w analizie szeregw czasowych i
diagnozowaniu, gdzie wyszukiwanie takich szczeglnych
okresw moe pomc w ustaleniu istotnych zmian w dziaaniu
systemw

Dziki tym klauzulom mona uzyska odpowied na pytanie o


kolejne zmiany wartoci atrybutw.
Przykad
Kto by drugim w kolejnoci dostawc yek?

Przykad
Wywietli towary, ktrych dostawcy zmienili si wicej ni 3 razy w
okresach trzymiesicznych:

SELECT towar
FROM DOST
MOVING WINDOW 3
months
HAVING COUNT(*)>3

SELECT SECOND
dostawca
FROM DOST
WHERE towar=yki

10

Temporalne bazy danych

Model Snodgrassa

! Bazy danych temporalnych powstay jako rozszerzenie baz


relacyjnych
! Bazy danych relacyjnych z reprezentacj temporaln wyrnia si
modele relacyjne zachowujce 1 NF i odstpujce od 1 NF.
! Do reprezentacji danych w modelu odstpujcych od 1 NF stosuje
si do dziedziny czasowej element reprezentujcy warto
nieokrelon.

W modelu SNODGRASSA stan w dowolnej chwili jest


zapisywany przez cztery atrybuty czasowe:
! Ts czas pocztkowy, w ktrym rozpoczyna si okres
przechowywania danych w bazie danych (pocztkowy czas
transakcyjny),
! Te czas kocowy, w ktrym koczy si okres
przechowywania danych w bazie danych (kocowy czas
transakcyjny),
! Vs czas pocztkowy, w ktrym rozpoczyna si zdarzenie
(pocztkowy czas rzeczywisty zdarzenia)
! Ve czas kocowy, w ktrym koczy si zdarzenie
(kocowy czas rzeczywisty

11

12

Model Snodgrassa cd..

Model Ben-Zvi

Tabela ROR przechowuje salda (stany) rachunku oszczdnocioworozliczeniowego (wartoci nieokrelone oznaczono w tabeli ROR
znakiem -):
Rachunek

Ts

Te

Vs

Ve

250

10

R1

450

10

R2

1000

R1

saldo

W modelu BEN-ZVI stan w dowolnej chwili jest zapisywany przez


pi nastpujcych atrybutw czasowych:
! Tes (effective start) czas, w ktrym informacje zaczy
by
prawdziwe,
! Trs (registration start) czas, kiedy zarejestrowano Tes,
! Tee (effective end) czas, kiedy informacje przestay by
prawdziwe,
! Tre (registration end) czas rejestracji Tee,
! Td (deletion) czas, kiedy informacje przestay by
aktualne w
bazie.

13

14

Model Ben-Zvi cd..

Model Jensena

Tabela
ROR
przechowuje
salda
(stany)
rachunku
oszczdnociowo-rozliczeniowego
(wartoci nieokrelone
oznaczono w tabeli ROR znakiem - ):

Moliwa jest rwnie jeszcze inna reprezentacja zdarze w


postaci rejestru operacji. Tak reprezentacj zaproponowa
JENSEN. Koncepcja ta zachowuje 1 NF. W relacji wystpuj
cztery atrybuty zwizane z czasem zdarzenia, a mianowicie:

Rachunek

Tes

Tee

Trs

Tre

Td

250

10

10

R1

450

10

R2

1000

R1

Saldo

!Vs pocztek okresu modelowanej krotki,


!Ve koniec okresu modelowanej krotki,
!T czas, w ktrym krotk wstawiono do rejestru,
!Op zawiera informacj, o tym czy jest to operacja wstawiania
(I) czy usuwania (D).
Aktualizacja w rejestrze jest zapisywana jako sekwencja usuwania i
wstawiania z tym samym czasem T.

15

Model Jensena cd..

Model Galia

Tabela ROR przechowuje salda (stany) rachunku oszczdnocioworozliczeniowego (wartoci nieokrelone oznaczono w tabeli ROR
znakiem -):
Rachunek

saldo

16

Przykadem reprezentacji wymiaru czasu zdarzenia, ktra nie


zachowuje 1 NF jest propozycja opracowana przez GALIa.
Wykorzystuje ona tzw. znaczniki czasowe atrybutw, przy
pomocy ktrych przechowuje si histori stanw relacji o
schemacie R(A1, A2,...,An) w ten sposb, e kada krotka skada
si z n zbiorw.

Vs

Ve

Op

R1

250

R1

250

10

Elementami zbiorw s trjki skadajce si z :

R1

450

R2

1000

!Warto atrybutu,
!Przedzia czasowy okrelajcy rejestracj danych w bazie
danych.

17

18

Model Galia cd..

Model McKenziego

Tabela ROR przechowuje salda (stany) rachunku oszczdnocioworozliczeniowego (wartoci nieokrelone oznaczono w tabeli ROR
znakiem -):
Rachunek

saldo

(R1, [3,-], [5,-])

(250, [3,6], [5,10])


(450, [7,-], [11,-])
(1000, [3,-], [5,-])

(R2, [3,-], [5,-])

Inn reprezentacj, ktra nie zachowuje 1 NF jest


koncepcja McKEZIego. Tu historia stanw relacji
R(A1, A2,...,An) przechowywana w relacji o schemacie
(T,VR). VR jest tu relacj przechowujc atrybuty (A1,
A2,...,An) wraz ze znacznikami czasowymi ich
wartoci. Dla powyszego przykadu reprezentacja ta
jest nastpujca:

19

Czas w obiektowych bazach


danych

Model McKenzjego cd..


Tabela ROR przechowuje salda (stany) rachunku oszczdnocioworozliczeniowego (wartoci nieokrelone oznaczono w tabeli ROR
znakiem -):
T

5
11

20

Model obiektowy zapewnia bardziej kompletny opis semantyki


rzeczywistoci temporalnej. Zastosowania tego modelu s jeszcze
ograniczone z tendencj wzrostow. Wynika to z oglnych trudnoci w
stosowaniu baz obiektowych (brak standardu, trudniejsze aplikacje,
drosze rozwizania).
W celu waciwego ujcia czasu w ramach modelu obiektowego trzeba
posugiwa si w implementacji nastpujcymi zasadami modelowania
temporalnego:
! Zasada temporalnego rozszerzenia temporalny model obiektowy
powinien by rozszerzeniem klasycznego modelu obiektowego,
! Zasada temporalnej ewolucji obiektw model temporalny powinien
obejmowa zmiany waciwoci obiektw w czasie, ujmujc czas
rzeczywisty i transakcyjny zmian, zachowujc jednoczenie histori i
tosamo obiektw, pomimo zmian rl i zachowania,
! Zasada temporalnej spjnoci w danym momencie czasu
rzeczywistego warunek zwizany z obiektem i jego waciwociami nie
moe by jednoczenie prawdziwy i faszywy,

VR

(R1 [3,6], 250 [3,6])


(R2 [3,-], 1000 [3,-])
(R1 [7,-], 450 [7,-])

21

Czas w obiektowych bazach


danych cd..

22

Przykad rozszerzenia modelu


obiektowego o temporalno

! Zasada temporalnej reprezentacji zdarzenia powinny by


reprezentowane w temporalnym modelu obiektowym, w takiej samej
kolejnoci, w jakiej wystpuj w opisywanej rzeczywistoci,
! Zasada temporalnej niekompletnoci temporalne modele obiektowe
powinny zapewni moliwoci uwzgldniania niekompletnoci
informacji o zmianach stanw obiektw w okrelonych okresach
czasu,
! Zasada abstrakcji temporalnej temporalny model obiektowy
powinien reprezentowa abstrakcyjne pojcia temporalne typu:
kiedy, przed. Aktualnie nie okrelono jeszcze jednoznacznie zbir
takich poj,
! Zasada temporalnego oddziaywania temporalny model obiektowy
powinien zawiera zbir operacji, uywanych do definiowania wpywu
na wartoci atrybutw, w okrelonych momentach czasowych,
! Zasada czasowo wprowadzonych danych zasada ta stwierdza, e
nieznany stan obiektu jest taki sam jak warto zarejestrowana dla
najbliszego poprzedniego stanu obiektu.
23

Rozszerzenie polega na wyodrbnieniu trzech podstawowych klas


obiektw:
! Zasb,
! Zdarzenie,
! Proces
ZDARZENIE

OPERACJA

STAN

OBIEKT
! Zdarzenia powoduj inicjowanie operacji (dziaa), w tym operacji
przetwarzania danych.
! Operacje powoduj zmian stanu obiektu (obiektw) lub wytworzenie
nowego obiektu.
! Obiekty to fizyczne lub abstrakcyjne byty (wielkoci), trwajce w
czasie, opisywany zestawem waciwoci (atrybutw).
24

Przykad rozszerzenia modelu


obiektowego o temporalno

Przykad rozszerzenia modelu


obiektowego o temporalno cd..

Podstaw definiowania wymiaru czasu obiektw i atrybutw


przynalenych do klas s nastpujce temporalne typy danych:
! Punkt czasowy (chronon czasu) za pomoc ktrych definiuje si
moment wystpienia dowolnego zdarzenia, np.: utworzenie obiektu,
przyjcie okrelonej wartoci przez atrybut obiektu; wany jest
algorytm doboru chrononu,
! Przedzia czasowy okrelajcy punkt pocztkowy i kocowy trwania
czasu zjawiska (np.: okres leczenia pacjenta); ten typ wymaga
jednolitego typu chrononu dla punktu pocztkowego i kocowego
przedziau,
! Czas trwania okrela dugo okresu trwania stanu lub zjawiska,
wyraona w liczbie chrononw okrelonego typu (sek., min. Godz.).

25

Zaproponowany temporalny model obiektowy wyodrbnia dwa typy atrybutw


obiektw, a mianowicie:
! Atrybut statyczny jest to taki atrybut, ktrego warto nigdy nie ulega
zmianie, np.: PESEL w obiekcie PRACOWNIK. Wystpienia w takich obiektach
s reprezentowane przez par <w,t>, gdzie w=warto a t=czas wyraony
jednostk z temporalnych typw danych. Wszystkie atrybuty o typie
temporalnym s automatycznie atrybutami statycznymi, w ktrych t jest stay i
wyraa np.: czas przyjcia pracownika do pracy.
! Atrybut dynamiczny jest to atrybut zmienny w czasie . Reprezentacj
wartoci takiego atrybutu jest relacja Ak(Wk, Tk) gdzie Wk to zbir wartoci
jakie Ak przyjmuje a Tk stanowi zbir wartoci przyjmowanych przez atrybut
czasu. Kade wystpienie tej relacji reprezentowane przez krotk okrela
warto atrybutu w okrelonym momencie czasu.
Zmiany stanu obiektu s ujmowane w obiektach klasy ZASB. ZASB to obiekt
fizyczny lub abstrakcyjny, trwajcy w czasie, w ktrym wartoci atrybutw mog
ulega zmianie wraz z upywem czasu. Kada klasa moe zawiera:
!Atrybuty statyczne i dynamiczne zgodnie z definicj takich atrybutw,
!Atrybuty temporalne zwizane z obiektem : czas utworzenia i opcjonalnie czas
eliminacji obiektu: atrybut eliminacji umoliwia identyfikacj specjalnego
stanu nieaktywnoci obiektu.
26

Przykad rozszerzenia modelu


obiektowego o temporalno cd..
! Dziki dekompozycji i generalizacji klas istnieje moliwo definiowania

klas grupujcych atrybuty zmieniajce si w tych samych momentach


czasu. Jest to typ klasy w postaci permanentnej czasowo. Wyodrbnienie
takich klas umoliwia efektywn strukturalizacj danych w schemacie
bazy danych . Powizania midzy klasami np.: PRACOWNIK oraz ADRES
s nie tylko powizaniami strukturalnymi ale take powizaniami
opisujcymi histori zmiany adresw pracownikw. Takie powizania
nazywa si powizaniami temporalnymi.
! Klasa TYP ZDARZENIE to zbir atrybutw i metod opisujcy reguy
konstatacji wystpienia zdarzenia oraz tworzcy obiekt zdarzenia. Taka
klasa zawiera nastpujce elementy definicyjne :
Predykat definiujcy wystpienie zdarzenia (atrybut dynamiczny)
Metoda weryfikacji predykatu,
Metoda tworzenia obiektu ZDARZENIE,
!Metoda uruchamiania operacji (procesw)
!
!
!

! Kady obiekt klasy ZDARZENIE zawiera nastpujce elementy definicyjne:


!Czas utworzenia
!Metody uruchamiajce procesy
27

DLACZEGO SYSTEMY BAZ DANYCH NIE


WYSTARCZAJ W OBSUDZE INFORMACYJNEJ
PRZEDSIBIORSTW?----------------(1/5)

Systemy baz danych to tzw. systemy transakcyjne, w ktrych


rejestruje si w formie transakcji zmiany stanu rzeczy (np. zmiany
stanw magazynowych, rodkw finansowych, zobowiza,
rodkw trwaych w firmie, ewidencji ludnoci, kadry, studentw,
stanu kont itp.). S to systemy przetwarzania transakcyjnego (ang.
Online transaction processing OLTP) zwizane z dziaaniami
operacyjnymi firm takimi jak obsuga klientw firmy, obsuga
produkcji, obsuga zabezpieczenia produkcji, obsuga finansw firmy
itp.). Czsto takie bazy danych nazywa si rwnie operacyjnymi
bazami danych

Na podstawie systemw OLTP trudno podejmowa decyzje


obejmujce wiele aspektw dziaalnoci firmy np. zdolnoci
finansowe firmy a zabezpieczenie produkcji w kontekcie potrzeb
klientw.

ZASTOSOWANIE
HURTOWNI DANYCH

DLACZEGO SYSTEMY BAZ DANYCH NIE


WYSTARCZAJ W OBSUDZE INFORMACYJNEJ
PRZEDSIBIORSTW?----------------(2/5)

Nawet poczenie za pomoc szybkich czy sieciowych nie


rozwizuje problemu sprawnego dostpu do informacji
wielodziedzinowych, wzajemnie zintegrowanych (np. zgodnych w
czasie)
Na pocztku lat 90-tych XX wieku W.Inmon oraz E.F.Codd
zauwayli, e operacyjne systemy transakcyjne OLTP nie mog
skutecznie wspdziaa z systemami wspomagajcymi decyzje w
tym samym rodowisku baz danych, gwnie ze wzgldu na rne
charakterystyki procesw podejmowania decyzji o charakterze
taktycznym czy strategicznym, gdzie gwnym rdem informacji w
tych procesach s przetwarzania analityczne uwarunkowane
czasowo, uwzgldniajce rne aspekty dziaalnoci firmy, w
oparciu o dane zarejestrowane w rnych bazach danych
transakcyjnych i nie tylko (ang Online analitycal processing
OLAP).

DLACZEGO SYSTEMY BAZ DANYCH NIE


WYSTARCZAJ W OBSUDZE INFORMACYJNEJ
PRZEDSIBIORSTW?----------------(3/5)

Sposoby przechowywania danych w bazach danych (zwaszcza w


relacyjnych bazach danych) nie sprzyjaj zastosowaniu narzdzi do
przetwarzania analitycznego OLAP. Najlepszym modelem danych
sprzyjajcym przetwarzaniu analitycznemu jest wielowymiarowy model
danych.
Prawie kada firma ma system ewidencyjny oparty o relacyjn baz
danych; wydawa by si mogo, e problem dostosowania baz danych do
OLAP wymaga utworzenia specjalnego interfejsu, ktry przedstawi dane
w ujciu wielowymiarowym, zrozumiaym dla analityka. Niestety, chocia
wielu sprzedawcw systemw RDBMS twierdzi, e aby otrzyma
upragniony system analityczny wystarczy podczy do istniejcej w firmie
bazy danych ich produkty interfejsy OLAP, to jednak wdroenie systemu
typu analitycznego prawie zawsze wie si co najmniej ze stworzeniem
kopii bazy danych operacyjnej drugiej kolekcji danych.

DLACZEGO SYSTEMY BAZ DANYCH NIE


WYSTARCZAJ W OBSUDZE INFORMACYJNEJ
PRZEDSIBIORSTW?----------------(4/5)

Potrzeba tworzenia drugiej kolekcji danych wynika rwnie z innych


przesanek. Od systemw analitycznych wymaga si duej
wydajnoci bez zaburzania pracy operacyjnej rdowej bazy
danych, co powoduje konieczno tworzenia oddzielnych
zoptymalizowanych struktur. Czsto istnieje potrzeba zasilania
systemu z wielu rde, a nawet aplikacji lokalnych, choby
w przypadku wielodziaowych firm, posugujcych si z powodw
historycznych, rnymi systemami. Nowa, spjna analityczna baza
danych jest wwczas jedynym rozwizaniem.
Kolejnym bardzo istotnym powodem tworzenia analitycznej kolekcji bazy danych jest konieczno oczyszczenia i uzupenienia danych do
analiz. Oprcz tego, e w kadej bazie istnieje niewielki procent
przypadkowo niespjnych danych, to dodatkowych problemw
nastrczaj pola wypeniane opcjonalnie, ktre dla uytkownikw
systemu analitycznego mog mie due znaczenie. Podobnie ma si
rzecz z dopasowywaniem danych, czy to spowodowanym uywaniem
rnych standardw zapisu w oddziaach (na przykad planw kont
ksigowych), czy to potrzeb uzupenienia systemu o dodatkowe
dane (demograficzne lub statystyczne).

DLACZEGO SYSTEMY BAZ DANYCH NIE


WYSTARCZAJ W OBSUDZE INFORMACYJNEJ
PRZEDSIBIORSTW?----------------(5/5)

Inn przyczyn tworzenia oddzielnej bazy danych moe by fakt, e


dane w systemach rdowych s odwieane z rn
czstotliwoci (na przykad w jednym raz na miesic, a w innym raz
na tydzie), tymczasem analizy musz opiera si na zawsze
spjnych danych. Przyczyn koniecznoci tworzenia innej kolekcji
danych dla potrzeb analitycznych mona wymieni wicej: potrzeba
analiz danych historycznych, ktre czsto nie s przechowywane
w bazach operacyjnych, czy potrzeba zapisu do nich dodatkowych
informacji z zewntrznych rde, wykraczajcych poza ramy
struktur dotychczas eksploatowanych baz danych.

Co to jest HURTOWNIA DANYCH? ----------(1/2)

Co to jest HURTOWNIA DANYCH? ----------(2/2)

Hurtownia danych (ang. data warehouse DW lub HD) =


zestaw narzdzi pozwalajcych kierownikom, dyrektorom,
decydentom i analitykom szybciej, skuteczniej podejmowa
decyzje.
HD maj dostarcza waciwe informacje, waciwym
kosztem, we waciwym czasie i miejscu by na ich podstawie
mona byo podejmowa waciwe decyzje.
HD stanowi platform integrujc dane pochodzce z wielu
rde umoliwiaj przetwarzanie analityczne danych
zebranych z tych rnych rde.
HD jest porednikiem midzy przetwarzaniem transakcyjnym
a przetwarzaniem analitycznym.

HD gromadzi wybrane uyteczne dane i informacje oraz


pozwala na szybszy taszy i efektywniejszy do nich
dostp, stanowic rodzaj dugookresowego bufora
midzy systemami OLTP a OLAP.
HD przechowuj dane historyczne i podsumowania.
Takie dane wykorzystywane s nastpnie przez
kierownictwo firmy, do analizy trendw rynkowych i
podejmowania decyzji.
HD przechowuj dane historyczne i podsumowania.
Takie dane wykorzystywane s nastpnie przez
kierownictwo firmy, do analizy trendw rynkowych i
podejmowania decyzji.

Miejsce HD w przetwarzaniu danych

Logiczne skadniki hurtowni danych------(1/4)

Systemy
OLTP

Systemy
OLTP

HD

Programy
OLAP

Systemy
OLTP

10

Logiczne skadniki hurtowni danych------(2/4)

Logiczne skadniki hurtowni danych------(1/4)

Logicznie HD tworz kolejne warstwy danych. Tymi warstwami


danych mog by zmaterializowane perspektywy lub tzw. wirtualne
perspektywy danych.
Dane jednej warstwy s pochodnymi niszej warstwy
Najnisz warstw jest warstwa zwana rdami danych. Jest to
warstwa skadajca si przechowywanych z usystematyzowanych
danych przechowywanych w otwartych systemach baz danych
zwanych operacyjnymi bazami danych, do ktrych nale rwnie
przestarzae bazy danych, a take z danych
nieusystematyzowanych nieuporzdkowanych lub czciowo
uporzdkowanych, przechowywanych w plikach (np. dane zapisane
w arkuszach kalkulacyjnych, zasignite z Internetu, zapisane w
pliku za pomoc programw przeznaczonych do oblicze, itp.)

rodkow warstw jest globalna hurtownia danych nazywana


rwnie podstawow lub centraln hurtowni danych. Wg Inmona
jest to zbir zintegrowanych, nielotnych, ukierunkowanych
baz danych zaprojektowanych jako podstawa wspomagania
decyzji (DSS), gdzie kada jednostka informacji dotyczy pewnej
chwili czasu a w jej skad wchodz zarwno dane atomowe jak i
podsumowania. W warstwie tej rejestruje si rwnie histori
danych. Dane tej warstwy mog pochodzi z wielu lat a podczas
aktualizacji w warstwy tej uzupeniane s na zasadzie dopisywania
nowe, skondensowane informacje dotyczce aktualnego stanu
danych rdowych

11

Kolejn warstw s tzw. lokalne hurtownie zawierajce silnie


zagregowane dane, bdce podsumowaniami informacji z warstwy
rodkowej i przeznaczone do bezporedniego wykorzystania w
zarzdzaniu, planowaniu dugoterminowym, analizie historycznej,
analizie trendw, w przetwarzaniu informacji i zintegrowanych
analizach. Jest wiele rodzajw takiej warstwy; mona j
zorganizowa w formie hurtowni tematycznych nazywanych
hurtowniami oddziaowymi lub skadnicami danych (ang data
marts) albo tzw bazy danych OLAP; w tym przypadku tzw. hurtownie
tematyczne to niewielkie hurtownie danych zawierajce wycinek penej
informacji zgromadzonej w globalnej hurtowni danych; dla przykadu
hurtowni tematyczna moe by hurtownia dziau marketingowego
ograniczona do informacji o klientach, transakcjach handlowych i
sprzedawanych produktach podczas gdy hurtownia globalna powinna
obejmowa dane np. na temat zatrudnienia, produkcji, przygotowania
produkcji, itd. Ze wzgldu na mniejsz objto danych lokalne
hurtownie danych w porwnaniu do globalnych hurtowni danych oraz
moliwo przetwarzania w rodowisku rozproszonym na wielu
komputerach (serwerach) pozwalaj na sprawniejsz obsug jej
12
uytkownikw

Logiczne skadniki hurtowni danych------(4/4)

Logiczne skadniki hurtowni danych------(3/4)

W niektrych przypadkach pomidzy warstw danych rdowych a


warstw globaln wprowadza si dodatkow warstw poredni
zwan magazynem danych operacyjnych (ang. operational data
store ODS); warstwa ta zawiera zintegrowane dane tematyczne,
aktualne (ulotne) i szczegowe zwykle zawiera wyniki
transformacji, integracji i agregacji danych ze rde podobnie jak
globalna hurtownia, przy czym ODS jest aktualizowane o wiele
czciej ni globalna hurtownia, zawiera dane bardziej aktualne ni
globalna hurtownia a stopie agregacji danych w ODS jest znacznie
mniejszy ni w globalnej hurtowni; ODS moe suy wg Imiona do
integracji i zebrania w jednym miejscu danych operacyjnych pod
ktem podejmowania decyzji operacyjnych, w celu tworzenia
aktualnej informacji o firmie w formie zestawie obejmujcych ca
firm.

Wszystkie skadowe, procesy i dane w hurtowni s (lub powinny


by) ledzone i administrowane za pomoc tzw. bazy metadanych
(ang. metadata repository). Jest to warstwa pomocna w
administrowaniu HD a take warstwa pomocna w stosowaniu
rnych metod ekstrakcji, transformacji, agregacji, czyszczenia,
przechowywania danych i przenoszenia midzy wyej
wymienionymi warstwami.

Midzy globalnymi a lokalnymi (tematycznymi) hurtowniami


danych istniej nastpujce rnice:
Hurtownie danych wymagaj realizacji zoonych procesw
ekstrakcji, integracji i transformacji danych a tematyczne hurtownie
danych wymagaj jedynie transformacji i agregacji danych
przechowywanych w globalnej strukturze
Dane przechowywane w globalnej hurtowni s bardziej
szczegowe, mao zagregowane i zajmuj wicej przestrzeni do ich
zapamitania. Dane w hurtowniach tematycznych s silnie
zagregowane i s znacznie mniejszych rozmiarw

13

14

Struktury fizyczne hurtowni danych

Centralna hurtownia danych przedsibiorstwa

Ze wzgldu na struktur fizyczn hurtowni danych wyrnia si trzy


podstawowe architektury hurtowni danych:
Scentralizowana,
Federacyjna,
Warstwowa.
W scentralizowanej hurtowni danych wszystkie dane
wykorzystywane do analizy s przechowywane w jednej hurtowni
danych

Uytkownicy hurtowni.

Centralna hurtownia
danych

Dane
rdowe

Dane
rdowe

..

15

16

Centralna hurtownia danych przedsibiorstwa wady

Wad takiej architektury jest mniejsza wydajno hurtowni ni


hurtownie zorganizowane w sposb rozproszony.
Zcentralizowana HD upraszcza dostp do danych poprzez
ujednolicenie modelu danych
Taka architektura nadaje si do przedsibiorstw silnie
scentralizowanych.

Federacyjna HD

17

Dane
rdowe

W federacyjnej HD mamy do czynienia z danymi logicznie


jednorodnymi, jednak przechowywanymi fizycznie w rnych
bazach danych zlokalizowanych w jednym lub wielu systemach
komputerowych. Przechowywane lokalnie tematyczne HD zawieraj
waciwe informacje dla konkretnego dziau firmy. Poniewa takie
HD zawieraj znacznie mniejsze iloci danych wic takie dane
mog by analizowane i przetwarzane lokalnie na rnych
poziomach szczegowoci. Istot federacyjnej HD jest to, e
globalna hurtownia danych jest tworem wirtualnym.

18

Architektura warstwowa hurtowni danych

Uytkownicy kocowi.

Tematyczne hurtownie danych (podsumowania, wybrane dane)

Hurtownia danych przedsibiorstwa


(dane szczegowe)

Dane
rdowe

Architektura warstwowa hurtowni danych zakada, e hurtownia


globalna jest tworem rzeczywistym fizyczn kolekcj danych. Tu
hurtowni danych uzupeniaj kolejne poziomy lokalnych
tematycznych hurtowni danych. Te tematyczne HD zawieraj kopie
danych poprzedniej warstwy lub ich podsumowania (z pominiciem
szczegw, ktre s widoczne w federacyjnej HD). Architektura
warstwowa moe by realizowana albo na zasadzie rozwarstwienia
danych z hurtowni danych przedsibiorstwa albo na zasadzie
rozwarstwienia danych rdowych. Taki przypadek oznacza, ze
dane rdowe s podstaw do tworzenia tematycznych hurtowni
danych, ktre z kolei pozwalaj utworzy hurtowni danych
przedsibiorstwa. Struktury wielowarstwowe wystpuj wic w
architekturze zwanej top-down (inaczej architektura zstpujca)
lub button up (architektura wstpujca).

Dane
rdowe
rdowe

..

Rys.4. Architektura warstwowa top-down (zstpujca)

19

20

Metadane w hurtowni
Uytkownicy kocowi.

Tematyczne hurtownie danych


(podsumowania, wybrane dane)

Hurtownia danych przedsibiorstwa

Metadata s przechowywane w wydzielonej specjalnej kolekcji


danych, do ktrej dostp maj wszystkie inne elementy HD. Ze
wzgldu na konieczno wspdziaania wszystkich elementw HD z
metadanymi zachodzi potrzeba ujednolicenia formatu tych danych.
Organizacja Metadata Coalition zaproponowaa standard
Metadata Interchange Specification a Microsoft wprowadzi
program Microsoft Repository jako skadow pakietu Office, ktra
zawiera modele uywane w HD.

Ekstrakcja i
konwersja
danych

Dane
rdowe

..

Dane
rdowe
rdowe

Rys.5. Warstwowa hurtownia danych w architekturze bottom-up (wstpujcej)

21

22

Rola metadanych w hurtowni danych

Co to jest PRZETWARZANIE ANALITYCZNE?

W dziaaniu HD niezbdne s metadane. Oprcz informacji o pooeniu


danych w bazach rdowych i hurtowni danych baza metadanych moe
zawiera:
Sowniki danych, zawierajce definicje baz danych i relacji (zwizkw)
midzy elementami danych,
Informacje o przepywie danych, np. o kierunkach i czstotliwoci napywu
nowych porcji danych do hurtowni
Informacje o transformacjach danych, wykonywanych przy przenoszeniu
danych,
Numery wersji przechowywanych metadanych, informacje o modyfikacjach ,
Statystyki (profile) uycia danych,
Nazwy nadawane polom baz danych,
Uprawnienia uytkownikw

23

Systemy relacyjnych baz danych najskuteczniej dziaaj na danych,


ktre zachowuj zasady normalizacji (brak redundancji danych, brak
anomalii przy wstawianiu, usuwaniu i modyfikacji danych,
jednoznaczno odwoa do danych) i nadaj si dp obsugi
codziennej dziaalnoci operacyjnej wikszoci przedsibiorstw.
Uywane w tym celu systemy transakcyjne (oparte na koncepcji
transakcji OLTP) optymalizuj dostp do bazy danych ze wzgldu
na niewielkie transakcje i zapytania odwoujce si do
zgromadzonych danych. Wykorzystuje si tu midzy innymi klucze,
indeksy, optymalizatory szeregujce transakcje, dajce
wspbienych realizacji pochodzcych od wielu uytkownikw.
OLAP jest dzisiaj postrzegany jako kluczowa technologia
dostarczania danych do analiz w wydajny i jednoczenie intuicyjny
sposb. OLAP dostarcza narzdzi, na ktrych najbardziej zaley
uytkownikom: intuicyjno modelu danych, proste tworzenie
raportw, analiz i zapyta ad hoc, jednym zdaniem dobry
interfejs analityczny.
24

Metody OLAP

Przykad
uytkownik HD chce uzyska odpowiedzi na pytanie Jak
wyglda sprzeda aktualna w stosunku do planowanej?,
Jak si sprzedaje Produkt 2 w USA w porwnaniu do
Azji?, Jak bdzie wygldaa sprzeda Produktu 1 w
Azji, jeli wzronie w tym samym stopniu sprzeda w
Europie? lub Jaka by wpyw % wzrostu sprzeday
Produktu 2 na sprzeda Produktu 1 w Azji? Innymi
sowy chce uzyska odpowied w formie dogodnej do
przeprowadzenia analizy operacjami ukadzie
trjwymiarowym, ktry graficznie prezentuje
trjwymiarowa kostka danych zagregowanych: gdzie na
osi OX odoono sprzeda w okresach, na osi OY
produkty a na OZ regiony sprzeday:

Sam termin OLAP nie jest stary, niemniej historia


narzdzi tego typu siga dwadziecia lat wstecz, kiedy to
firma Express tworzya swj pierwszy produkt,
a niektrzy jego korzeni doszukuj si w jzyku APL,
opierajcym si o wielowymiarowe struktury danych,
stworzonym ju ponad trzydzieci lat temu.
Oprogramowanie OLAP pozwala na wielowymiarowy
wgld w dane.

25

26

Wielowymiarowo w przetwarzaniu
analitycznym obejmuje:

Charakterystyka narzdzi OLAP


Azja

Europa

utrzymywanie tabel reprezentujcych fakty i wymiary


obsuga operacji analitycznych: konsolidacja, specyfikacja, kojarzenie

USA

Produkt 1

Produkt 2

Produkt 3

120

115

140

89

220

133

122

130

Okres 1

Okres 2

144

Okres 3

SPRZEDA

27

Typowe operacje wykonywane przez narzdzia


OLAP

Codd wyrni nastpujce reguy przetwarzania analitycznego:


wielowymiarowe przekroje,
przeroczysto danych dla uytkownika,
dostpno danych, bez znajomoci lokalizacji ani struktur danych,
wydajne i spjne raportowanie,
architektura klient-serwer,
oglno wymiarowania,
dynamiczna obsuga macierzy,
wspomaganie rnych uytkownikw,
operacje obsugujce wielopoziomowo,
intuicyjne dziaanie na danych,
elastyczne raportowanie,
nieograniczona liczba wymiarw i agregacji

28

Do obsugi OLAP wykorzystywane s dwa


rodzaje systemw DBMS

Zwijanie (roll up) danych podnoszenie poziomu agregacji czyli


uoglnianie danych,
Rozwijanie danych (drill down) obnianie poziomu agregacji
danych,
Selekcja (slice) i projekcja (dice) wymiarw np. czasu, regionw,
itp.,
Tworzenie tablic przestawnych obracanie kostek danych,
Raportowanie systemw wykonywanie zapyta o zagregowane
systemw niezagregowane dane,
Wykrywanie trendw systemw regularnoci systemw danych,
Wspieranie decyzji,
Analiza statystyczna,
Dostarczanie danych dla systemw wspomagania decyzji systemw
systemw informacyjnych kierowania systemw zarzdzania firm.

Systemy superrelacyjne ich producentami s twrcy


RDBMS, ktrzy poszerzyli RDBMS o przetwarzanie
OLAP za pomoc funkcji superrelacyjnych obejmujcych
rozszerzony format przechowywania danych, nowe
operacje relacyjne oraz wyspecjalizowane schematy
indeksowania danych zmniejszenie czasu wykonania
zapyta na potrzeby OLAP osignito midzy innymi
wprowadzajc struktury gwiazdy lub patka niegu;
wynikiem poczenia nowych struktur danych z
narzdziami OLAP s tzw narzdzia ROLAP;
Wielowymiarowe systemy baz danych (ang
multidimensional database systems MDDB)

29

30

Wrd systemw OLAP wyrnia si zatem


narzdzia:

Koncepcja MicroStrategy

ROLAP narzdzia analitycznego przetwarzania danych

oparte na podejciu relacyjnym,

MOLAP wielowymiarowe narzdzia OLAP realizowane za

pomoc wielowymiarowych baz danych,

HOLAP narzdzia hybrydowe OLAP integrujce np.

podejcie MOLA i ROLAP.

W koncepcji MicroStrategy wystpuj rne moduy, ktrych przeznaczenie jest


nastpujce:
DSS Architect jest moduem tumaczcym schemat relacyjnej bazy danych na
intuicyjny model wielowymiarowy chroni to uytkownika od koniecznoci radzenia
sobie z modelem relacyjnym; takie odwzorowanie wymaga wykorzystania
metadanych,
DSS administrator pozwala administratorowi HD na ostateczne dopasowanie
schematu danych, monitorowanie wydajnoci i planowanie zada wsadowych
DSS Server jest serwerem usug ROLAP opartym na relacyjnej bazie danych
umoliwia wielowymiarowy wgld w jej zawarto; inne funkcje tego moduu to
przechowywanie wynikw zapyta, monitorowanie i planowanie wykonania zapyta,
tworzenie i obsuga dynamicznych relacyjnych tematycznych hurtowni danych,
DSS Agent, DSS Objects i DSS Web umoliwiaj dostp do danych odpowiednio
uytkownika, jzykw programowania, sieci WWW,
System Red Brick (przejty przez Informix, IBM, Sybase) charakteryzuje si
najlepsz technologi indeksowania i czenia tablic w schemacie tzw. gwiazdy,
ktry bdzie objaniony poniej oraz oferuje narzdzia do eksploracji danych do
wyszukiwania regularnoci, trendw i zalenoci w wielkich bazach danych,

31

32

c.d. ROLAP
VBA

Power
Builder

Visual
Basic

C++

Excel Add-In
HTML

DSS
Executive

Java Script
DSS Objects
DSS
Web
DSS Agent

OLAP Report
Writer

Activ X

DSS Server

DSS architecture

DSS Architecture

Metadata

Sterowniki dostpu do
wielkich baz danych VLDB

Oracle

Sybase

Informix

DB2

Teradata

Red
Brick

Tandem

SQL
Server

Rys. 6. Schemat systemu MicroStrategy

Okazuje si, e dla potrzeb ROLAP dane z relacyjnych baz danych


trzeba przedstawi w specjalny sposb, ktry nazywa si ukadem struktur np. gwiazdy lub patka niegu a czsto konstelacj.
By zdefiniowa te struktury dla potrzeb HD wprowadza si pojcie
faktw i wymiarw, przyjmujc, e fakty zapisane w HURTOWNI
DANYCH zmieniaj si pod wpywem zdarze (zmiana wartoci
wymiarw i miar, faktw) i maja swoj histori. Fakty czsto nazywa
si miarami. S to waciwe dane, ktre podlegaj analizie. Wartoci
miar opisuje si wymiarami. Przykadowymi miarami (faktami w HD
s SPRZEDA, KOSZTY, itp
W HD przechowuje si rwnie informacje o tzw. wymiarach faktwmiar. Przykadow baz faktw-miar i wymiarw zaprezentowano na
rysunku 7.
W przytoczonym przykadzie fakty zgromadzono w tabeli
SPRZEDA, za PRODUKTY, OBSZARY i OKRESY s wymiarami
faktw SPRZEDA opisanych dodatkowo miarami Cena i Ilo.
Atrybuty wymiarw i faktw oznaczone * s atrybutami
indeksujcymi dane.

33

34

Struktura danych gwiazda-(2/3)

Struktura danych - gwiazda (1/3)

PRODUKT

SPRZEDA
OBSZARY
* ID_obszaru
Nazwa

Cena
Ilo
*ID_produktu
*ID_okresu
*ID_obszaru

OKRESY
*ID_okresu
....

35

Pamitanie faktw i wymiarw w HD polega na tym, e wymiarw strukturze


gwiazdy mamy do czynienia zwykle wymiarw jednym faktem wymiarw
wieloma wymiarami. Faktom odpowiada tablica faktw (niestety najczciej
moe by tylko jedna), a pozostae wymiary przechowywane s
w dodatkowych tablicach. Hierarchie s budowane na dwa sposoby: dla
ukadu gwiazdy s przechowywane w kolumnach, a w schemacie patka
niegu w kolejnych tablicach. Trudno powiedzie jednoznacznie, ktre
rozwizanie jest lepsze. W pierwszym zyskujemy na prdkoci, w drugim na
pamici dyskowej i trzeba duego dowiadczenia, eby odnale zoty
rodek. Mona oczywicie wymg stosowania odpowiedniej struktury
zgrabnie omin, stosujc wirtualne widoki utworzone na znormalizowanej
bazie danych. Mona tego dokona budujc je bezporednio na serwerze
bazy danych lub definiujc w samym programie. Jednak prba
wygenerowania kilku raportw sprawi, e odrzucimy ten, jake wygodny na
pierwszy rzut oka sposb, ze wzgldw wydajnociowych. Dzieje si tak
poniewa zbudowanie niektrych skomplikowanych wielowymiarowych
raportw wymaga wykonania wielokrotnie zagniedonych zapyta.

36

Struktura danych gwiazda-(3/3)

Narzdzia ROLAP

Pamitanie faktw i wymiarw w HD polega na tym, e wymiarw strukturze


gwiazdy mamy do czynienia zwykle wymiarw jednym faktem wymiarw wieloma
wymiarami. Faktom odpowiada tablica faktw (niestety najczciej moe by tylko
jedna), a pozostae wymiary przechowywane s w dodatkowych tablicach. Hierarchie
s budowane na dwa sposoby: dla ukadu gwiazdy s przechowywane w kolumnach,
a w schemacie patka niegu w kolejnych tablicach. Trudno powiedzie
jednoznacznie, ktre rozwizanie jest lepsze. W pierwszym zyskujemy na prdkoci,
w drugim na pamici dyskowej i trzeba duego dowiadczenia, eby odnale zoty
rodek. Mona oczywicie wymg stosowania odpowiedniej struktury zgrabnie
omin, stosujc wirtualne widoki utworzone na znormalizowanej bazie danych.
Mona tego dokona budujc je bezporednio na serwerze bazy danych lub
definiujc w samym programie. Jednak prba wygenerowania kilku raportw sprawi,
e odrzucimy ten, jake wygodny na pierwszy rzut oka sposb, ze wzgldw
wydajnociowych. Dzieje si tak poniewa zbudowanie niektrych skomplikowanych
wielowymiarowych raportw wymaga wykonania wielokrotnie zagniedonych
zapyta.
Przy wdroeniu systemu ROLAP, niemal zawsze trzeba stworzy drug baz danych,
wycznie do celw analitycznych. Oznacza to po prostu zbudowanie hurtowni
danych, choby tematycznej. Jest to oczywiste dla tych, ktrzy takow posiadaj lub
s w trakcie jej tworzenia, ale nie dla niewiadomych nabywcw samego systemu
OLAP.

Mimo to, systemy ROLAP s bardzo popularne. Ich wybr jest naturalny, poniewa
uytkownicy posiadaj ju operacyjn, relacyjn baz danych lub, co jest silniejszym
powodem, posiadaj hurtowni danych zrealizowan w tej technologii. Ogromn
zalet rozwizania opartego na relacyjnej bazie danych jest niemal nieograniczona
pojemno systemu. Dotyczy ona zarwno danych (poddawanych analizom), jak
i metadanych elementw wymiarw analitycznych, czy samych wymiarw.
Niestety, wraz ze wzrostem wielkoci, maleje wydajno takiej bazy danych.
Powstao wiele sposobw na ominicie tej wady, poczwszy od wspominanych ju,
opartych na denormalizacji, struktur gwiazdy i patka niegu (ktre dodatkowo dobrze
odwzorowuj struktury wielowymiarowe), a po uywanie skomplikowanych narzdzi,
ktre jednak wymagaj duego wysiku zwizanego z ich wdroeniem i bardzo czsto
efekty ich uycia nie s satysfakcjonujce. Kolejny problem z wydajnoci pobierania
danych w systemach relacyjnych polega na niedostatkach SQL, ktry nie posiada
moliwoci przeprowadzania wielowymiarowych oblicze w pojedynczym zapytaniu.
Konieczne jest uywanie zoonych, wielokrotnie powtarzanych zapyta. Producenci
narzdzi prbuj w rny sposb omija ten problem. Najprostszym jest stosowanie
tablic agregacji, przechowujcych przeliczone uprzednio podsumowania. Sposb ten
powoduje jednak rozrost bazy i nie sprawdza si przy czsto zmieniajcych si
danych. Podobnie przy czstym uaktualnianiu danych nie sprawdza si
przechowywanie raz pozyskanych informacji w pamici operacyjnej serwera lub stacji
klienckiej, cho bardzo zwiksza wydajno systemu.

37

38

Charakterystyka narzdzi MOLAP-(1/3)

Charakterystyka narzdzi MOLAP-(2/3)

Dla przeciwwagi, o wiele wydajniejsze, lecz znacznie mniej pojemne s


wielowymiarowe bazy danych (ang. Multidimensional), std litera M na
pocztku terminu MOLAP). Zastosowanie w nich zoptymalizowanych
struktur, dopasowanych do wielowymiarowych oblicze powoduje, e ich
prymat pod wzgldem szybkoci przetwarzania analitycznego jest nie do
podwaenia tak, jak przewaga baz relacyjnych pod wzgldem potencjalnej
iloci analizowanych danych. Ze wzgldu na zastosowanie odmiennej
technologii, systemy MOLAP zawsze wymagaj drugiej bazy danych
(wielowymiarowej wanie). Wbrew obiegowej opinii, coraz czciej
zapewniaj wielodostp oraz bardzo dobry system zabezpiecze i kontroli
dostpu. Stosowanie serwerw OLAP, jak nazywa si wielowymiarowe
bazy danych, jest coraz popularniejsze, tak ze wzgldu na ich wydajno,
jak i na atwo budowy modeli (czsto jest to wykonalne dla kocowego
uytkownika) oraz prostej administracji. Ponadto bazy takie niemal nie
wymagaj dostrajania. Jednak i tutaj w cigu kilku lat zdoay si ju
wyksztaci dwie podklasy narzdzi: przechowujce podczas pracy dane na
dysku (ang. Disk based MDB) oraz w pamici operacyjnej (ang. RAM based
MDB lub RAM Cubes). S one na tyle rne, e naley je rozpatrywa
osobno.

Dyskowe bazy wielowymiarowe zdecydowan wikszo informacji przechowuj


w plikach o specyficznej strukturze i uywaj stosunkowo niewiele pamici
operacyjnej, te drugie pami dyskow uywaj jedynie do przechowywania danych
pomidzy sesjami oraz dla bezpieczestwa. Pierwsze maj wiksz pojemno,
drugie s znacznie szybsze. Wychodzc z zaoenia, e pami RAM jest okoo 150
razy szybsza od dysku, ale rwnoczenie okoo 60 razy drosza, atwo obliczy, e
pami operacyjna oferuje lepszy stosunek ceny do wydajnoci przetwarzania.
Niestety ograniczenia sprztowe powoduj, e zakup dodatkowych koci RAM jest
nieopacalny lub niemoliwy. Ponadto szybko przetwarzania w bazach dyskowych
moe by zwikszana, ze wzgldu na brak ogranicze co do zajmowanej pamici.
Jedn z dostpnych metod jest stosowanie rozbudowanych metod indeksowania,
znacznie usprawniajcych dostp do danych, co nie jest moliwe w bazach danych
operujcych w silnie ograniczonej pamici RAM. Drugim sposobem jest prekalkulacja
wsadowe przeliczanie danych. Grozi ono jednak eksplozj bazy danych, czyli
nagym wzrostem zajtoci pamici dyskowej. Pomimo e coraz czciej stosowane
s zabezpieczenia, ograniczajce ryzyko takiego zdarzenia, to jednak i dzisiaj jest
ono realnym zagroeniem. Prekalkulacja nie jest rwnie wskazana w modelach
dynamicznych, ze wzgldu na to, e zajmuje duo czasu, co dla czsto
zmieniajcych si danych moe znacznie spowalnia prac systemu, a staje si nie
do przyjcia w przypadku baz danych o wicej ni piciu wymiarach i danych bardzo
rozsianych.

39

40

Charakterystyka narzdzi MOLAP-(3/3)

Charakterystyka narzdzi HOLAP-(1/2)

W przypadku dyskowych baz wielowymiarowych daje si zauway znana z baz


relacyjnych zaleno im szybsza baza, tym wicej miejsca zajmuje na dysku.
Natomiast systemy pracujce w pamici operacyjnej swoj szybko zawdziczaj
wydajnoci pamici RAM, a na dysku zajmuj stosunkowo niewiele miejsca. Jest to
pod tym wzgldem rozwizanie bardzo wygodne i co wicej, w bardzo wielu
przypadkach, wystarczajce, cho na pierwszy rzut oka ograniczenie w postaci
okrelonej pamici RAM wydaje si by powane. Rozwamy pojemno modelu
wielowymiarowego dla 500 MB RAM. Typowy system MOLAP bazujcy na pamici
operacyjnej potrzebuje od 10 do 15 bajtw na liczb (dla porwnania w dyskowych:
50 100 bajtw, a czsto i wicej, ze wzgldu na indeksowanie i prekalkulacj).
Daje to pojemno rzdu 45 milionw komrek. W wikszoci zastosowa, rozsianie
danych analitycznych jest znacznie wiksze od 99%. Wynika z tego teoretyczna
pojemno rzdu 5 miliardw danych, co odpowiada duemu modelowi
finansowemu. Analogiczna baza dyskowa, w najlepszym przypadku bdzie
zajmowaa okoo 2,5 GB przy znacznie gorszej wydajnoci. Pozostaje pytanie, czy
500MB RAM to duo, czy mao? Wydaje si, e nie jest to zbyt wiele, poza tym
rozbudowane systemy dyskowych baz wielowymiarowych, czy serwery baz
relacyjnych wymagaj porwnywalnej lub wikszej iloci pamici operacyjnej. Zatem
wybr systemu powinien zalee od innych kryteriw ni potrzebna ilo czy cena
pamici operacyjnej i dyskowej.

41

Prby poczenia technologii relacyjnej i wielowymiarowej (w obydwu wydaniach),


zaowocoway liter H, powstay systemy hybrydowe, HOLAP. Mamy tutaj do
czynienia niemal z tyloma technikami realizacji takich pocze, ile tego typu
produktw jest dostpnych na rynku. Istnieje nawet narzdzie (a raczej jest cigle
zapowiadane) czce technologi relacyjn z wielowymiarow dyskow,
z jednoczesn moliwoci przechowywania danych w strukturach
wielowymiarowych w pamici operacyjnej zarwno na serwerze jak i na stacji
klienckiej.
Najpopularniejszym rozwizaniem w systemach hybrydowych jest uywanie
relacyjnej bazy danych jako rda danych i jednoczesne przechowywanie najczciej
przetwarzanych informacji w strukturach wielowymiarowych w pamici operacyjnej
(RAM Cubes) na stacjach klienckich. Jest to poczenie najwydajniejszych strategii
z punktu widzenia rozmiaru i szybkoci. Oczywiste jest jednak, e tego typu
rozwizanie dziedziczy i wady swoich skadnikw pozyskanie nowych danych jest
powolne, a ilo pamici na stacji roboczej zwykle ograniczona, co zmniejsza obszar
szybkiej analizy. Zdarza si, e dodatkowo niektre, regularnie uywane, dane
przechowywane s w wielowymiarowych plikach dyskowych (Disk Cubes), co moe
poprawia w niektrych wypadkach szybko pozyskiwania i przetwarzania danych,
ale znakomicie komplikuje struktur systemu oraz utrudnia jego utrzymanie
i administracj.

42

Jak dobra narzdzia OLAP ?

Charakterystyka narzdzi HOLAP-(2/2)

Mimo tego, e producenci narzdzi hybrydowych stanowczo sugeruj, e ich systemy


cz pojemno systemw relacyjnych z wydajnoci wielowymiarowych, to nie jest
to do koca prawd. Ze wzgldu na uycie relacyjnych baz danych jako
podstawowego rda danych pierwsza cz stwierdzenia jest niepodwaalna,
druga nieco przesadzona. Owszem, wydajno systemu hybrydowego jest
zazwyczaj wiksza ni analogicznego, opartego tylko na bazie relacyjnej, ale nie
moe rwna si z szybkoci przetwarzania baz wielowymiarowych, szczeglnie
jeeli spojrzymy z punktu widzenia caoci przechowywanych danych, a nie tylko
wycinka aktualnie analizowanego na stacji klienckiej. Biorc pod uwag rwnie to,
e systemy hybrydowe dziedzicz wady ROLAP ograniczone moliwoci zapisu,
trudnoci w administracji nie naley sdzi, e wyeliminuj one narzdzia
wielowymiarowe tam, gdzie nie zagroziy im relacyjne. Niewtpliwie jednak naley
z uwag podej do nich jako niezwykle skutecznych przyspieszaczy systemw
relacyjnych.
Na koniec wada, ktra ma szans by wyeliminowana w niedalekiej przyszoci.
System hybrydowy jest albo konfigurowany przez czowieka, albo konfiguruje si
sam. Do niedawna inteligencja autokonfiguracji systemw hybrydowych,
mechanizmy wyboru, w jakich strukturach powinny by przechowywane
poszczeglne obszary danych byy niezadowalajce. Jednak ostatnio pojawiajce si
na rynku systemy sprawiaj, e mona mie nadziej na rych popraw w tym
zakresie, co znaczco uatwioby prac uytkownikom.

Jak dobra narzdzia OLAP Mimo tego, e producenci narzdzi hybrydowych


stanowczo sugeruj, e ich systemy cz pojemno systemw relacyjnych
z wydajnoci wielowymiarowych, to nie jest to do koca prawd. Ze wzgldu na
uycie relacyjnych baz danych jako podstawowego rda danych pierwsza cz
stwierdzenia jest niepodwaalna, druga nieco przesadzona. Owszem, wydajno
systemu hybrydowego jest zazwyczaj wiksza ni analogicznego, opartego tylko na
bazie relacyjnej, ale nie moe rwna si z szybkoci przetwarzania baz
wielowymiarowych, szczeglnie jeeli spojrzymy z punktu widzenia caoci
przechowywanych danych, a nie tylko wycinka aktualnie analizowanego na stacji
klienckiej. Biorc pod uwag rwnie to, e systemy hybrydowe dziedzicz wady
ROLAP ograniczone moliwoci zapisu, trudnoci w administracji nie naley
sdzi, e wyeliminuj one narzdzia wielowymiarowe tam, gdzie nie zagroziy im
relacyjne. Niewtpliwie jednak naley z uwag podej do nich jako niezwykle
skutecznych przyspieszaczy systemw relacyjnych.
Na koniec wada, ktra ma szans by wyeliminowana w niedalekiej przyszoci.
System hybrydowy jest albo konfigurowany przez czowieka, albo konfiguruje si
sam. Do niedawna inteligencja autokonfiguracji systemw hybrydowych,
mechanizmy wyboru, w jakich strukturach powinny by przechowywane
poszczeglne obszary danych byy niezadowalajce. Jednak ostatnio pojawiajce si
na rynku systemy sprawiaj, e mona mie nadziej na rych popraw w tym
zakresie, co znaczco uatwioby prac uytkownikom.

43

44

Tabela 1
Relacyjna baza danych

Wybr sposobu przechowywania danych ?

Nie ma na prostej odpowiedzi na to pytanie. Sam wybr sposobu


przechowywania danych jest trudny. Naley wzi pod uwag wiele
czynnikw, niektre z nich przedstawione s w tabeli 1,

45

Niekiedy zaleca si stosowanie pewnych zalenoci pomidzy


iloci danych a ich rozsianiem, przykadowe zestawienie
uwzgldniajce podobn zaleno przedstawione zostao w
nastpujcej tabeli

Rodzaj bazy danych

Ilo danych

Rozsianie danych

0 - 100 M
(0-10M dla skrajnych wartoci
rozsiania)
10 M
10 G
10M - 10G
10 G - 100G i wicej

0.000001 % - 100 %

Dyskowa baza wielowymiarowa


Baza relacyjna lub hybrydowa

Wielowymiarowe bazy
danych w pamici
operacyjnej

Wielko bazy danych

Bardzo dua (setki


gigabajtw)

Dua (setki megabajtw)

rednia (dziesitki
megabajtw)

Ilo pamici przypadajcej


na pojedyncz komrk

Maa, potencjalnie bardzo


dua gdy uywane s
tablice agregacji i
rozbudowane indeksowanie

Maa, potencjalnie dua


gdy uywana jest
prekalkulacja

Bardzo maa

Maksymalna ilo
elementw na wymiarze

Niemal nieograniczone

Setki tysicy

Setki tysicy

Pozyskiwanie danych

wolne

szybie

natychmiastowe

Szybko przeliczania

maa

szybka

natychmiastowa

Funkcjonalno
przeliczania

Ograniczona
(zagniedone zapytania
pozwalaj omin ten
problem, ale zmniejsza
szybko)

Bardzo rozbudowana,
moliwe na wszystkich
wymiarach

rozbudowana, moliwe na
wszystkich wymiarach

Wyszukiwanie danych

rednio wydajne, bardzo


funkcjonalne

Wolne, ograniczone
funkcjonalnie

Szybkie funkcjonalne

Administracja

trudna

atwa

Bardzo atwa

Budowa bazy danych przez


uytkownika kocowego

Niemal niemoliwe

Do atwe

Bardzo atwe

Budowa bazy danych przez


uytkownika kocowego

atwa w przypadku
wymiarw w rzdach,
trudna dla wymiarw w
kolumnach

atwa, konieczne
zatrzymanie systemu w
celu przebudowania
struktur

atwa, zazwyczaj moliwa


bez zatrzymywania
46
systemu

Zostao one przygotowane tak, aby ukaza dla jakich


parametrw poszczeglne sposoby przechowywania
danych s rozwizaniami optymalnymi pod wzgldem
wydajnoci. Rozwizania hybrydowe zostay
umieszczone razem z relacyjnymi, ze wzgldu na to, e
z reguy mog by one brane pod uwag jako skuteczne
przyspieszacze pojemnych rozwiza relacyjnych.
Oczywiste jest jednak, e tabela ta zawiera jedynie
wskazwki, zbyt wiele zaley od specyfiki konkretnego
przypadku. Dla przykadu, architektura bazy
wielowymiarowej z wykorzystaniem rekordw zmiennej
dugoci moe si okaza w pewnych specyficznych
implementacjach, wykorzystujcych dane z bardzo
ograniczonego zakresu, bardzo wydajna rwnie dla
znacznie wikszych woluminw danych ni wynika to
z tabeli.

Tabela 2.

Baza wielowymiarowa w pamici


operacyjnej

Dyskowa baza
wielowymiarowa

0.001 % - 100 %
100 %
0.000001% - 0.001%
0.000001% - 100%
47

48

W wikszoci przypadkw mona dokona wyboru, jeli nie idealnego, to


najlepszego z moliwych wyborw narzdzi OLAP. Nie ma jednak prostych recept.
Zestawienia, takie jak zaprezentowane tutaj, s zawsze pomocne, ale same mog
da jednoznaczn odpowied tylko w niewielu, na og skrajnych, przypadkach.
Kade wdroenie takiego systemu powinno by poprzedzone wnikliw analiz
potrzeb uytkownikw, uwzgldniajc potencjalne drogi rozwoju w przyszoci.
Podzia wedug rodzajw rda danych jest tylko jednym z elementw, na ktre
naley zwrci uwag, na pewno decydujcym o przyszej pojemnoci i wydajnoci
systemu. Jest to jednak zagadnienie bardzo wane. Czsto sprowadza si do
pytania o konieczno budowy korporacyjnej lub tematycznej hurtowni danych
przedsiwzicia dugotrwaego i wielokrotnie bardziej kosztownego ni sama
aplikacja analityczna. Prognozowany rozmiar tej bazy bdzie wwczas kluczem do
wyboru technologii. Z drugiej strony wydaje si, e w wielu przypadkach istotne
mog by i inne czynniki wynikajce z konkretnego zastosowania. W modelach
sucych do kontroli kosztw, budetowania i monitorowania realizacji planw
rozstrzygajca moe okaza si atwo tworzenia i ewolucji struktur analitycznych
przez uytkownika kocowego. Budetowanie wymaga ponadto moliwoci zapisu,
a chocia wszystkie rda danych maj tak teoretyczn moliwo, to aplikacje
oparte na bazach relacyjnych zazwyczaj na to nie pozwalaj. Mona znale
zastosowania, jak na przykad analiza scenariuszy, gdzie szybko i funkcjonalno
przeliczania danych bdzie dla odbiorcy systemu najwaniejsza. Takich przykadw
mona wymieni znacznie wicej. Nie uatwia to wyboru. Mona nawet wysnu
wniosek, e do kadego z zastosowa w jednej firmie trzeba by byo zastosowa
system innego typu. Cho pozornie dziaanie takie wyglda na pogranie firmy
w chaosie informacyjnym, cho kci si to z ide spjnych, jednolitych
architektonicznie i informacyjnie hurtowni danych, to w duych firmach wiatowych
mona coraz czciej spotka takie rozbudowane systemy. Co wicej takie dziaania
mona zaobserwowa ju w firmach polskich, ktre dopiero co zakoczyy (z 49
sukcesem) wdraanie hurtowni danych. Na to jednak nie wszystkich jest sta.
W wikszoci przypadkw musi wystarczy jeden system.

50

Zasady przenoszenia niejednorodnych danych


do hurtowni danych

Programami odpowiedzialnymi za przenoszenie danych ze rde


do hurtowni danych s programy:
Tumaczce (wrappers),
adujce (loaders),
Integrujce (mediators).
Programy tumaczce i adujce dane do HD su do adowania,
transformacji, czyszczenia i aktualizacji danych w HD. Programy
integrujce za doczaj nowe dane w HD poprzez rozstrzyganie
konfliktw niespjnoci pomidzy rnymi rdami danych.
Ponadto dodatkowo mog analizowa przyczyny tych niespjnoci i
konfliktw, odstpstwa od typowych danych, odstpstwa od norm i
oglnych zasad przyjtych w zasilaniu hurtowni danych. Handlowo
przyjto nazywa te narzdzia do przenoszenia danych ze rde do
hurtowni programami ETL (ang. extraction-transformation-load
ekstrakcji-transformacji-adaowania)

51

Przedstawiony podzia systemw analitycznych klasy OLAP jest ju


podziaem klasycznym. Nie mona rwnie podwaa jego zasadnoci,
przeciwnie, wady i zalety poszczeglnych sposobw przechowywania
danych powinny by wanymi kryteriami branymi pod uwag przy doborze
narzdzi tego typu. Istnieje jednak wiele innych, istotnych cech, ktre nie
powinny by bagatelizowane. Od strony technologicznej wane mog by
szczegy architektury systemu, a nie tylko rodzaj rda danych. Drugim,
zupenie innym aspektem, ktry nie moe zosta pominity jest satysfakcja
uytkownika. Na pocztku stwierdziem, e aplikacje klienckie wszystkich
narzdzi OLAP s podobne. W rzeczywistoci maj one podobn
funkcjonalno, ale czsto rni si znacznie i wanie takie rnice mog
zadecydowa, czy dany system bdzie lubiany i chtnie wykorzystywany
przez uytkownikw. Jest to prawda czsto nie brana pod uwag przez
informatykw delegowanych do wyboru narzdzia. W swoim zapale
skaniajcym ich do wyboru najlepszego (technologicznie) rozwizania,
bagatelizuj oni uytkownikw. Zbyt czsto okazuje si, e prawdziwe
powodzenie takiego wdroenia zaleao wanie od tego. Niestety
wwczas zwykle jest ju za pno.

Narzdzia ETL obejmuj:

Ekstrakcj (dostp do rnych rde danych),


Czyszczenie (wykrywanie i rozwizywanie niespjnoci danych
rdowych),
Transformacj (np. midzy rnymi formatami danych, midzy
rnymi jzykami opisu),
adowanie danych wprowadzanie danych do hurtowni danych,
Replikacj (tworzenie kopii danych rdowych rdowych HD),
Analiz danych wykrywanie w danych wartoci nieprawidowych
lub nieoczekiwanych,
Szybki transfer danych wany w przypadku duych hurtowni
danych,
Kontrol danych np. z punktu widzenia kompletnoci i poprawnoci
danych,
Analiz metadanych np. z punktu widzenia projektowania zmian
struktury danych w HD.
52

Przetwarzanie analityczne BD
i hurtownie danych (zagadnienia)

Porwnanie przetwarzania transakcyjnego i


analitycznego
Wielowymiarowo w przetwarzaniu analitycznym
Przegld narzdzi wspomagajcych przetwarzanie
analityczne
Przykady zastosowa analiz wielowymiarowych
Koncepcje hurtowni danych
Architektura i waciwoci hurtowni danych

1. Cele i etapy budowy

Hurtownia
danych

11. ZARYS BUDOWY


HURTOWNI DANYCH
Hurtownia
danych (HD)

1. Cele i etapy budowy


2. Charakterystyka etapu projektowania
3. Przykady projektw

1. Cele i etapy budowy

Cele HD (korzyci):
dostarczanie rzetelnych danych analitycznych
wysoka produktywno rozwiza
wzrost konkurencyjnoci firmy

HD

CJE Dane
GA
globalne
Narzdzia
RE
G
WYJSCIE
HD
A

Meta dane

Uzyskane poprzez:
kompleksowy i zintegrowany obraz firmy
dostp do informacji historycznych
ujednolicone dane dotyczce firmy
wyodrbnienie przetwarzania analitycznego z
przetwarzania transakcyjnego

1. Cele i etapy budowy

ABC WEJSCIE
Dane
rdowe

Dane
szczegowe

Dane
podsumowane

ZRZUT
Kopie
danych
Uytkownik

1. Cele i etapy budowy

Hurtownia
danych
Typowe obszary zastosowa HD:
sterowany marketing
dugoterminowa ocena wartoci klienta
analiza rentownoci
analiza ryzyka kredytowego
zarzdzanie zapasami
ustalanie ceny

Cykl ycia SIZ:


identyfikacja i analiza
modelowanie
projektowanie
implementacja
rozwj

Etapy budowy
(Oracle Warehouse Builder):
Definiowanie
Generowanie
adowanie i administrowanie
Raportowanie

Hurtownia
danych

1. Cele i etapy budowy

1. Cele i etapy budowy

Cykl ycia SIZ:


identyfikacja i analiza
modelowanie
projektowanie
implementacja
rozwj
Etapy budowy (~PoeKlauerBrobst):
Planowanie
Zbieranie wymaga i modelowanie
Projektowanie
Zasilanie HD
Automatyzowanie procesu zarzdzania danymi
Generowanie raportw
Testowanie i szkolenie
Uruchomienie i rozwj

Hurtownia
danych

1. Cele i etapy budowy

Specyfika planowania HD:


PLAN
definiowanie celu i zakresu
okrelenie harmonogramu i
Hurtownia
danych
niezbdnych zasobw:
strategie dot. skadowych HD
platformy sprztowo-programowe
technologie sieci
Specyfika modelowania HD:
identyfikacja wymaga
uytkownikw (dane, funkcje,
poziom agregacji)
opracowanie wielowymiarowego
modelu firmy

MODEL

Hurtownia
danych

1. Cele i etapy budowy


Firma

Lokalizacja

FAKTY

Dzia

Produkt

Sprzeda

Kana
dystrybucyjny

Klasa

Zapasy
Koszty
...

Czas

Pozycja

Poziom

Przykad wielowymiarowego modelu


Przykad hierarchii w wymiarze produktu

1. Cele i etapy budowy


Specyfika projektowania HD:
opracowanie schematw BD
(obiekty, klucze, indeksowanie)
opracowanie strategii
gromadzenia i podziau danych
Specyfika zasilania HD:
zdefiniowanie rde danych
(formaty, integracja)
okrelenie zasad konwersji
opracowanie programw
zapeniajcych HD

1. Cele i etapy budowy


PROJEKT

Hurtownia
danych
Dane

Hurtownia
danych

Informacja

WEJCIE

Hurtownia
danych

Integracja
danych
(konsolidacja,
konwersja,
przenoszenie)

Transformacja
danych

1. Cele i etapy budowy


Specyfika ABD:
tworzenie procedur
archiwizowania i odzyskiwania
automatyzacja konwersji

1. Cele i etapy budowy


ABD

Hurtownia
danych

Specyfika generowania raportw:


opracowanie zasad dostpu
definiowanie raportw

WYJCIE

Hurtownia
danych

2. Charakterystyka etapu projektowania


Waciwoci HD istotne przy projektowaniu:
klarowno struktur danych
Hurtownia
danych
stabilno danych
zoone zapytania SQL
due wolumeny danych WE i informacji WY
konieczno zapewnienia bezpieczestwa danych

Stosowanie schematu gwiadzistego (zalety):


prosta struktura BD
szybki czas reakcji
opracowane narzdzia dostpu
analogie do zastosowa uytkownikw

Sprzedawca analizuje
przychody pod ktem:
klienta, produktu,
rynku i czasu
Marketing bada
dostawy pod ktem:
towaru, rynku i czasu

2. Charakterystyka etapu projektowania


Przykad BD o prostym schemacie gwiadzistym

Okresy
Id okresu
Opis okresu
Kwarta
Rok

Produkty
Id produktu
Opis prod.
Klasa
Rozmiar

Sprzeda
Id rynku
Id okresu
Id produktu
Jednostka m.
Wielko
sprzeday
Warto
sprzeda
% obniki

Specyfika uruchamiania HD:


tworzenie struktur pomocy
uytkownikom
opracowanie procedur
obsugujcych integralno danych
definiowanie procedur rozbudowy
aplikacji i zarzdzania danymi

2. Charakterystyka etapu projektowania


Reprezentowanie danych w prostym schemacie
gwiadzistym:
tabele zawierajce fakty (TF)
tabele wymiarw (TW)
TW2
TF
Pole2
Pole1
Pole22
Pole2
Pole23
Pole24
Pole3
...
Pole4
TW3
Pole3
Pole32
Pole33
Pole34
...

Opis rynku
Obszar
Region

Pole5
Pole6

TW1
Pole1
Pole12
Pole13
Pole14
Pole15
Pole16
...

...

2. Charakterystyka etapu projektowania


BD o schemacie gwiadzistym z wielokrotn tabel
faktw

Rynki
Id rynku

START

Hurtownia
danych

Okresy
Id okresu
Opis okresu
Kwarta
Rok
Produkty
Id produktu
Opis prod.
Klasa
Rozmiar

Sprzeda
Id rynku Sprzeda 1
Id okresuId rynkuSprzeda 2
Id produktu
Id okresu
Id rynku
JednostkaIdm.
produktu
Id okresu
WielkoJednostka
Id m.
produktu
sprzeday
Wielko
Jednostka m.
Warto sprzeday
Wielko
sprzeda
Wartosprzeday
% obniki
sprzeda
Warto
% obniki
sprzeda
% obniki

Rynki
Id rynku
Opis rynku
Obszar
Region

2. Charakterystyka etapu projektowania

2. Charakterystyka etapu projektowania

BD o schemacie gwiadzistym z tabel asocjacyjn


Sprzeda
Id rynku
Id okresu
Id produktu
Jednostka m.
Wielko
sprzeday
Warto
sprzeda
% obniki
Klasa produktu
Id produktu
Id klasy

Okresy
Id okresu
Opis okresu
Kwarta
Rok
Produkty
Id produktu
Opis prod.
Klasa
Rozmiar

Rynki
Id rynku
Opis rynku
Obszar
Region
Klasa
Id klasy
Opis klasy

2. Charakterystyka etapu projektowania


BD o schemacie gwiadzistym typu patek niegu

Kwartay

BD o schemacie gwiadzistym z tabelami zewntrznymi

Sprzeda
Id rynku
Id okresu
Id produktu

Okresy
Id okresu
Opis okresu
Kwarta Rok

Produkty
Id produktu
Opis prod.
Klasa
Rozmiar

Jednostka m.
Wielko
sprzeday
Warto
sprzeda
% obniki

Rynki
Id rynku
Opis rynku
Id obszaru
Id regionu
Regiony
Obszary
Id obszaru

Id regionu

Opis
obszaru

Opis
regionu

2. Charakterystyka etapu projektowania


BD o schemacie wielogwiadzistym

Okresy

Obszary

Sklepy

Oddzia

Lata
Sprzeda

Klasy

Rynki

Produkty

Pozycja mag.

Regiony

Transakcje

Grupa

Marki

2. Charakterystyka etapu projektowania


Wskazwki dotyczce projektowania HD:
identyfikacja tabeli wymiarw jako kryteriw
formuowanych
budowa hierarchii atrybutw uatwia "drenie" i
"zwijanie" danych
wprowadzanie tabel "agregatw" dla czstych uoglnie
stosowanie umiarkowanej "denormalizacji" poprawiajcej
wydajno przetwarzania
ograniczono schematw gwiadzistych

3. Przykady projektw - Rezerwacja


Usugi

Stany

Id usugi
Hotel
Liczba pokoi
Miasto
Region
Typ

Id kontroli
Id usugi
Kod klienta
Id pokoju
Potwierdzenie
Id promocji
Data przybycia
Liczba nocl.
...

Pokoje
Id pokoju
Typ ka
Status P/N
Opis pokoju
Wskanik dod

Typy promocji
Id promocji
Nazwa
Typ
Opis

Harmonogram
promocji
Data pocz.
Id usugi
Id promocji
Data koc.

Klienci
Id klienta
Nazwisko
Adres
Miasto
Typ klienta
Punkty

Rezerwacje

Okresy

Data wyjazdu
Id usugi
Kod klienta
Id pokoju
Potwierdzenie
Id promocji
Data przybycia
Kod przybycia
Liczba nocl.

Id okresu
Nazwisko
Adres
Miasto
Typ klienta
Punkty

3. Przykady projektw Sprzeda detaliczna


Produkty
Id produktu
Opis produktu
Rozmiar
Kolor
Kod klasy
Opis klasy
Dzia
Oddzia

Oddziay
Id oddziau
Opis oddziau
Id dziau

Stany
Id okresu
Id produktu
Id sklepu
Jednostki
Warto
Zapasy
Koszty

Id okresu
Tydzie
Miesic
Kwarta
Rok

Sklepy
Id okresu
Id oddziau
Id sklepu
Jednostki
Warto
Zapasy
Koszty

Dziay
Id dziau
Opis dziau

3. Przykady projektw Koszty (Oracle)

Okresy

Id okresu
Id dziau
Id sklepu
Jednostki
Warto
Zapasy
Koszty

Id sklepu
Opis sklepu
Kierownik
Wielko
Id regionu
Id okresu
Id dziau
Id sklepu
Jednostki
Warto
Zapasy
Koszty

Regiony
Id regionu
Opis regionu
Id obszaru
Opis obszaru

3. Przykady projektw Sprzeda (Oracle)

You might also like