Formy SQL-a

advertisement
1. Systemy przetwarzania danych masowych (problemy, podstawowe funkcje, sposoby
realizacji)
2. Wielowarstwowe modelowanie danych (modele: konceptualny, logiczny i fizyczny)
3. Definicje i pojęcia relacyjnego modelu danych
4. Projektowanie struktury relacyjnego modelu bazy danych: metody intuicyjne i formalne (formy
normalne)
5. Przegląd problemów zachowania integralności bazy danych i elementy praktycznego jej
definiowania (kontrola danych i transakcji)
6. Języki relacyjnych baz danych;
o algebra relacji i operowanie na danych,
o rola języków proceduralnych i deklaratywnych,
o podstawowe elementy języków QBE,
o geneza SQL,
7. SQL; podstawowe konstrukcje, standardy
8. Architektura funkcjonalna Systemów Zarządzania Bazami Danych (model funkcjonalny SZBD
ANSI/SPARC i jego rozszerzenia),
9. "ludzie baz danych" i ich rola
10. Realizacja implementacji aplikacji systemów baz danych (języki i narzędzia wspomagania
tworzenia aplikacji)
11. Firmowe Systemy Zarządzania Bazami Danych (ich klasyfikacja i zakresy stosowania)
12. Podstawy tworzenia aplikacji systemów baz danych - cykl życia systemu
13. Różne metodyki realizacji SBD i uwarunkowania ich zastosowania
14. Narzędzia i techniki realizacji SBD (języki, generatory, CASEy, środowiska)
15. Przegląd architektur systemów baz danych; scentralizowane (aż do mainfraim), rozproszenie
przetwarzania (rodzaje klient/serwer; od dwupoziomowych do wielopoziomowych i systemów
sieciowych), rozproszenie danych (systemy rozproszone, rozproszone transakcje, repliki bd)
16. Nierelacyjne modele baz danych (hierarchiczne, sieciowe/codasylowe, obiektowe)
17. Warunki bezpieczeństwa systemów baz danych
18. Hurtownie danych, składnice i podstawy realizacji serwerów OLAP
19. Bazy wiedzy i systemy decyzyjne (systemy ekspertowe - podstawy ich funkcji i realizacji)
20. Zarządzanie dużymi projektami informatycznymi; obszary zarządzania, metody organizacji
zespołu i zarządzanie poprzez jakość (CMM)
21. Aspekty prawne w realizacji i eksploatacji systemów baz danych
1.Systemy przetwarzania danych masowych (problemy, podstawowe funkcje, sposoby
realizacji)
Podstawowe funkcje systemu :
1. Wprowadzanie danych
2. Przechowywanie danych
3. Produkcja wyjść:
a) wyszukiwanie informacji
b) przetwarzanie informacji
4. Zawiązywanie wyjść
- dostępność
- upoważnienie dostępności
- kontrola poprawności danych i ich integralność
- wielodostęp
2.Wielowarstwowe modelowanie danych (modele: konceptualny, logiczny i fizyczny)
Model konceptualny – jest to analiza i opis świata rzeczywistego pod kątem realizacji celu.
Funkcje użytkowe- działania jakie są realizowane na danych
Dane :
- wybór zakresu interesujących nas danych
- logiczne odwzorowanie danych, zależności między danymi
Model logiczny – opisuje klasy i obiekty projektowanego systemu przy użyciu dwóch języków :
DDL –Date Description Language (Język Definicji Danych- Język Opisu Danych(JDD-JOD)).
DML – Date Manipulation Language ( Język Manipulacji Danych – JMD), za pomocą którego
opisane są funkcje użytkowe
Model ten zawiera :
Strukturę danych – model logiczny struktury; schemat bazy danych
Dodatkowe warunki integralności danych; uprawnienia użytkowników ; prespektywy
Model fizyczny –
SZBD – System Zarządzania Bazą Danych - jest to zestaw programów umożliwiających tworzenie i
eksploatację bazy danych. System zarządzania bazą danych jest oprogramowaniem ogólnego
przeznaczenia. System bazy danych składa się z bazy danych , systemu zarządzania bazą danych i
ewentualnie z zestawu aplikacji wspomagających pracę poszczególnych grup użytkowników.
3.Definicje i pojęcia relacyjnego modelu danych
Model danych w relacyjnych bazach danych składa się z 3 podstawowych elementów :
- relacyjnych struktur danych
- operatorów relacyjnych umożliwiających tworzenie , przeszukiwanie i modyfikację bazy
danych
- więzów integralności jawnie lub niejawnie określających wartości danych
Podstawową strukturą danych jest relacja będąca podzbiorem iloczynu kartezjańskiego dwóch
wybranych zbiorów reprezentujących dopuszczalne wartości. W bazach danych relacja przedstawiana
jest w postaci tabeli. Relacja jest zbiorem krotek posiadających taką samą strukturę, lecz różne
wartości. Każda krotka odpowiada jednemu wierszowi tablicy i posiada co najmniej jeden atrybut
odpowiadający pojedynczej kolumnie tablicy. Każda relacja ( tablica) posiada następujące własności:
- każda relacja w bazie danych ma jednoznaczną nazwę
- każda kolumna w relacji ma jednoznaczną nazwę w ramach jednej relacji
- wszystkie wartości w kolumnie muszą być tego samego typu
- porządek kolumn w relacji nie jest istotny
- każdy wiersz w relacji musi być różny
- porządek wierszy nie jest istotny




