Oracle - Technologie Przetwarzania Danych

Transkrypt

Oracle - Technologie Przetwarzania Danych
Przykładowe środowisko integracji
• Wirtualna Uczelnia – jednostki organizacyjne:
– Dziekanat – dane osobowe studentów + dane o
ocenach i zaliczeniach,
– Dział Stypendiów – informacje o przyznanych
studentom świadczeniach,
– Dział Zarządzania Akademikami – dane o
akademikach i zakwaterowanych w nich studentach,
– Studium Języków Obcych – dane o zdobytych przez
studentów ocenach i zaliczeniach z lektoratów,
– Dział Kształcenia – jednostka zajmująca się
sprawozdawczością.
Architektury i technologie
integracji danych
Wprowadzenie do ćwiczeń laboratoryjnych
Opis przebiegu ćwiczeń
Omówienie mechanizmów
wykorzystywanych w ćwiczeniach
Bartosz Bębel
Politechnika Poznańska, Instytut Informatyki
str. 2
Przebieg ćwiczenia
1.
2.
3.
4.
Ćwiczenie 1. DB2 - Oracle
• Cel: umożliwienie dostępu z Działu Kształcenia do
danych Działu Stypendiów.
Integracja DB2 – Oracle 11g.
Integracja MySQL – Oracle 11g.
Integracja plik tekstowy – Oracle 11g.
Integracja Oracle11g – Oracle 11g.
– Dział Stypendiów – DB2.
– Dział Kształcenia – Oracle 11g.
• Wykorzystywane mechanizmy:
– Oracle Gateway dla DB2.
– Łącze bazodanowe.
str. 3
str. 4
Oracle Gateway dla DB2 (1)
Oracle Gateway dla DB2 (2)
• Umożliwia dostęp (zarówno odczyt jak i zapis) z
aplikacji Oracle do danych przechowywanych w IBM
DB2.
• Zapewnia:
– transparentność na poziomie lokalizacji, sieci, systemu
operacyjnego, formatu składowania danych i metody
dostępu,
– dostęp do danych przy wykorzystaniu SQL (wsparcie dla
DDL i DCL, możliwość przesłania poleceń Native DB2 SQL),
– wsparcie mechanizmów środowiska rozproszonego:
optymalizacja zapytań rozproszonych i 2PC,
• Zapewnia (cd):
– mapowanie słownika danych z bazy DB2,
– wsparcie dla wywoływania procedur składowanych DB2
identycznie jak procedur Oracle,
– odpowiednie mechanizmy bezpieczeństwa (wykorzystuje
mechanizmy Oracle i DB2).
str. 5
Łącze bazodanowe (1)
str. 6
Łącze bazodanowe (2)
• Składnia polecenia:
• Mechanizm SZBD Oracle.
• Umożliwia dostęp do obiektów w zdalnej bazie danych.
• Rodzaje:
create [public] database link <nazwa łącza>
connect to <użytkownik zdalny> identified by <hasło>
using '<nazwa usługi>';
– łącze prywatne,
– łącze publiczne.
– użytkownik zdalny – nazwa schematu użytkownika zdalnego, na którego będzie
wskazywało łącze,
– hasło – hasło użytkownika zdalnego,
– nazwa usługi – nazwa zdefiniowanej lokalnie usługi, wskazującej na zdalną
bazę danych (definicja w pliku tnsnames.ora)
– omijając klauzule: connect to i identified by tworzymy łącze
wskazujące na bieżącego użytkownika.
• Uwaga! Przy tworzeniu łącza nie jest sprawdzana
poprawność nazwy użytkownika, hasła i nazwy usługi.
• Jeśli parametr instancji GLOBAL_NAMES = true,
wówczas nazwa łącza musi być identyczna z globalną
nazwą bazy danych, na którą wskazuje.
str. 7
str. 8
Łącze bazodanowe (3)
Ćwiczenie 2. MySQL - Oracle
• Cel: umożliwienie dostępu z Działu Kształcenia do
danych Działu Zarządzania Akademikami.
• Przykład definicji łącza prywatnego:
create database link BAZA01
connect to scott identified by tiger using 'BAZA01.WORLD';
– Dział Zarządzania Akademikami – MySQL.
– Dział Kształcenia – Oracle 11g.
• Użycie łącza:
select nazwisko from pracownicy@BAZA01 where id_zesp = 10;
• Wykorzystywane mechanizmy:
• Słownik danych:
– USER_DB_LINKS – prywatne łącza użytkownika,
– ODBC.
– Oracle Gateway dla ODBC.
– Łącze bazodanowe.
– ALL_DB_LINKS – łącza, do których użytkownik ma dostęp,
– DBA_DB_LINKS – lista wszystkich łączy, dostępna jedynie dla
użytkowników z uprawnieniami DBA.
str. 9
ODBC (1)
str. 10
ODBC (2)
• Interfejs programistyczny dostępu do baz danych.
• ang. Open Database Connectivity.
• Oparty na standardach:
– X/Open CAE Specification "Data Management: SQL Call-Level Interface
(CLI)",
– ISO/IEC 9075-3:1995 (E) Call-Level Interface (SQL/CLI)
Uwaga! Dopiero wersja ODBC 3.x w pełni implementuje oba standardy!
• Wykorzystuje SQL.
• Pierwotnie dla MS Windows, obecnie dostępny
również na innych platformach systemowych
(UnixODBC, iODBC, ...).
• Zapewnia współpracę aplikacji z różnymi źródłami
danych:
– systemami zarządzania bazami danych: Informix, MS Access, MS SQL
Server, MySQL, Postgress, Sybase SQL, Oracle, ...,
– źródłami plikowymi: MS Access, MS Excel, dBASE, FoxPro, Paradox, ....
• Często wykorzystywany przy dostępie do źródeł
spadkowych.
str. 11
str. 12
Oracle Gateway dla ODBC
Ćwiczenie 3. Plik - Oracle
• Umożliwia połączenie SZBD Oracle z dowolnym
źródłem danych, wspierającym standard ODBC.
• Konieczne dostarczenie sterownika ODBC dla źródła
danych.
• Lokalizacja źródła – zarówno na tej samej maszynie
co SZBD Oracle jak i na maszynie zdalnej.
• Cel: umożliwienie dostępu z Działu Kształcenia do
danych Studium Języków Obcych.
– Studium Języków Obcych – plik csv.
– Dział Kształcenia – Oracle 11g.
• Wykorzystywane mechanizmy:
– Katalog w bazie danych.
– Tabela zewnętrzna.
– Funkcja tablicowa.
str. 13
Tabela zewnętrzna (1)
str. 14
Tabela zewnętrzna (2)
• Tabela, której źródłem danych jest plik zewnętrzny.
• Dostęp do tabeli zewnętrznej – identycznie jak do
zwykłej tabeli (zapytania, możliwość użycia w
programach PL/SQL, itd.).
• Przy dostępie do tabeli zewnętrznej wywoływane jest
odpowiednie oprogramowanie (zależne od typu
tabeli).
str. 15
• Możliwe operacje:
– plik tekstowy – tylko odczyt (typ tabeli ORACLE_LOADER),
– plik binarny w formacie backup-u Oracle’a - możliwe
jednokrotne przesłanie danych z bazy danych do pliku
(przy tworzeniu tabeli), potem tylko odczyt (typ tabeli
ORACLE_DATAPUMP).
str. 16
Tabela zewnętrzna (3)
Katalog
• Lokalizacja pliku w systemie plików serwera bd
wskazywana przez specjalny obiekt bazodanowy –
katalog (ang. directory).
• Informacje o tabelach zewnętrznych użytkownika –
perspektywa systemowa USER_EXTERNAL_TABLES.
• Obiekt bazy danych, wskazujący lokalizację w systemie
plików serwera.
• Składnia polecenia:
CREATE [OR REPLACE] DIRECTORY <nazwa>
AS '<ścieżka w systemie plików serwera>';
• Przykład:
CREATE OR REPLACE DIRECTORY MojKatalog
AS '/home/kowalski/pliki';
• Informacje o dostępnych katalogach – perspektywa
systemowa ALL_DIRECTORIES.
str. 17
str. 18
Tabela zewnętrzna - tworzenie
Tabela zewnętrzna - przykład
id_klienta;Nazwisko;Imię;Kwota kredytu;rataI;rataII;rataIII;rataIV;rataV;rataVI
------------------------------------------------------------------------------1000;Kowalski;Jan;25000;4167;4167;4167;4167;4167;4167
1010;Adamski;Mariusz;31000;5166,7; 5166,7;5166,7;5166,7;5166.7;5166,7
1020;Nowacki;Arkadiusz;13020;2170;2170;2170;2170;2170;2170
create table <nazwa_tabeli> (<definicja atrybutów tabeli>)
organization external -- tabela będzie pobierać dane z pliku
(type [oracle_loader | oracle_datapump] -- nazwa oprogramowania
wczytującego dane
default directory <obiekt DIRECTORY> -- katalog z plikiem danych
access parameters
(records delimited by newline -- rekordy w osobnych liniach pliku
badfile <[obiekt DIRECTORY>:]'<nazwa pliku błędów>' -- log błędów
logfile <[obiektu DIRECTORY>:]'<nazwa pliku logu>' -- log operacji
skip <liczba> -- ile początkowych linii pliku pominąć przy wczytywaniu
fields terminated by '<znak oddzielający wartości w rekordzie>'
fields (<definicja pól) -- opcjonalna definicja pól pliku
missing field values are null) -- pola bez wartości pozostaną puste
location ([obiekt DIRECTORY:]'<nazwa pliku danych>'))
reject limit [<wartość> | UNLIMITED] -- ile dopuszczalnych błędów przy
konwersji (domyślnie 0);
str. 19
create table kredyty_klientow(
id number(5),nazwisko varchar(30),imie varchar(30),kredyt number(8,2),rata1 number(6,2),
rata2 number(6,2),rata3 number(6,2),rata4 number(6,2),rata5 number(6,2),rata6 number(6,2))
organization external
(type oracle_loader
default directory MojKatalog
access parameters (
records delimited by newline
badfile 'odrzucone.txt' logfile 'dziennik.txt' skip 2
fields terminated by ';' missing field values are null)
location ('kredyty.txt'))
/
select * from kredyty_klientow;
ID
---1000
1010
1020
NAZWISKO
---------Kowalski
Adamski
Nowacki
IMIE
KREDYT RATA1 RATA2 RATA3 RATA4 RATA5 RATA6
----------- ------ ------ ------ ------ ------ ------ -----Jan
25000
4167
4167
4167
4167
4167
4167
Mariusz
31000 5166,7 5166,7 5166,7 5166,7 5166,7 5166,7
Arkadiusz
13020
2170
2170
2170
2170
2170
2170
str. 20
Funkcja tablicowa
Krok 1. Definiowanie typu
• Funkcja zwracająca jako wynik zbiór rekordów.
• Traktowana jak tabela – umieszczana w zapytaniu w klauzuli
FROM.
• Pozwala realizować skomplikowane transformacje danych.
ID
---1000
1010
1020
NAZWISKO
---------Kowalski
Adamski
Nowacki
IMIE
KREDYT RATA1 RATA2 RATA3 RATA4 RATA5 RATA6
----------- ------ ------ ------ ------ ------ ------ -----Jan
25000
4167
4167
4167
4167
4167
4167
Mariusz
31000 5166,7 5166,7 5166,7 5166,7 5166,7 5166,7
Arkadiusz
13020
2170
2170
2170
2170
2170
2170
ID
---1000
1000
1000
1000
1000
1000
1010
...
NAZWISKO
---------Kowalski
Kowalski
Kowalski
Kowalski
Kowalski
Kowalski
Adamski
IMIE
KREDYT
RATA NR_RATY
----------- ------ ------- ------Jan
25000
4167
1
Jan
25000
4167
2
Jan
25000
4167
3
Jan
25000
4167
4
Jan
25000
4167
5
Jan
25000
4167
6
Mariusz
31000 5166,7
1
• Typ określa strukturę rekordu, zwracanego przez
funkcję.
CREATE [OR REPLACE] TYPE <nazwa>
AS [OBJECT(<definicje atrybutów>) |
TABLE OF <typ bazowy>];
CREATE TYPE tRekordKredyt AS OBJECT(
id number(5), nazwisko varchar2(30),
imie varchar2(30), kredyt number(8,2),
rata number(6,2), nr_raty number(4))
/
CREATE TYPE tTablicaKredytow
AS TABLE OF tRekordKredyt
/
str. 21
Krok 2. Definiowanie funkcji (1)
str. 22
Krok 2. Definiowanie funkcji (2)
• Przykład:
• Składnia:
create or replace function kredyty return tTablicaKredytow pipelined is
cursor cRaty is
select id, nazwisko, imie, kredyt, rata1, rata2, rata3, rata4, rata5, rata6
from
kredyty_klientow;
begin
for R in cRaty loop
pipe row(tRekordKredyt(R.id, R.nazwisko, R.imie, R.kredyt, R.rata1, 1));
pipe row(tRekordKredyt(R.id, R.nazwisko, R.imie, R.kredyt, R.rata2, 2));
pipe row(tRekordKredyt(R.id, R.nazwisko, R.imie, R.kredyt, R.rata3, 3));
pipe row(tRekordKredyt(R.id, R.nazwisko, R.imie, R.kredyt, R.rata4, 4));
pipe row(tRekordKredyt(R.id, R.nazwisko, R.imie, R.kredyt, R.rata5, 5));
pipe row(tRekordKredyt(R.id, R.nazwisko, R.imie, R.kredyt, R.rata6, 6));
end loop;
return;
end;
CREATE [OR REPLACE] FUNCTION <nazwa>
RETURN <typ_tablicowy> PIPELINED IS
...
BEGIN
…
PIPE ROW(<rekord>);
…
END;
str. 23
str. 24
Krok 3. Użycie funkcji
Ćwiczenie 4. Oracle - Oracle
• Składnia:
• Cel: umożliwienie dostępu z Działu Kształcenia do
danych Dziekanatu.
SELECT …
FROM TABLE(<nazwa funkcji)
WHERE …;
– Dziekanat – Oracle 11g.
– Dział Kształcenia – Oracle 11g.
SELECT * FROM TABLE(kredyty);
ID
---1000
1000
...
1000
1010
...
NAZWISKO
---------Kowalski
Kowalski
IMIE
KREDYT
----------- -----Jan
25000
Jan
25000
Kowalski
Adamski
Jan
Mariusz
25000
31000
RATA
--------4167
4167
NR_RATY
-------1
2
4167
5166,7
6
1
• Wykorzystywane mechanizmy:
– Replikacja migawkowa.
str. 25
Replikacja – podstawowe definicje
• Replikacja – proces kopiowania danych z jednego
miejsca (źródła) danych, do miejsca docelowego.
• Źródło danych – tabela źródłowa.
• Miejsce docelowe – tabela nazywana repliką.
• Węzeł – instancja bazy danych, biorąca udział w
replikacji.
• Proces synchronizacji – proces uaktualnienia
zawartości repliki zawartością tabeli źródłowej,
proces ten nosi również nazwę odświeżania
repliki.
str. 27
str. 26
Replikacja – po co stosować?
• Skrócenie dostępu użytkownika do danych
(geograficzne rozproszenie danych).
• Uniezależnienie pracy użytkownika od czasowej
niedostępności bazy danych (możliwość
skorzystania z kopii danych z innego serwera).
• Rozłożenie obciążenia, wynikającego z pracy
użytkowników, pomiędzy różne serwery baz
danych.
• Możliwość integracji danych z rozproszonych
źródeł homo- i heterogenicznych.
str. 28
Perspektywa materializowana
Replikacja migawkowa
• Implementacja repliki.
• Inna nazwa: migawka.
• Definiowana przez zapytanie, w przeciwieństwie do
zwykłej perspektywy posiada swoje własne dane.
• Możliwe jest jej indeksowanie, partycjonowanie,
definiowanie parametrów składowania i domyślnej
przestrzeni tabel (tak jak dla zwykłej tabeli).
str. 29
Podział migawek (1)
str. 30
Podział migawek (2)
• Podział ze względu sposób identyfikacji rekordów w
tabeli źródłowej i perspektywie:
• Podział ze względu na postać zapytania
definiującego:
– prosta – zapytanie odwołuje się do jednej tabeli, nie
wykorzystuje funkcji SQL, funkcji grupowych, wartości
wyliczanych, klauzuli CONNECT BY i START WITH, operatora
DISTINCT,
– złożona – definiujące ją zapytanie nie spełnia przynajmniej
jednego warunku definiującego perspektywę prostą.
str. 31
– perspektywa typu ROWID – do identyfikacji używa adresu
rekordu, wada – zmiana adresów rekordów w tabeli źródłowej
(np. na skutek przeniesienia do innego pliku) powoduje
utracenie powiązań pomiędzy rekordami z tabeli i perspektywy,
konieczne wtedy pełne odświeżenie,
– perspektywa typu primary key – do identyfikacji rekordów
używa wartości kolumn z klucza podstawowego, ten typ jest
zalecany przez Oracle.
str. 32
Podział migawek (3)
Definiowanie perspektywy mat.
• Składnia polecenia:
• Podział ze względu na możliwość uaktualniania:
– tylko do odczytu – akceptują jedynie zapytania,
– z możliwością uaktualniania – akceptują operacje DML – są one
replikowane do tabeli źródłowej (wykorzystywane jedynie w
tzw. zaawansowanej replikacji),
– zapisywalne – akceptują operacje DML, jednak nie są one
replikowane do tabeli źródłowej (zostają utracone podczas
operacji odświeżania).
create materialized view <nazwa_perspektywy>
[build <moment_wypełnienia>]
[refresh <sposób_odświeżania>
start with <data_rozpoczęcia> next <częstotliwość>]
with <typ_migawki>
[for update]
as zapytanie;
• Zamiast klauzuli materialized view można użyć snapshot.
str. 33
Parametry polecenia (1)
str. 34
Parametry polecenia (2)
• Moment odświeżenia migawki – klauzula REFRESH:
• Moment wypełnienia migawki danymi – klauzula BUILD:
– on demand – odświeżanie na żądanie użytkownika przez wywołanie
procedury REFRESH z pakietu DBMS_SNAPSHOT, wartość domyślna,
– on commit – odświeżanie automatyczne w momencie zatwierdzenia
– immediate – wypełnienie danymi zaraz po utworzeniu (domyślnie),
– deferred – wypełnienie danymi dopiero w momencie pierwszego
odświeżenia.
• Sposób odświeżenia migawki – klauzula REFRESH:
– fast – odświeżanie przyrostowe, tylko dla perspektyw typu prostego,
dodatkowo wymagane utworzenie dziennika perspektywy dla tabeli
źródłowej; w pewnych szczególnych sytuacjach możliwe jest również dla
perspektyw złożonych,
– complete – odświeżanie pełne,
– force – sposób odświeżania wybierany dynamicznie (jeśli możliwe,
wykonywane odświeżenie przyrostowe, jeśli nie – pełne), wartość
domyślna.
str. 35
transakcji modyfikującej tabele źródłowe (w definicji takiej
perspektywy nie można posługiwać się łącznikami bazodanowymi),
– odświeżanie automatyczne z zadaną częstotliwością.
• Harmonogram odświeżania migawki:
– start with data – określa moment rozpoczęcia odświeżania
automatycznego, np: start with sysdate; pominięcie klauzuli
powoduje rozpoczęcie odświeżania zaraz po utworzeniu perspektywy,
– next częstotliwość – określa częstotliwość odświeżania, np: next
'sysdate + 1/(24*30)' powoduje odświeżanie co 2 minuty.
str. 36
Parametry polecenia (3)
Przykład
• Brak odświeżania – jeśli migawka nie ma być nigdy
odświeżana, należy dodać klauzulę never refresh, np.
• Perspektywa materializowana tylko do odczytu, odświeżana
przyrostowo co 2 minuty, wypełniona zaraz po utworzeniu,
rekordy identyfikowane przez klucz główny:
create materialized view mv_pracownicy
never refresh
as select * from pracownicy@baza01;
create materialized view mv_pracownicy
• Klauzula WITH:
refresh fast
start with sysdate
next sysdate + 1/(24*30)
with primary key
as select * from pracownicy@baza01;
– ROWID - migawka typu ROWID,
– primary key – migawka typu primary key, wartość domyślna.
str. 37
Pozostałe polecenia
str. 38
Pozostałe mechanizmy (1)
• Modyfikowanie definicji perspektywy materializowanej:
• Dziennik perspektywy materializowanej – obiekt rejestrujący
zmiany (operacje DML), dokonane w zawartości tabeli
źródłowej dla perspektywy (tabeli bazowej dziennika).
alter materialized view <nazwa_perspektywy>
refresh <sposób_odświeżania>
– Informacje z dziennika są konieczne do przyrostowego odświeżania
perspektyw.
– Tabela źródłowa może posiadać tylko jeden dziennik, niezależnie od
liczby perspektyw z nią powiązanych.
start with <data_rozpoczęcia>
next <częstotliwość>
with <typ_migawki>;
• Usuwanie perspektywy materializowanej:
create materialized view log
on <nazwa_tabeli_bazowej>
drop materialized view <nazwa_perspektywy>;
[with PRIMARY KEY | ROWID];
str. 39
str. 40
Pozostałe mechanizmy (2)
Pozostałe mechanizmy (3)
• Grupa odświeżania – mechanizm pozwalający na jednoczesne
odświeżanie wielu perspektyw, przez to zapewniający
spójność danych w ramach perspektyw z grupy.
– Zastosowanie: np. dla jednoczesnego odświeżania perspektyw, których
tabele źródłowe są połączone kluczem obcym.
– Posiada nazwę, listę migawek, oraz zdefiniowaną wspólną
częstotliwość odświeżania perspektyw.
– Każda perspektywa zostaje automatycznie przydzielona do grupy o
nazwie równej nazwie perspektywa (w sytuacji, gdy nie przydzielono
jej jawnie do innej grupy).
• Grupa odświeżania (cd.)
– Tworzenie grupy:
DBMS_REFRESH.MAKE
– Dodanie perspektywy do grupy:
DBMS_REFRESH.ADD (parametr lax należy ustawić na wartość TRUE przy
przenoszeniu perspektywy pomiędzy grupami)
– Usunięcie migawki z grupy:
DBMS_REFRESH.SUBTRACT
– Usunięcie grupy:
DBMS_REFRESH.DESTROY
– Ręczne odświeżenie grupy:
DBMS_REFRESH.REFRESH
str. 41
Bibliografia
1. Dokumentacja techniczna Oracle 11g Release 2 (11.2).
www.oracle.com
2. R. Wrembel, B. Bębel: Projektowanie rozproszonych baz
danych. Helion 2003.
str. 43
str. 42