poniedziałek, 2 lipca 2012

Architektura Oracle



2. Architektura

Instancja i SGA

Baza danych przechowuje dane w plikach na dysku twardym i umożliwia dostęp do tych
plików za pośrednictwem systemu operacyjnego. Aby umożliwić efektywne operowanie
danymi, Oracle używa pamięci współdzielonej, dostępnej dla wszystkich użytkowników
bazy danych, nazywanej Globalnym Obszarem Współdzielonym (SGA – System Global
Area). Instancja Oracle to właśnie wymienione wyżej uruchomione procesy tła oraz
alokowany globalny obszar współdzielony SGA. Użytkownik podłączając się do bazy
danych, nie pobiera danych bezpośrednio z pliku bazy danych. Polecenie języka SQL
wystosowane przez użytkownika trafia do odpowiedniego bufora w strukturze SGA, a
następnie, po jego przetworzeniu i zanalizowaniu pobierane są bloki z pliku danych do
obszaru SGA. Dopiero stąd informacja przekierowana zostaje do użytkownika. W
przypadku, kiedy dane, do których odwołuje się użytkownik znajdują się już w obszarze
SGA, pomijana jest faza pobierania danych z pliku i od razu informacja zwracana jest
użytkownikowi. Relacyjna baza danych Oracle posługuje się standardowym językiem
zapytań SQL, oraz posiada wbudowany wewnętrzny język tworzenia procedur
składowanych PL/SQL. Od wersji 8i jako języka tworzenia procedur składowanych w
bazach danych Oracle można używać również języka Java.


Sesje i transakcje

Architektura klient – serwer bazy danych Oracle zapewnia wielu użytkownikom
równoczesny dostęp do tej samej bazy. Operacje odczytu tych samych danych przez wielu
użytkowników równocześnie nie powodują konfliktów ani niespójności. Inaczej rzecz się
ma w przypadku modyfikacji tych samych danych. Wówczas mogłyby wystąpić
niespójności. W celu zachowania spójności danych w czasie równoczesnej próby ich
modyfikacji wprowadzono mechanizm transakcji, jako jednostki, w ramach, której
użytkownicy wykonują swoje operacje w bazie danych. W sytuacjach konfliktowych system
zarządzania bazą danych (DBMS) szereguje operacje różnych transakcji w taki sposób,
aby nie powstały niespójności danych. Moment podłączenia się użytkownika do bazy
danych jest jednocześnie początkiem sesji danego użytkownika. Trwa ona aż do momentu
zakończenia pracy z bazą danych. Równolegle jeden użytkownik może mieć otwartych
więcej niż jedną sesję. W ramach jednej sesji użytkownik może realizować jedną lub
więcej transakcji, jedna po drugiej. Transakcja jest jednostką interakcji użytkownika z bazą
danych i składa się z pojedynczych operacji realizowanych w bazie danych. Użytkownik
realizuje swoje transakcje albo przez polecenia języka SQL, które kierowane są
bezpośrednio do systemu zarządzania bazą danych (DBMS), albo pośrednio – przy użyciu
wcześniej przygotowanych aplikacji bazy danych, odwołujących się do DBMS.



Mechanizm blokowania danych

Transakcje wykonujące operacje odczytu nie wpływają na siebie wzajemnie, ich działania
nie kolidują ze sobą. Problem pojawia się w przypadku operacji zmieniających
jednocześnie te same dane w bazie. Jeśli dwóch użytkowników zmienia jednocześnie dwa
różne obiekty w bazie danych, nie wywołuje to konfliktu. Jeśli natomiast te dwie operacje
dotyczyć będą tego samego obiektu, powstaje sytuacja konfliktowa. Aby uniknąć
zakleszczeń będących efektem takich sytuacji Oracle opracował złożony mechanizm
zakładania blokad na obiekty. W przypadku kiedy rozpocznie się transakcja pierwszego
użytkownika, drugi użytkownik może odczytywać dane właśnie modyfikowane przez
pierwszego, ale nie może ich zmieniać do czasu zakończenia transakcji pierwszego
użytkownika. Polecenie drugiego użytkownika zostanie skolejkowane jako oczekujące na
wykonanie.


Użytkownicy i schematy

Kiedy użytkownik bazy danych tworzy obiekt, jednocześnie staje się jego właścicielem.
Obiekty te tworzone są w tak zwanym schemacie użytkownika, czyli logicznej przestrzeni
bazy danych. Schemat użytkownika jest tworzony automatycznie podczas definiowania
użytkownika i posiada on unikalną nazwę, która jest identyczna z nazwą użytkownika.
Nazwa schematu wykorzystywana jest do wskazania obiektów bazy danych stanowiących
własność danego użytkownika. Odwołanie do obiektu znajdującego się w innym
schemacie umożliwia następująca składnia:

NAZWA_UŻYTKOWNIKA.NAZWA_OBIEKTU

Nazwy obiektów muszą być unikalne w obrębie schematu. Dwóch użytkowników może
posiadać obiekt o tej samej nazwie w swoich schematach, natomiast różnie będą się do
nich odwoływać. Jeśli użytkownik Kowalski oraz Nowak mają w swoich schematach
obiekty o nazwie Towary mogą się do nich odwoływać (przy założeniu że mają do tego
uprawnienia) dodając nazwę użytkownika kolegi przed nazwą obiektu. Użytkownik
Kowalski odnosząc się do swojego obiektu wywołuje go:

TOWARY

Jeśli zechce odnieść się do obiektu kolegi:

NOWAK.TOWARY





Obiekty bazy danych

W bazie danych Oracle istnieje wiele różnych obiektów zarówno do przechowywania
samych danych, jak i pełniących funkcje wspomagające zarządzaniem tymi danymi.
Wszystkie obiekty tworzone są przez użytkowników bazy danych. Użytkownik musi mieć
jednak przypisane uprawnienie tworzenia danego rodzaju obiektu. W systemie Oracle
można zdefiniować np. takie obiekty:

Tabele – służą do przechowywania danych.
Indeksy – są strukturami danych zmniejszającymi koszt dostępu do danych
Tabele tymczasowe – Służą do przechowywania danych potrzebnych na czas jednej
transakcji lub jednej sesji oraz do wspomagania zarządzania tymi danymi:
Widoki – to logiczna struktura, wirtualna tabela wyliczana w locie, określona przez
zapytanie SQL, umożliwia dostęp do podzbioru kolumn i wierszy tabeli lub tabel.
Sekwencje – Sekwencja to obiekt bazy danych generujący kolejne liczby. Sekwencje są
stosowane przede wszystkim do tworzenia kolejnych wartości sztucznych kluczy
podstawowych.
Wyzwalacz – jest to procedura wykonywana automatycznie jako reakcja na pewne
zdarzenia w tabeli bazy danych.


Tabela

Tabela to nieuporządkowany zbiór rekordów, informacji tego samego typu. Pole to
pojedynczy niepodzielny element informacji, zawierający:
Nazwę – identyfikującą pole,
Typ – określający zbiór wartości, które to pole może przyjąć,
Wartość – będącą informacją zapisaną w polu.
Rekord - uporządkowany zbiór różnych pól.
Kolumna - zbiór pól tego samego rodzaju z zakresu wszystkich rekordów











Brak komentarzy:

Prześlij komentarz