Wszystkie wartości danych są typów prostych
Wszystkie dane w relacyjnej bazie zapisywane są w dwuwymiarowej tablicy relacji
Po wprowadzeniu danych można porównać wartości z różnych kolumn
Operacje definiowane są logicznie
Własności relacyjnej bazy danych
- relacyjna baza danych widziana jest przez użytkowników jako zbiór relacji (tabel)
- użytkownik widzi dane w postaci wierszy i kolumn
- operatory relacyjne służą do dzielenia i łączenia relacji
- powiązania między danymi realizowane są za pomocą wartości danych
- język do wybierania danych – nieproceduralny
- zapewniona jest niezależność danych
Operatory relacji :
- Selekcja – operacja pobierania i wyświetlania danych z relacji, w wyniku której otrzymuje się
wiersze spełniające warunek logiczny
- Projekcja – operacja wybierania pewnych kolumn z relacji
- Iloczyn kartezjański – wynik połączenia wierszy z dwóch zbiorów danych
- Złączenie – wynik połączenia danych z dwóch zbiorów
- Suma zbiorów – wszystkie wiersze z obu zbiorów
- Iloczyn zbiorów – wspólne wiersze obu zbiorów
- Różnica zbiorów – tylko takie wiersze, które występują w jednym ze zbiorów
Definicje :
 Wiersze w tablicy (która reprezentuje relacje) muszą być rozróżnialne (nie możemy operować
na ich kolejności.
Musimy wybrać takie atrybuty które jednoznacznie określają dany wiersz. Zestaw takich atrybutów
nazywamy kluczem. W szczególnych przypadkach jest to 1 atrybut. Musi on jednoznacznie
określać wiersz (Inaczej jest to podzbiór atrybutów jednoznacznie nie identyfikujący wiersza).
Klucz właściwy to taki klucz z którego nie można usunąć żadnego atrybutu gdyż przestanie być
kluczem (mieć właściwości klucza) czyli jednoznacznie identyfikować wiesz.
Klucz który zawiera informacje, które możemy usunąć (jakiś atrybut) i będzie dalej kluczem
nazywamy nadkluczem.
! Zawsze dążymy do tego aby klucz był jak najkrótszy ale jednoznacznie identyfikował wiersz.
Z kluczy właściwych wybieram jeden klucz główny, który jest specjalnie traktowany, indeksowany,
według niego będziemy szybko wyszukiwać wiersze.

Klucz nazywamy kluczem prostym, jeżeli zbiór atrybutów wchodzących w jego skład jest
zbiorem jednoelementowym; w przeciwnym wypadku mamy do czynienia z kluczem
złożonym. Najczęściej w relacji można wyróżnić wiele kluczy, które nazywamy kluczami
potencjalnymi. Jeden (wybrany) klucz spośród kluczy potencjalnych nazywamy kluczem
głównym , natomiast pozostałe kluczami drugorzędnymi.
Klucz główny – jedna lub więcej kolumn tabeli, w których wartości jednoznacznie identyfikują
każdy wiersz tabeli;
W każdej relacji może istnieć wiele kluczy kandydujących;
Klucz główny wybierany jest ze zbioru kluczy kandydujących;
Każdy klucz kandydujący i główny musi być jednoznaczny i nie może zawierać wartości null
Dążymy do tego aby klucz główny był:
 Jak najkrótszy (ze względu na to że powtarza się w różnych tabelach oraz ze względu na
szybkość przetwarzania.)
 Niezmienny w czasie pracy systemu (nie zmieniał się), gdyż jest podstawą odwzorowania
związków logicznych, zmiany w kluczach głównych są bardzo skomplikowane. W dużych
systemach klucze powtarzają się mnóstwo razy co wymusza mnóstwo zmian.




Klucz obcy – kolumna stanowi klucz obcy tabel , jeżeli występują w niej jedynie wartości
klucza podstawowego innej tabeli;
Jest to sposób łączenia danych przechowywanych w różnych tabelach;
Klucz obcy – kolumna lub grupa kolumn tabeli.
Atrybut relacji nazywamy podstawowym, jeżeli należy do dowolnego z kluczy tej relacji
Atrybut nazywamy wtórnym, jeżeli nie należy do żadnego z kluczy tej relacji.
Związki :
- reguły definiowania związków : liczebność , opcjonalność
- liczebność : związek 1:1 , 1:M, N:M
4. Projektowanie struktury relacyjnego modelu bazy danych: metody intuicyjne i formalne
(formy normalne)
Normalizacja relacji ma na celu takie jej przekształcenie, by nie posiadała ona cech niepożądanych.
Jako główną cechę niepożądaną wymienić należy redundancję ( powtarzanie się) danych. Inne cechy
niepożądane związane są z możliwościami operowania na bazie danych.
Normalizacja:
 Podejście intuicyjne,
 Podejście formalne,
Schemat spełnia Formę Normalną, jeżeli jego wszystkie tabele spełniają warunki Formy
Normalnej.
Jeżeli jakaś tabela spełnia warunki I Formy Normalnej, to jest w Formie Normalnej I.
Tabela jest w N Formie Normalnej, jeżeli jest w formie N-1 i spełnia dodatkowo warunki N
Formy Normalnej.
1. I Forma Normalna.
Tabela jest w I Formie Normalnej, gdy wielkość atrybutów są typami atomowymi (z dopuszczalnego
prze SZBD zakresu.
(Typy atomowe – z punktu widzenia SZBD, są widziane jako całość.
2. II Forma Normalna.
Znalezienie zależności funkcjonalnych pomiędzy atrybutami w tabeli. Y jest w zależności
funkcjonalnej do X, gdy wartość atrybutu X wyznacza wartość Y. X
Y
Tabela jest w II Formie Normalnej, jeżeli jest w I Formie Normalnej, oraz jeżeli każdy atrybut zwykły
jest w pełni funkcjonalnie zależny od klucza głównego.
Pełna zależność – to znaczy atrybut zależy od wszystkich atrybutów klucza głównego.
3. III Forma Normalna.
Tabela jest w III Formie Normalnej, jeżeli jest w II Formie Normalnej, oraz jeżeli spełnia warunek że
żaden atrybut zwykły nie zależy funkcjonalnie przechodnio (inaczej zależność tranzytywna) od klucza
głównego.
Inaczej, że każdy atrybut zależy wyłącznie od klucza głównego.
Zależność funkcjonalna przechodnia - X
Y
Z.
Forma Normalna BoyceCood.
Tabela jest w Formie Normalnej BoyceCodd’a , jeżeli tablica jest w III Formie Normalnej i każda
zależność funkcjonalna atrybutu zwykłego zależy nie tylko od klucza właściwego.
4. IV Forma Normalna.
Tablica jest w IV Formie Normalnej jeżeli jest w III Formie Normalnej, i występuje w niej co najwyżej
jedna wielowartościowa zależność funkcjonalna.
Wielowartościowe zależności funkcjonalne – występują gdy więcej niż 1 wiersza tej tablicy występują
te same wartości atrybutu niezależnie od pozostałych atrybutów.
5. V Forma Normalna.
Tablica jest w V Formie Normalnej jeżeli jest w IV Formie Normalnej, oraz może w niej występować co
najwyżej jedna wielowartościowa zależność funkcjonalna przechodnia.
Formy Normalne w niewielkich projektach w których jesteśmy w stanie objąć sens danych nie
są nam konieczne, poradzimy sobie bez nich. Gorzej natomiast przy dużych (dużych czyli złożonych)
projektach, realizowanych przez grupy osób.
5.Przegląd problemów zachowania integralności bazy danych i elementy praktycznego jej
definiowania (kontrola danych i transakcji)
Transakcja jest sekwencją instrukcji po wykonaniu której spójna baza danych nadal zachowuje swą
spójność ( zgodność z modelowaną rzeczywistością). Transakcja jest operacją atomową tzn. system
zarządzania bazą danych może wykonać wszystkie instrukcje wchodzące w skład transakcji albo
żadnej.
Zarządzanie transakcjami
Model transakcji ACID
• Atomicity – niepodzielność
• Consistency – zachowanie spójności (po zakończeniu transakcji)
• Isolation – izolacja (semantyczna) transakcji działających w tym samym czasie
• Durability – trwałość i odporność wyników transakcji np. na awarię
Realizacja w relacyjnych b.d.
• Obsługa przetwarzania transakcyjnego
– z reguły wbudowana w DBMS
– możliwe współdziałanie w zewnętrznymi monitorami transakcyjnymi
• Instrukcje SQL
– COMMIT – zatwierdzenie
– ROLLBACK – wycofanie
Częściowe wycofywanie transakcji
• Punkty kontrolne (savepoints) i wycofanie do nich (ROLLBACK TO SAVEPOINT)
• Niejawne punkty kontrolne w niektórych implementacjach SQL
• Transakcje zagnieżdżone (nested transactions)
Transakcje autonomiczne
• Całkowicie niezależne od transakcji głównej: osobno zatwierdzane lub odrzucane
• Typowe zastosowanie: audyt, zapis dzienników operacji itp.
Problemy wielodostępu
Problemy związane z wielodostępem
• Brudne odczyty (dirty reads)
• Niepowtarzalność odczytu, fantomy i niespójna analiza
• Utracone modyfikacje
• Niespójny odczyt w ramach zapytania
• Niespójny odczyt w ramach transakcji
• Konflikty między DML i DDL
Rozwiązania
• Izolacja transakcji może zapobiegać
– brudnym odczytom
– niepowtarzalności odczytu, fantomom i niespójnej analizie
– niespójności odczytu
• Blokady mogą zapobiegać
– utraconym modyfikacjom
– konfliktom DML-DDL
Izolacja transakcji
Poziomy izolacji
• Określają, które z problemów wielodostępu są automatycznie eliminowane przez system
zarządzania transakcjami
• Poziomy izolacji w SQL
– read uncommited
– read commited
– repeatable read
– serializable
* transakcja nie widzi żadnych zmian wprowadzonych przez transakcje współbieżne
* transakcja może modyfikować dane tylko jeśli nie zostały zmodyfikowane przez zatwierdzone
współbieżne transakcje
• Transakcje read only
– transakcje tak zadeklarowane nie mogą modyfikować danych
– w Oracle są one izolowane na poziomie serializable
Metody izolacji transakcji
Blokady
• Działanie
– odczyt powoduje założenie blokady
dzielonej
• Zalety
– stosunkowo proste w realizacji
– nie wymaga dodatkowych zasobów
• Wady
– odczyty konkurują z zapisami
– przy zapisie konieczna konwersja blokady
– grozi pojawianiem się nie zablokowanych fantomów, gdyż w chwili zakładania blokady wiersze te
jeszcze nie istniały
Wersjowanie
• Działanie
– każdy zapis powoduje powstanie dwóch wersji zmienianych danych
* dla zapisującej transakcji
* dla „reszty świata”
• Zalety
– odczyty nie konkurują z zapisami
• Wady
– wymaga dodatkowych zasobów (problemy przy długich transakcjach)
– trudniejsze w realizacji
Szeregowalność
Szeregowalność (serializability)
• Wynik działania współbieżnych transakcji jest taki, jak gdyby były one wykonane sekwencyjnie
• W wyniku działania transakcji szeregowalnych stan bazy pozostaje spójny
Zarządzanie współbieżnością
• Optymistyczne
– wykrywanie konfliktów
– w wypadku ich wykrycia – odrzucenie transakcji
• Pesymistyczne
– zapobieganie problemom, np. za pomocą blokad
Dwufazowe blokowanie (two-phase locking, 2PL )
• Zapewnia szeregowalność transakcji
• Zasada: żadna blokada nie może być zdjęta przed założeniem wszystkich blokad transakcji
• Typowa realizacja:
– faza wzrostu: transakcja zakłada kolejne blokady, nie zdejmując żadnej
– faza zatwierdzania: blokady są zdejmowane przez zakończenie transakcji (COMMIT lub
ROLLBACK)
Blokady (locks)
Ziarnistość (granularity) blokad
• Poziom tabeli
• Poziom wiersza albo strony
Poziomy blokowania
• Określają siłę (restryktywność) blokad
• Tzw. macierz kompatybilności definiuje wzajemne oddziaływanie blokad różnych poziomów
• Poziomy blokad wierszy
– dzielone (shared)
– wyłączne (exclusive)
– aktualizujące, przyrostowe itd.
• Poziomy blokad tabel
– row share, row exclusive, share, share row exclusive, exclusive
Obiekty blokowane
• Dane (automatycznie lub „ręcznie”)
• Słownik (automatycznie)
Wytyczne dla blokowania
• Blokady powinny eliminować problemy związane z wielodostępem, których nie usunięto innymi
metodami
• Blokady powinny w najmniejszym możliwym stopniu ograniczać wielodostęp
– możliwie najmniejszy zasięg i najmniejsza restryktywność
– odczyty nie czekają na zapisy i odwrotnie
6.Języki relacyjnych baz danych; algebra relacji i operowanie na danych,
rola języków proceduralnych i deklaratywnych,
Zdania języka:
1. Języki definiowania danych - Definiowanie bazy danych (DDL):
 Tabel Bazy Danych,
 Związków logicznych,
 View – perspektywy, (upraszcza zadawanie pytań, zwiększa .?. danych - wady;
opóźnienie, problemy przy dodawaniu rekordów, większość SZBD może nie
zezwalać na aktualizację poprzez widoki).
 Więzy integralnościowe,

Definicja uprawnień (często wyodrębniony jako oddzielny język definiowania
uprawnień – DAL).
2. Języki manipulacji danych (DML):
 Dopisywanie wiersza do tablicy,
 Usuwanie wiersza z tablicy,
 Aktualizacja danych,
 Wyszukiwanie danych. !
3. Inne:
 Definiowanie transakcji.
Formalne podstawy języków – Codd.
JDD – języki deklaratywne.
JMD – języki algorytmiczne lub deklaratywne.
Języki:
1. Języki oparte na algebrze relacji (algorytmiczne),
2. Języki (różne) budowane w oparciu o rachunek relacyjny (deklaratywne).
2.1. w oparciu o dziedziny,
2.2. w oparciu o wiersze,
3. Języki transformacji (zawierają część języków 1, 2.1, 2.2 – np. SQL – deklaratywny),
4. Języki oparte na reprezentacji graficznej (QBE - Query Be Example, inaczej QBF Query By Form). (deklaratywne, oparte o 2.1).
5. Języki czwartej generacji – 4 GL – języki wybigające nad DDL i DML, do pisania
aplikacji, realizujące znacznie więcej funkcji.
1. Języki oparte na algebrze relacji.
Element algebry relacji istotne przy definiowaniu języków:
R1 = f (R) – działania 1 argumentowe.
- Operacja selekcji:
R1 warunek (R)
Można spotkać się z symbolem
ta)
R
R1
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
- Operacja rzutu:
Wiersze spełniające
warunek
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
lista atrybutów) (R)
a1
a2
a3
a4
a5
a6
a1
a3
a5
 ( a1, a3, a5 ) (R)
Jest operacją, która daje tabelę pochodną do R w której pozostają kolumny znajdujące się na liście
atrybutów. Ilość wierszy zostanie zredukowana jeżeli pojawią się takie same wiersze.
- Suma:
a1
A
A
A
A
a2
A
A
A
A
a3
A
A
A
A
a4
A
A
A
A
U
a1
B
B
B
a2
B
B
B
a3
B
B
B
a4
B
B
B
U
a1
A
A
A
A
B
B
B
a2
A
A
A
A
B
B
B
a3
A
A
A
A
B
B
B
a4
A
A
A
A
B
B
B
Suma jest tablicą wynikową, zawierającą wiersze z obydwu tabel, tabele muszą posiadać taki sam
zestaw atrybutów.
- Rożnica:
Aa1
C
A
X
S
a2
C
A
X
S
a3
C
A
X
S
a4
C
A
X
S
_
a1
C
Z
X
H
a2
C
Z
X
H
a3
C
Z
X
H
a4
C
Z
X
H
-
a1
A
S
Z
H
a2
A
S
Z
H
a3
A
S
Z
H
a4
A
S
Z
H
Różnica jest tablicą wynikową, zawierającą wiersze które nie są identyczne , wszystkie trzy tabele
muszą posiadać taki sam zestaw atrybutów.
- Przekrój (Iloczyn):
a1
C
A
X
S
a2
C
A
X
S
a3
C
A
X
S
a4
C
A
X
S
a1
C
Z
X
H
a2
C
Z
X
H
a3
C
Z
X
H
a4
C
Z
X
H

a1
C
X
a2
C
X
a3
C
X
a4
C
X
Różnica jest tablicą wynikową, zawierającą wiersze które występują w tabeli A i B , wszystkie trzy
tabele muszą posiadać taki sam zestaw atrybutów.
Język będziemy definiować w oparciu o te operacje, czyli operacje; selekcji, rzutu, sumy,
różnicy, przekroju.
W ten sposób język może:
- wyszukiwać,
- dodawać wiersz (wiersze),
- usuwać wiersz (wiersze),
- aktualizować wiersz.
Ale nie wiemy jak połączyć tabele z różnymi atrybutami ?
- Iloczyn Kartezjański:
a1
C
A
X
a2
C
A
X
a3
C
A
X
X
b1
Z
H
b2
Z
H
X
a1
C
C
A
A
X
X
a2
C
C
A
A
X
X
a3
C
C
A
A
X
X
b1
Z
H
Z
H
Z
H
b2
Z
H
Z
H
Z
H
Iloczyn kartezjański jest tablicą wynikową, zawierającą kombinacje wierszy z obu tabel (A i B).
Iloczyn + Selekcja – nazywany jest złączeniem naturalnym.
Język algorytmiczny musi posiadać umiejętność generowania algorytmów.
7.Geneza SQL,
SQL (ang. Structured Query Language) to strukturalny język (informatyka) zapytań używany do
tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych.
Język SQL jest językiem deklaratywnym. Decyzję o sposobie przechowywania i pobrania danych
pozostawia się systemowi zarządzania bazą danych DBMS.
8.SQL; podstawowe konstrukcje, standardy
Standardy SQL
W 1986 roku SQL stał się oficjalnym standardem, wspieranym przez Międzynarodową Organizację
Normalizacyjną (ISO) i jej członka, Amerykański Narodowy Instytut Normalizacji (ANSI). Wczesne
wersje specyfikacji (SQL86 i SQL89) były w dużej mierze jedynie określeniem wspólnej płaszczyzny
łączącej różne istniejące wówczas produkty i pozostawiały wiele swobody twórcom implementacji. Z
czasem jednak systemy komputerowe uległy integracji i rynek zaczął domagać się aplikacji oraz ich
funkcji faktycznie współpracujących z wieloma różnymi bazami danych. Pojawiła się potrzeba
określenia standardu ściślejszego. Mógł on jednocześnie obejmować nowe elementy, nieujęte do tej
pory w języku. Tak powstał SQL92, obowiązujący w produktach komercyjnych do dziś.
Formy SQL-a
Z technicznego punktu widzenia, SQL jest podjęzykiem danych. Oznacza to, że jest on
wykorzystywany wyłącznie do komunikacji z bazą danych. Nie posiada on cech pozwalających na
tworzenie kompletnych programów. Jego wykorzystanie może być trojakie i z tego względu wyróżnia
się trzy formy SQL-a:
1. SQL interakcyjny lub autonomiczny wykorzystywany jest przez użytkowników w celu
bezpośredniego pobierania lub wprowadzania informacji do bazy. Przykładem może być
zapytanie prowadzące do uzyskania zestawienia aktywności kont w miesiącu. Wynik jest
wówczas przekazywany na ekran, z ewentualną opcją jego przekierowania do pliku lub
drukarki.
2. Statyczny kod SQL (Static SQL) nie ulega zmianom i pisany jest wraz z całą aplikacją,
podczas której pracy jest wykorzystywany. Nie ulega zmianom w sensie zachowania
niezmiennej treści instrukcji, które jednak zawierać mogą odwołania do zmiennych lub
parametrów przekazujących wartości z lub do aplikacji. Statyczny SQL występuje w dwóch
odmianach.
1. Embedded SQL (Osadzony SQL) oznacza włączenie kodu SQL do kodu źródłowego
innego języka. Większość aplikacji pisana jest w takich językach jak C++ czy Java,
jedynie odwołania do bazy danych realizowane są w SQL. W tej odmianie
statycznego SQL-a do przenoszenia wartości wykorzystywane są zmienne.
2. Język modułów. W tym podejściu moduły SQL łączone są z modułami kodu w innym
języku. Moduły kodu SQL przenoszą wartości do i z parametrów, podobnie jak to się
dzieje przy wywoływaniu podprogramów w większości języków proceduralnych. Jest
to pierwotne podejście, zaproponowane w standardzie SQL. Embedded SQL został
do oficjalnej specyfikacji włączony nieco później.
3. Dynamiczny kod SQL (Dynamic SQL) generowany jest w trakcie pracy aplikacji.
Wykorzystuje się go w miejsce podejścia statycznego, jeżeli w chwili pisania aplikacji nie jest
możliwe określenie treści potrzebnych zapytań - powstaje ona w oparciu o decyzje
użytkownika. Tę formę SQL generują przede wszystkim takie narzędzia jak graficzne języki
zapytań. Utworzenie odpowiedniego zapytania jest tu odpowiedzią na działania użytkownika.
Wymagania tych trzech form różnią się i znajduje to odbicie w wykorzystywanych przez nie
konstrukcjach językowych. Zarówno statyczny, jak i dynamiczny SQL uzupełniają formę autonomiczną
cechami odpowiednimi tylko w określonych sytuacjach. Większość języka pozostaje jednak dla
wszystkich form identyczna.
Składnia SQL
Użycie SQL, zgodnie z jego nazwą, polega na zadawaniu zapytań do bazy danych. Zapytania można
zaliczyć do jednego z dwóch głównych podzbiorów:


SQL DML (ang. Data Manipulation Language, czyli Język Manipulacji Danymi),
SQL DDL (ang. Data Definition Language, czyli Język Definicji Danych).
Instrukcje SQL w obrębie zapytań tradycyjnie zapisywane są wielkimi literami, jednak nie jest to
wymóg. Każde zapytanie w SQL-u musi kończyć się znakiem ";" (średnik).
Dodatkowo, niektóre interpretery SQL (np. psql w przypadku PostgreSQL), używają swoich własnych
instrukcji, spoza standardu SQL, które służą np. do połączenia się z bazą, wyświetlenia dokumentacji,
itp.
DML
DML służy do operacji na danych - do ich umieszczania w bazie, kasowania, przeglądania, zmiany.
Najważniejsze polecenia z tego zbioru to:




SELECT - pobranie z bazy danych,
INSERT - umieszczenie danych w bazie,
UPDATE - zmiana danych,
DELETE - usunięcie danych z bazy.
Dane tekstowe podawane muszą być zawsze w formie ograniczonej znakami pojedynczego
cudzysłowu (').
DDL
Dzięki DDL natomiast, można operować na strukturach, w których te dane są przechowywane - czyli
np. dodawać, zmieniać i kasować tabele lub bazy. Najważeniejsze polecenia tej grupy to:



CREATE (np. CREATE TABLE, CREATE DATABASE, ...) - utworzenie struktury (bazy, tabeli,
indeksu, itp.),
DROP (np. DROP TABLE, DROP DATABASE, ...) - całkowite usunięcie struktury,
ALTER (np. ALTER TABLE ADD COLUMN ...) - zmiana struktury (dodanie kolumny do tabeli,
zmiana typu danych w kolumnie tabeli).
9.Architektura funkcjonalna Systemów Zarządzania Bazami Danych (model funkcjonalny SZBD
ANSI/SPARC i jego rozszerzenia),
"ludzie baz danych" i ich rola
- Grupa SPARK – opracowała architekture systemów baz danych.
- Założenie istnienia 3 modeli danych:
n - modeli
Model
zewnętrzny
danych
nX
1X
Model logiczny
danych
- hierarchiczny,
- sieciowy,
- relacyjny,
- obiektowy,
- dedukcyjny
Użytkownik
1X
Model fizyczny
danych
Model zewnętrzny obejmuje wybraną część danych, zależną od potrzeb grup użytkowników.
Rysunek 7
Założenie na jednym komputerze, w dzisiejszych czasach architektura realizowana jest na wielu
komputerach co znacznie komplikuje sytuacje.
Podstawowa koncepcja realizowania Baz Danych w architekturze kijent – serwer.
Rysunek 8
Największa rewolucja w koncepcji Systemów Baz Danych ostatnich lat. (wydzielamy funkcjie
użytkowe).
Pozwala to tworzyć funkcje użytkowe na różne platformy, jest to take dużo tańsze rozwiązanie.
Systemy Zarządzania Baz Danych
- Historia SZBD.
- Obecne SZBD:
- Oracle,
- DB/2, (IBM)
- INFORMIX (narzędzia 4GL)
- SYBASE (Sun) – dużo mniejsza
poprzednich.
IBM wykupił INFORMIX, wydano
narzędzia do migracji na DB/2
sprzedaż od
Kilka lat temu istniały jeszcze:
- Progres,
- Ingres
Systemy te dorównywały czołówce, ale były tańsze i przeznaczone na mniejsze maszyny
Wraz z rozwojem komputerów PC pojawiły się SZBD na nie:
- początek to dBase (jeszcze nie SZBD),
- Microsoft Access,
- FoxPro,
- Clipper,
- Paradox (Borland).
Systemy te zaczeły dynamicznie się rozwijać znajdująć ogromny rynek.
W wyniku ostrej konkurencji Borland wykupił Clippera (Paradox), a Microsoft wykupił Fox Pro.
Powstały nowe linie produktów Interbese (Borland) i MS SQL Server (Microsoft).
Powstał jeszcze jeden system (który jest kością niezgody) istniejący obecnie jako open source
(na bazie Ingresu) PostgreSQL i mniejszy MySQL.
W odpowiedzi wielu producentów dużych systemów utworzyło mniejsze wersje swoich
systemów które mogłyby konkurować z mniejszymi systemami (potem przejście na duży
system).
10.Realizacja implementacji aplikacji systemów baz danych (języki i narzędzia wspomagania
tworzenia aplikacji)
Typy narzędzi do tworzenia aplikacji
Tradycyjne programowanie 3GL
• Języki: C, C++, Cobol, Java itp.
• Cechy
– niemal nieograniczone możliwości
– trudne – bardzo mała wydajność
– programy bardzo trudne do utrzymania
RAD (Rapid Application Development)
• Narzędzia: Visual Basic, Delphi, JBuilder
itp.
• Cechy
– duże możliwości
– znacznie większa wydajność
– dość trudne w użyciu – typowe działania
wymagają programowania
– programy dość trudne do utrzymania –
duża swoboda programisty
Specjalizowane narzędzia 4GL
• Cechy 4GL dla aplikacji z bazami danych
– programowanie zdarzeniowe
(event-driven)
– programowanie wizualne
– zintegrowane graficzne środowisko
projektowo-programistyczne
– konstrukcje wysokiego poziomu do
realizacji typowych zadań, np. interakcji
z użytkownikiem i bazą danych
– silne wykorzystanie możliwości DBMS
– typowe funkcjonalności aplikacji
wbudowane w narzędzie
• Narzędzia 4GL: Oracle Forms+Reports,
Powerbuilder itp.
• Cechy użycia 4GL
– duża wydajność programisty
– łatwe w użyciu – typowe funkcje
realizowane domyślnie
– łatwe utrzymanie – mało programowania, dość mała swoboda
programisty
- trudne uzyskanie nietypowego działania
Generatory aplikacji
• Generowanie aplikacji na podstawie
specyfikacji
• Narzędzia: systemy CASE,
np. Oracle Designer
• Aplikacja generowana w 3GL lub 4GL,
niekiedy wymaga niewielkich poprawek
• Cechy
– bardzo duża wydajność pracy
– powtarzalność wyników
– stosunkowo łatwe utrzymanie
– bardzo trudne uzyskanie nietypowego działania
– narzędzia obszerne i trudne do opanowania
11.Firmowe Systemy Zarządzania Bazami Danych (ich klasyfikacja i zakresy stosowania)
12. Podstawy tworzenia aplikacji systemów baz danych - cykl życia systemu
Systemy informacyjne z bazami danych
• Zwykle bardzo złożone
– złożone funkcjonalnie
– technicznie bardzo skomplikowane
• Tworzone na indywidualne zamówienie
– często o niepowtarzalnej funkcjonalności
• Bez możliwości długiego i masowego testowania
• Przeznaczone do długoletniej eksploatacji
• Silnie zmieniające się w czasie eksploatacji
• Często przeznaczone do użycia w skali korporacyjnej (enterprise)
• Silnie powiązane z innymi istniejącymi wcześniej i równoległe systemami
– ładowanie wcześniej istniejących danych
– współdziałanie
– stare technologie (legacy systems)
Ogólne cechy dużych systemów
• Każdy system jest częścią większego systemu
• W każdym systemie da się wydzielić podsystemy
• Systemy z reguły rosną z czasem
• Większa specjalizacja powoduje większe trudności w przystosowaniu
Pożądane cechy s.i.
• Podatność na zmiany
– łatwość wprowadzania zmian
– niski koszt zmian (w tym testów regresyjnych)
– niskie ryzyko zmian
• Stabilność technologii
– technologia w miarę szeroko znana i wykorzystywana
– stabilna pozycja rynkowa dostawców
– duże szanse wsparcia w okresie wielu lat
– technologia rozwijająca się
• Otwartość
– zdolność do współdziałania (interfejsy, bramki itp.)
– internacjonalizacja
– rozszerzalność
• Przenośność
– sprzęt
– systemy operacyjne
– architektury
• Skalowalność
– upsizing, downsizing
– VLDB
Cykle życia s. i.
Model kaskadowy (waterfall )
• Założenia formułowane na początku
• Długi czas realizacji
• Duże ryzyko inwestora
Model przyrostowo-spiralny
• Podział na podsystemy (wspólna faza planowania)
• Realizacja kolejnych podsystemów
• Akceptacje w każdym cyklu
• Modyfikacje poprzednich podsystemów
• Krótszy czas realizacji
• Mniejsze ryzyko inwestora
13. Różne metodyki realizacji SBD i uwarunkowania ich zastosowania
Strukturalne
• Dane i procesy modelowane osobno
• Wykorzystują tylko proste typy danych
• Dobrze dostosowane do modelu relacyjnego danych
• Podstawowe techniki
– diagramy związków encji (ERD)
– hierarchie funkcji (FHD)
– diagramy przepływu danych (DFD)
– modele macierzowe
Obiektowe
• Dane i procesy są modelowane łącznie
• Wykorzystują złożone typy danych
• Dostosowane do obiektowego modelu danych
• W przypadku realizacji opartej na relacyjnej b.d. wynikowy obiektowy model danych musi być
odpowiednio przekształcony
• Podstawowe techniki
– diagramy klas UML
– przypadki użycia i modele dynamiczne UML
14. Narzędzia i techniki realizacji SBD (języki, generatory, CASEy, środowiska)
Narzędzia CASE (Computer Aided Software Engineering)
• Zintegrowane pakiety oprogramowania realizującego zbior technik projektowania
• Dostosowane do konkretnej metodyki lub rodzaju metodyk
• Zwykle wyposażone w repozytorium
Typy narzędzi CASE
• Upper CASE
– wspomaganie wczesnych faz projektu – planowanie, analiza
• Lower CASE
– wspomaganie faz projektowania i wykonania
– ścisła integracja z konkretnym środowiskiem implementacyjnym
– generatory kodu, wspołdziałanie z narzędziami RAD (Rapid Application
Development)
Repozytorium
• Składnica informacji projektowej
• Powinno zawierać całość informacji o przebiegu projektu
– dokumenty
– decyzje
– opisy, uzasadnienia i komentarze
– modele
– wyniki
• Pożądane jest, by umożliwiało wersjowanie
Języki
- definiowania danych – DATA DEFINITION LANGUAGE (DDL)
- manipulowania danymi – DATA MANIPULATING LANGUAGE (DML)
- sterowania danymi – DATA CONTROL LANGUAGE (DCL)
- zapytań – QUERY LANGUAGE
Generatory
T-SQL, EMS MySQL Data Generator
Środowiska
DB2, Oracle, MySQL, MS SQL Server, PostgreSQL, SQLite, MS Access, SAP DB
Techniki
• Określają sposób wykonania konkretnych zadań projektowych
• Dostarczają modeli formalnych
• Zwykle mogą być zastosowane „ręcznie” lub z użyciem odpowiednich narzędzi
15. Przegląd architektur systemów baz danych; scentralizowane (aż do mainfraim),
rozproszenie przetwarzania (rodzaje klient/serwer; od dwupoziomowych do wielopoziomowych
i systemów sieciowych), rozproszenie danych (systemy rozproszone, rozproszone transakcje,
repliki bd)
• Systemy scentralizowane
- Przestarzały
- Klienci – duże korporacje, duża moc obliczeniowa wykorzystywana przez grupy terminalowe
- Przetwarzanie wsadowe
- Zastąpiony przez architekturę klient - serwer w latach 80-tych
- Systemy typu mainframe - Systemy typu mainframe (duża maszyna obliczeniowa) były
popularnym i historycznie pierwszym rozwiązaniem w zakresie implementacji systemów baz
danych. W rozwiązaniu tym rolę pierwszoplanową odgrywał główny komputer, do którego
podłączano szereg terminali
• Architektura klient-serwer
- Dwa lub więcej procesów współdziałających w rolach podrzędny-nadrzędny
- Klient wysyła zapytanie, które jest obsługiwane przez proces serwera
- Podział na model dwu- i trzywarstwowy
• Model dwuwarstwowy
- Wyróżniamy dwa procesy: klienta i bazy danych
- Procesy realizowane na odrębnych maszynach
- Proces klienta obsługuje aplikacje i prezentacje, proces serwera zarządza regułami i danymi
• Model trzywarstwowy
-Stosowany w przypadku skomplikowanych problemów decyzyjnych i obszernych zagadnień
przetwarzania transakcyjnego
- Trzy warstwy: serwer bazy danych, serwery aplikacyjne, serwery prezentacji
- Dane oddzielone są zarówno od reguł zarządzających nimi, od warstwy aplikacji, jak również
od procesu klienta realizującego warstwę prezentacji
• Architektury rozproszone
- Rozłożenie danych poprzez ich fragmentaryzację (podział) lub replikację (powielenie)
- Z punktu widzenia użytkownika traktowana jest jako spójna całość
- Trzy rodzaje przezroczystości: geograficzna, fragmentaryzacji, replikacji
- Typy rozproszonych baz danych (podział wg Beynona-Davies’a):
- System typu klient-serwer
- Jednorodna rozproszona baza danych
- Niejednorodna rozproszona baza danych
- Federacyjny system baz danych
- Kryteria wyboru:
• Równoległość
• Niezależność
• Elastyczność
• Dostępność
• Koszt/efektywność
• Bezpieczeństwo
• Architektury równoległe
- Zawiera wiele procesorów i dysków połączonych szybkim dedykowanym łączem sieciowym
- Ziarnistość systemów
- Miary wydajności:
– przepustowość – ilość zadań, które mogą być ukończone w jednostce czasu
– czas odpowiedzi – czas potrzebny na ukończenie pojedynczego zadania
- Rodzaje połączeń: magistrala, krata, hipersześcian
- Dzielona pamięć
- Dzielone zasoby masowe
- Architektura typu share nothing
- Architektura hybrydowa (hierarchiczna)
• Replikowane bazy danych
- Mechanizm ten pozwala na zwiększenie bezpieczeństwa poprzez przechowywanie
pełnoprawnej kopii struktury bazy danych na różnych serwerach
- Używa mechanizmu architektury rozproszonej
- Zwiększa wydajność i niezawodność
- Replikacja migawkowa
– nie monitoruje modyfikacji danych
– stosowana gdy dane są rzadko modyfikowane
- Replikacja transakcyjna
– wykorzystuje logi z transakcji
– stosowana gdy wymagane jest szybkie dostarczenie zmodyfikowanych
danych
- Replikacja scalana
– replikacja dwukierunkowa
– umożliwia wykonywanie zmian danych zarówno on-line jak i off-line
• Przestrzenne bazy danych
- Przestrzenne typy danych (SDT):
– wartości w SDT zawierają informacje przestrzenne oraz nie-przestrzenne
– pojedyncze obiekty:
• punkt – położenie, bezwymiarowe
• linia – połączenie
• region – obszar w przestrzeni dwuwymiarowej
– kolekcje obiektów:
• partycja – kolekcja regionów
• sieć – graf (punkty to wierzchołki, linie to krawędzie)
- Architektura rozszerzalna
- Główna idea: traktowanie przestrzennych typów danych jak wszystkich innych
- Przechowywanie przestrzennych typów danych jako obiektów
- Stosowanie przeładowywania operatorów
- Zastosowanie w elektronice, budownictwie, CAD, robotyce oraz systemy informacji
geograficznej (GIS)
• Drzewiaste bazy danych „LeftHand”
- Innowacyjne podejście do architektury bazodanowej
- Łączy wysoką dostępność, skalowalność i niezawodność z prostotą administracji i
użytkowania
- Skalowalność – dodanie kolejnego modułu – jak wpięcie urządzenia do sieci Ethernet
- Moduły – klastry, macierze dyskowe; dodawane bez potrzeby rekonfiguracji
• Rozwiązania gridowe
- Różnorodne maszyny liczące połączone w sieć (internet), oprogramowane w sposób
umożliwiający współdzielenie zasobów
- Sposób na zagospodarowanie niewykorzystanych zasobów: mocy obliczeniowej, zasobów
dyskowych, połączeń sieciowych
- Współdzielenie zasobów poprzez systemy plików (AFS, NFS, DFS, GPFS)
– bardziej zaawansowane – automatyczna duplikacja danych
- Computational grid
– łączenie zasobów poprzez wykorzystanie dostępnej aktualnie mocy obliczeniowej w
danym punkcie struktury
- Data Grid
– łączenie zasobów, bezpieczny i łatwy dostęp do rozproszonych, heterogenicznych
zbiorów danych (tysiące zbiorów, jako jedna heterogeniczna baza danych).
Wykorzystuje dane, pamięć oraz zasoby sieciowe ulokowane w różnych domenach
administracyjnych respektując globalną i lokalną politykę użytkowania danych
- Zadania/problemy:
– wyszukiwanie (jak znaleźć właściwe dane w środowisku rozproszonym)
– transfer – jak przenieść duże zasoby poprzez łącza sieciowe
– niezależność – jak łączyć różnorodne zbiory danych (DB2, Oracle, inne obiektowo
zorientowane bazy danych)
– bezpieczeństwo (mechanizm delegatów)
– zagwarantowanie prostoty użytkowania
- TOPOLOGIE
- IntraGrid – pewna liczba komputerów, dzielących wspólną domenę oraz dane
przeznaczone do użytku wewnętrznego w sieci prywatnej
– single security provider
– duża przepustowość sieci prywatnej
– wspólne środowisko
– praktycznie stała liczba dostępnych zasobów
- ExtraGrid – połączenie dwóch lub więcej sieci IntraGrid w jedną funkcjonalną całość
– wymaga więcej niż jednego security provider (większa złożoność
zarządzania)
– duża liczba, różnorodność zrzeszonych organizacji
– odmienna struktura komunikacji poszczególnych fragmentów
– zmienna liczba, wielkość zasobów
- Automatyczny dobór najlepszego urządzenia do składowania danych na podstawie
wzorca w zależności od rodzaju zadania
- Równomierne wykorzystanie mocy obliczeniowych (loadbalancing)
- Automatyczna lokalizacja i reakcja na awarie części składowych gridu
- Współdzielenie bazy danych z uaktualnianiem opóźnionym (np. poza okresem
największego ruchu w sieci) – odpowiednie narzędzia aktualizacji i synchronizacji
danych
– minimalizacja jednoczesnej liczby wpisów uaktualniających – zmniejszenie ilości
zadań oczekujących na dostęp do danych
- Metody zapobiegania wzajemnemu oczekiwaniu podzadań na udostępnienie
zasobów:
– nałożenie maksymalnego czasu oczekiwania (po jego upływie – operacja
anulowana i ponowne rozpoczęcie)
– rezerwacja zasobów w ustalonym porządku przed wykonaniem operacji (jeśli
nie można zarezerwować wszystkich potrzebnych, należy zwolnić
dotychczasowe i później spróbować ponownie)
– oprogramowanie wykrywające zastój (przed dodaniem nowego zadania,
liczony jest średni czas oczekiwania istniejącej kolejki. Jeśli dodanie
spowoduje zastój, zadanie jest usuwane i ponawia próbę po określonym czasie)
- OGRANICZENIA
- Problem skalowalności niektórych zadań na wiele jednostek/procesorów
- Czas dostępu do tej samej bazy danych
- Bezpieczeństwo danych
• Rozwiązania klastrowe
- Zastąpienie komputerów typu mainframe (stosowanych ze względu na efektywne I/O) –
skalowalność, dostępność, koszty
- Rozproszone bazy danych typu Oracle Parallel Server (OPS) – przetwarzanie wykonywane
przez aplikację rozproszone między kilka węzłów, pracujących na wspólnych danych
(protokoły uzgadniania danych)
- Zastosowania:
– dedykowane do przechowywania bardzo dużych ilości danych
– Szybki dostęp do danych przez wielu klientów równocześnie (banki, produkcyjne
bazy danych) – najczęściej Oracle Enterprise lub IBM DB/2
- Tanie komputery klasy PC, spięte siecią typu GigaNet lub Myrinet
- Hot-swapping, skalowalność i modyfikacja online
- Efektywność przy zastosowaniu niewielkiej ilości dużych maszyn typu SMP, a ostatnio server
blades (niższe zużycie energii, większe wykorzystanie zasobów)
SKŁADOWANIE DANYCH
- Osobny klaster do składowania danych
- Elementy klastra:
– duża pamięć operacyjna
– pewna liczba lokalnych dysków
- Klaster pełni więc rolę wirtualnego urządzenia dyskowego
- Zastąpienie drogich rozwiązań sprzętowych typu RAID, programowymi o
porównywalnej wydajności
16. Nierelacyjne modele baz danych (hierarchiczne, sieciowe/codasylowe, obiektowe)
Hierarchiczny model danych
Ogólnie: model danych, w którym dopuszczalnymi strukturami danych są hierarchie (drzewa). Np. na
czubku hierarchii są zapisy Dział, poniżej zapisy Pracownik i Klient, poniżej zapisu Klient zapisy
Zamówienie, poniżej zapisów Zamówienie zapisy PozycjaZamówienia. Model hierarchiczny był
pierwszym modelem danych i wiąże się go prawie wyłącznie z systemem IMS firmy IBM. Językiem
manipulacji danymi w tym systemie jest język DL/1, oparty o koncepcję nawigowania od zapisów
znajdujących się w górze hierarchii do zapisów podrzędnych. Dla modelowania koncepcyjnego model
hierarchiczny posiada zasadnicze wady, w szczególności utrudnia reprezentowanie związków
semantycznych wiele-do-wielu, oraz zmusza do często sztucznego i zbędnego nawigowania poprzez
zapisy pośrednie.
Sieciowy model danych
Sieciowy model danych w ogólnym zarysie niewiele odbiega od hierarchicznego. W miejsce związku
nadrzędny-podrzędny pomiędzy rekordami wprowadza się w nim tzw. typ kolekcji (set), który jest
złożonym typem danych pola zawierającym odniesienia do innych rekordów określonego typu. Tzn.
określenie typu kolekcji polega na podaniu typu rekordu-,,właściciela'' i typu rekordów-elementów
kolekcji (oraz ew. klucza porządkowania elementów). Operowanie danymi ma też charakter
proceduralny: typowe operacje to wyszukiwanie rekordu na podstawie zawartości pól i/lub
przynależności do danego wystąpienia typu kolekcji, i dokonywanie modyfikacji bieżącego rekordu.
Warunki integralności danych, poza oczywistymi już więzami dotyczącymi zgodności zawartości pól
rekordu z określeniem typu rekordu i unikalności pól kluczowych, mogą być formułowane w terminach
wymogu przynależności rekordu do jakiegoś wystąpienia określonego typu kolekcji.
Obiektowa baza danych
to baza danych, która przechowuje obiekty w odróżnieniu od wierszy lub krotek przechowywanych w
relacyjnej bazie danych. Ponieważ dane przechowywane są w postaci obiektów, mogą być
odczytywane tylko przy pomocy metod udostępnianych przez te obiekty.
Obiekty przechowywane w takiej bazie danych są widoczne jako obiekty języka programowania. Ta
właściwość nazywana jest transparentną persystencją (ang. transparent persistence).
W połączeniu z obiektowymi językami programowania, obiektowe bazy danych działają szybciej od
baz relacyjnych, ponieważ nie ma potrzeby przemapowywania rekordów przechowywanych w
tabelach na obiekty (ang. impedance mismatch).
Obiektowe bazy danych rozszerzają obiektowe języki programowania o funkcjonalność zarządzania
wielowątkowością, obiektowy język zapytań, funkcje odzyskiwania danych.
17. Warunki bezpieczeństwa systemów baz danych
Istnieje uzasadniona konieczność ochrony danych zarówno przed osobami, które nie powinny mieć do
nich dostępu (istnieją specjalne ustawy chroniące dane osobowe) jak i przed wypadkami losowymi, w
których dane mogą ulec zniszczeniu. Można wyróżnić kilka przypadków podczas których istnieje
zagrożenie utraty danych:
- błąd działania transakcji aktualizującej obiekty – jeśli tylko część danych zostanie zapisana to może
powstać niespójność
- błąd pracy systemu operacyjnego komputera lub systemu zarządzania bazą danych
spadek napięcia
- błędy sprzętowe, czyli uszkodzenia niektórych elementów komputera (np. pamięci dyskowej)
- błędy powstałe w bazie ze względu na uruchamianie błędnych, wadliwie skonstruowanych transakcji
Błędy tego typu powstają najczęściej w środowiskach wielodostępnych czyli takich w których wielu
użytkowników ma jednoczesny dostęp do danych. Utrzymanie spójności BD jest jednym z
podstawowych zagadnień bezpieczeństwa danych i należy do obowiązków administratora.
Podstawowe elementy ochrony BD:
kopie bezpieczeństwa – jest to podstawowa metoda ochrony ważnych danych, ale jest kosztowna ze
względu na ilość zapisywanych nośników. W czasie tworzenia kopi nie powinny być uruchamiane
żadne transakcje. W przypadku BD o szybko zmieniających się wartościach często zabezpiecza się
tylko fragmenty danych.
dziennik transakcji.
W dzienniku transakcji przechowywane są informacje o wszystkich transakcjach, które miały miejsce
od czasu utworzenia ostatniej kopii bezpieczeństwa. Zwykle zapisuje się w nim informacje takie jak:
unikalny identyfikator transakcji
adresy wszystkich obiektów aktualizowanych przez transakcję
stan obiektu przed i po modyfikacji
informacje dotyczące przebiegu transakcji (np. czasy rozpoczęcia i zakończenia)
Aby ułatwić ewentualne odzyskiwanie danych transakcje zwykle najpierw zapisują zmiany w dzienniku
a dopiero potem do właściwej bazy danych. Ułatwia to odzyskanie danych w przypadku awarii.
Transakcja
Operacja
Dziennik transakcji
Aktualizacji
(LOG FILE)
Zmiany zapisywane
dopiero po
zatwierdzeniu
Baza
Danych
transakcji
Przywracanie niespójności BD sprowadza się albo do cofania zmian dokonanych przez
aktywne (czyli nie zatwierdzone) w momencie awarii transakcje (roll-back) albo do powtórnego
zapisania zmian dokonanych przez transakcje, które zdążyły się zakończyć i były zatwierdzone przed
awarią (roll-forward).
Do przywracania spójności wykorzystuje się tzw punkty kontroli prazy systemu (check points),
które są przechowywane w dzienniku transakcji. Są to informacje o tych stanach działania systemu do
których możemy wrócić mając pewność, że w tym momencie stan bazy był spójny i poprawny.
W przypadku awarii niekrytycznej (soft crash) dzięki punktom kontrolnym poprawności pracy
systemu musimy określić, które transakcje muszą być cofnięte (lista UNDO), a które ponownie
zatwierdzone (lista REDO). Ostatecznie transakcje z listy transakcji do cofnięcia powinny być usunięte
z dziennika a następnie uruchomione ponownie. Rezultaty transakcji z listy REDO są powtórnie
zapisywane do właściwej bazy danych.
Istnieją także awarie krytyczne. W takich przypadkach prawdopodobnie konieczne będzie
odtworzenie całej bazy z ostatniej kopii bezpieczeństwa i ponowne zapisanie efektów transakcji , które
były zatwierdzone do momentu katastrofy.
18. Hurtownie danych, składnice i podstawy realizacji serwerów OLAP
Hurtownia danych (data warehouse, magazyn danych)
Cechy hurtowni
• Zorientowana tematycznie (subject oriented)
• Zintegrowana (integrated)
• Trwała (nonvolatile)
• Przechowująca historię (time variant)
Hurtownie i składnice danych
Hurtownia danych (data warehouse)
• Niezależna od zastosowania
• Scentralizowana
• Zawiera historię
• Dane mało zagregowane
• Dane mało zdenormalizowane
• Wiele źródeł danych:
dane operacyjne i zewnętrzne
Składnice danych
(data marts, tematyczne h.d.)
• Specyficzne dla zastosowania
• Przeznaczone dla określonych użytkowników
• Dane silnie zagregowane
• Dane silnie zdenormalizowane
• Dane w różnych składnicach powtarzają się
• Niewiele źródeł danych
(albo jedno: centralna hurtownia)
Zadania OLAP
• Prezentacja wielowymiarowych widoków
danych
• Interaktywne zapytania i analizy
• Obliczanie agregatów
• Analiza statystyczna, analiza trendów,
prognozowanie, modelowanie
• Wykresy
• Duża szybkość działania
Wymagania wobec analitycznej b.d.
• Efektywne przetwarzanie analityczne
wielkiej ilości danych
• Efektywne przetwarzanie wielowymiarowe
Narzędzia OLAP
• Arkusze kalkulacyjne, np. Excel
• Narzędzia do budowy aplikacji
analitycznych, np. Business Objects, Oracle
Discoverer, Oracle Express
• Gotowe rozwiązania dla typowych
problemów, np. Oracle Sales Analyzer
19. Bazy wiedzy i systemy decyzyjne (systemy ekspertowe - podstawy ich funkcji i realizacji)
jest to program, lub zestaw programów komputerowych wspomagający korzystanie z wiedzy i
ułatwiający podejmowanie decyzji. Systemy ekspertowe mogą wspomagać bądź zastępować ludzkich
ekspertów w danej dziedzinie, mogą dostarczać rad, zaleceń i diagnoz dotyczących problemów tej
dziedziny.
Szkielety systemów ekspertowych
Klasycznym językiem używanym przy tworzeniu systemów eksperckich jest Prolog. Obecnie zamiast
tworzyć je od podstaw, używa się gotowych szkieletów systemów ekspertowych (ang. expert system
shell). Szkielet taki to właściwie gotowy system ekspertowy pozbawiony wiedzy.
Budowa systemu ekspertowego
Większość systemów ekspertowych jest zbudowana według następującego schematu:
Składniki systemu ekspertowego to:
Szkielet systemu składający się z
- Interfejsu użytkownika. Użytkownik korzysta z systemu komunikując się z nim za pomocą interfejsu
użytkownika. Sprowadza się to najczęściej do zadawania pytań, udzielania informacji systemowi, oraz
odbierania od systemu odpowiedzi i wyjaśnień.
- Edytora bazy wiedzy. Dzięki wbudowanemu edytorami możliwa jest modyfikacja wiedzy zawartej w
systemie, co pozwala na rozbudowę systemu.
- Mechanizmu wnioskowania. Jest to najważniejszy składnik systemu ekspertowego, jego zadaniem
jest wyciąganie wniosków z przesłanek i pytań wprowadzanych przez użytkownika i generowanie
odpowiedzi.
- Mechanizmu wyjaśniającego. Mechanizm ten umożliwia wyjaśnienie na życzenie użytkownika
dlaczego system udzielił takiej, a nie innej odpowiedzi, albo dlaczego system zadał użytkownikowi
określone pytanie.
- Baza wiedzy. Jest to drugi pod względem ważności składnik systemu. W bazie wiedzy zawarta jest
wyekstrachowana od ludzkich ekspertów wiedza dotycząca określonej dziedziny. Wiedza ta zwykle
zapisana jest za pomocą wybranego sposobu reprezentacji wiedzy, na przykład za pomocą reguł lub
ram.
- Baza danych zmiennych. Jest to pomocnicza baza danych w której przechowywane są wnioski
uzyskane przez system podczas jego działania. Baza ta umożliwia odtworzenie sposobu
wnioskowania systemu i przedstawienie go użytkownikowi za pomocą mechanizmu wyjaśniającego.
Ekstrakcją wiedzy od ekspertów zajmują się na ogół inżynierowie wiedzy. Jest to zwykle długi i
żmudny proces, ponieważ wiedza stosowana przez ludzkich ekspertów jest zwykle wiedzą praktyczną
i intuicyjną.
20. Zarządzanie dużymi projektami informatycznymi; obszary zarządzania, metody organizacji
zespołu i zarządzanie poprzez jakość (CMM)
Capability Maturity Model for Software (ang.) - stworzony przez Software Engineering Institute (SEI)
model służący ocenie procesu wytwórczego służącego do produkcji oprogramowania. CMM ocenia
praktyki stosowane podczas produkcji. Model ocenia proces w skali pięciostopniowej - od
chaotycznego (nic nie jest sterowane ani kontrolowane), aż do ścisłego, zdyscyplinowanego procesu
uwzględniającego wszystkie potrzebne aspekty.
Poziomy CMM
- Initial - oprogramowanie tworzone chaotycznie, bez żadnych formalnych procedur, ewentualnie z
takimi, które są szczątkowe - nie określają procesu.
- Repeatable - stosowane są podstawowe techniki śledzenia projektu - śledzi się koszt, harmonogram
oraz funkcjonalność. Stosuje się techniki pozwalające na powtarzanie udanych projektów na
podstawie informacji zapisanych przy okazji poprzednich.
- Defined - proces wytwórczy jest opisany, wszystkie wykonywane czynności są udokumentowane w
postaci procedur lub instrukcji.
- Managed - podczas projektów stosuje się szczegółowe metryki dotyczące samego procesu, oraz
jakości produktu.
- Optimizing - stosuje się praktyki mające na celu ciągłe poprawianie procesu wytwórczego
oprogramowania - poprzez monitorowanie procesu pod względem możliwości usprawnień, oraz
poprzez ich wprowadzanie.
21. QBE
Wdrożenie rozwiązań IT jest pojęciem na tyle pojemnym, iż niesie ze sobą szerokie spektrum
zagadnień natury prawnej. Przybliżenie ich pozwoli na zrozumienie niektórych z zagadnień
wyłaniających się podczas realizacji kontraktów.
Każde wdrożenie wymaga uwzględnienia interesów zamawiającego i możliwości (technicznych,
organizacyjnych, ekonomicznych) uczynienia im zadość przez realizującego zamówienie. Zawarcie
umowy musi być poprzedzone wynegocjowaniem podstawowych kwestii odnoszących się do
oczekiwań obu stron. Trudno spodziewać się jednak, że w ten sposób unikniemy wszystkich
ewentualnych trudności. Złożoność technologii, względy kompatybilności, rosnące oczekiwania
klienta, to tylko niektóre z pojawiających się wyzwań. Kompletność przedmiotu umowy wdrożeniowej
nie jest powiązana jedynie z "wprowadzeniem" na rzecz zamawiającego konkretnych rozwiązań
technicznych. Uwzględnić trzeba ponadto kwestię obrotu prawami autorskimi w kontekście wdrożenia
- udzielenie licencji, usługi serwisowe, doradcze czy też przeszkolenie pracowników pod kątem
wdrażanych technologii. Głównym przedmiotem umowy będzie jednak z zasady obrót
oprogramowaniem komputerowym - bądź dostępnym już na rynku, bądź kreowanym dopiero,
stosownie do potrzeb zamawiającego. Sam kontrakt przybierze postać jednego dokumentu,
ewentualnie kilku - w tym załączników technicznych.
Charakter umowy wdrożeniowej
Wszystko to sprawia, że kontrakty wdrożeniowe, jako konglomerat zróżnicowanych potrzeb i aspektów
prawnych, nie znajdują swojego wiernego odpowiednika w "modelach" umów wyszczególnionych w
polskim kodeksie cywilnym. Porozumienie dotyczące planowanego wdrożenia należy więc do kategorii
"umów nienazwanych". Od stron zależy, na jakie aspekty położony zostanie nacisk w zawieranym
kontrakcie, co może odbić się w przyszłości na pozycji (i odpowiedzialności prawnej) zamawiającego i
realizującego wdrożenie. Dla "trzonu" umowy wdrożeniowej najodpowiedniejsze mogą być zasady
właściwe dla umów dotyczących świadczenia usług bądź umów o dzieło. Wśród kontraktów
wdrożeniowych na czoło wybijają się te, które są opierane na zasadach właściwych dla umów o
dzieło. Rozróżnienie to niesie ze sobą istotne konsekwencje praktyczne.
W przypadku umowy o dzieło istotne jest osiągnięcie określonego rezultatu. Rezultat taki to
przykładowo przekazanie rozwiązań programistycznych odpowiednio skonfigurowanych serwerów.
Newralgiczną kwestią jest możliwość odstąpienia od umowy wdrożeniowej. Przykładem takiej sytuacji
będzie bierna postawa zamawiającego w chwili, gdy od podjęcia przez niego określonych czynności
uzależnione będzie poprawne zrealizowanie przedmiotu kontraktu. Współdziałanie takie może
przejawiać się w dostarczeniu specyfikacji sprzętu, dla którego jest realizowane wdrożenie. Kodeks
cywilny zakłada, że przypadek braku aktywności zamawiającego daje podstawę do wyznaczenia
zamawiającemu odpowiedniego terminu do podjęcia działań, a po jego upływie możliwe będzie
odstąpienie od umowy.
Wynagrodzenie realizującego wdrożenie zostanie w takim wypadku obniżone, stosownie do
poczynionych dotychczas nakładów. Zamawiający będzie mógł jednak żądać efektów nieukończonej
pracy. Nic nie stoi jednak na przeszkodzie, aby reguły w tym zakresie wyznaczyć w odmienny sposób.
Przy wdrożeniach należy skupić się na ocenie, jak dalece wadliwość realizowanego rozwiązania IT
może wpływać na prawa stron umowy. Chodzi przede wszystkim o to, czy każdy błąd stwierdzony
przez zamawiającego uprawnia go do odstąpienia od umowy. Zrównoważenie interesów stron
wymagałoby zawarcia klauzul poświęconych następstwom "błędów krytycznych" przedkładanego
zamawiającemu systemu (np. bezzwłoczne odstąpienie od umowy, zastrzeżenie kary umownej,
ewentualnie czas, w którym uchybienie powinno być usunięte). Jeśli traktować umowy wdrożeniowe
jako umowy o świadczenie usług, to pojawia się możliwość wypowiedzenia kontraktu przez każdą ze
stron w dowolnym czasie. Nawet jeśli kontrakt ograniczy maksymalnie swobodę firm w tym względzie,
to i tak każda z nich będzie mogła wypowiedzieć umowę, powołując się na "ważne powody". Na
marginesie zaznaczyć trzeba, że przy transgranicznych kontraktach wdrożeniowych warto zadbać o
sprecyzowanie siedziby sądu, który będzie rozstrzygać ewentualne spory.
Dysponowanie prawami autorskimi w kontekście umów wdrożeniowych
Kolejnym pytaniem jest to, jak uporać się z kwestią praw własności intelektualnej w przypadku umów
wdrożeniowych. Chodzi o prawa, jakie uzyskujemy do oprogramowania przekazywanego przy
realizacji wdrożenia. Generalnie w grę wchodzą dwie sytuacje: przenoszenie majątkowych praw
autorskich do aplikacji bądź udzielenie licencji, czyli jedynie zezwolenia na korzystanie w określony
sposób z chronionego prawem autorskim utworu. Pierwsza z sytuacji jest najbardziej atrakcyjna dla
zamawiającego, choć w praktyce będzie zdarzać się relatywnie rzadko. Przeniesienie majątkowych
praw do programów uniezależnia zamawiającego od dalszej współpracy z realizującym wdrożenie, np.
przy jego uaktualnieniu, zmodyfikowaniu oprogramowania. Zwłaszcza że w przypadku aplikacji prawo
do wprowadzania wszelkich modyfikacji, tłumaczenia kodu usytuowano pośród autorskich uprawnień
majątkowych.
Warunkiem koniecznym skuteczności przeniesienia majątkowych uprawnień jest jednak zawarcie
umowy w formie pisemnej. Przepisy prawa autorskiego przewidują, iż forma pisemna umowy jest
niezbędna pod rygorem nieważności. W praktyce jedynie ustne porozumienie w tej kwestii doprowadzi
do zawarcia umowy licencyjnej niewyłącznej (czyli korzystania z programu, które nie wyłącza
udzielania licencji przez producenta programu na rzecz innych firm). Bardziej rozpowszechnioną
metodą jest udzielanie jedynie licencji w zakresie aplikacji przekazywanych w toku wdrożenia IT. W
zależności od wysokości opłat z tytułu kontraktu wdrożeniowego można zawrzeć w nim klauzulę
licencji wyłącznej bądź niewyłącznej. Biorąc pod uwagę konkurencję na rynku, zwłaszcza pierwsza z
umów licencyjnych jest pożądana. Ciekawą kwestią jest to, czy pozyskujący w ramach zawarcia
umowy wdrożeniowej prawa do korzystania z oprogramowania, może je następnie przenieść na inne
podmioty (np. przy zmianie profilu działalności przedsiębiorstwa). Zasygnalizować trzeba w tym
miejscu problem wyczerpania prawa. Gdy uprawniony z tytułu praw autorskich przenosi własność
nośnika programu na inny podmiot (np. w ramach zobowiązań wynikających z wdrożenia), traci on
kontrolę nad dalszym obrotem nim.
Klauzule dotyczące serwisowania
Wprowadzenie rozwiązania w firmie nie kończy definitywnie tematu poprawnego działania nowych
technologii. Trzeba zdawać sobie sprawę z ewentualnej potrzeby uaktualniania programów, eliminacji
dostrzeżonych błędów. W przypadku zawarcia w umowie wdrożeniowej klauzul przekazujących
jedynie licencje na rzecz zamawiającego wdrożenie, samodzielne wykonywanie takich działań nie
będzie możliwe. Atrakcyjne jest więc porozumienie stron dotyczące serwisowania wdrożonego
projektu. Uwzględnienie takiej klauzuli w głównym kontrakcie pozwoli na zaoszczędzenie kosztów
związanych z późniejszymi negocjacjami. Zabezpiecza to w pewien sposób interesy zamawiającego,
którego pozycja jest inna w chwili zawierania umowy wdrożeniowej, a inna gdy przedsięwzięcie
zostało już zrealizowane i odebrane. Dla osiągnięcia klarownej sytuacji należy szczegółowo uwypuklić
zakres serwisowania, terminy podejmowania działań przez firmę obsługującą implementowany
system, a także czas trwania tego typu usług. Od stron zależy, jak określone zostanie wynagrodzenie
związane z zamieszczeniem klauzuli serwisowej (jednorazowa opłata, zryczałtowane wynagrodzenie
miesięczne, wynagrodzenie jedynie za rzeczywiście świadczone usługi).
Odbiór projektu
Zastanawiającym jest to, czy dążyć do odbioru poszczególnych etapów wdrożenia, czy też poprzestać
na końcowym odbiorze. Z punktu widzenia zamawiającego pierwsze rozwiązanie jest bardziej
korzystne. Ułatwia "wychwycenie" niepokojących kierunków prac wdrożeniowych. Nieterminowość
przy realizacji poszczególnych etapów pracy rodzi możliwość obniżenia wynagrodzenia, a w skrajnych
przypadkach jawi się jako podstawa odstąpienia od umowy. Kwestie te powinny rozstrzygać
szczegółowe postanowienia umowne. Z drugiej strony naraża to także realizującego wdrożenie na
zmianę zdania przez klienta, który dojdzie do wniosku, że chciałby położyć nacisk na inne elementy
(odmienną technologię, większe wymagania sprzętowe). Jednocześnie akceptacja kolejnych
fragmentów projektu wdrożeniowego może być powiązana z kolejnymi ratami, które uzupełnią zaliczkę
przekazaną przy zawarciu umowy.
Ograniczenie się do odbioru finalnej wersji wdrożenia, rzecz jasna, nie usuwa ewentualnych
zastrzeżeń co do jakości wykonanej pracy. Należy pamiętać o tym, że nawet jeśli prace nie zostały
wykonane w sposób 100% satysfakcjonujący klienta, nie eliminuje to całkowicie obowiązku zapłaty
należności pieniężnej. Zamawiający może po prostu odmówić odbioru zrealizowanego projektu. Warto
dodać, że o ile będziemy stosowali przepisy dotyczące umów o dzieło do kontraktów wdrożeniowych,
możliwe jest odstąpienie w każdej chwili przez zamawiającego od umowy, jeśli zapłaci on umówione
wynagrodzenie, pomniejszone o środki, które zaoszczędził realizujący wdrożenie. W nietypowych
sytuacjach skorzystanie z tej możliwości pozwoli uchronić się od dalszych kosztów.
Charakter odbioru projektu to przede wszystkim sporządzenie odpowiedniego protokołu. Może on być
poprzedzony stosownymi testami, przeprowadzonymi przez zamawiającego. Nawet gdy realizacja
zostanie przyjęta bez zastrzeżeń, nie eliminuje to możliwości późniejszego stwierdzenia wad i żądania
ich usunięcia.
QBE (Query By Example)
Zasada działania
• System wyświetla pustą tabelkę-formularz, odpowiadającą strukturze wybranych tabel
• Użytkownik wpisuje wartości „wzorcowe”
– stałe
– warunki z użyciem operatorów, stałych i tzw. łączników
• Złączenia określa się przez
– automatyczne wczytanie więzów foreign key
– użycie łączników dla kolumn-kluczy
– graficzne określenie powiązań
• System wypełnia formularz wierszami pasującymi do wzorca
Download