ORACLE czy Sybase – konkurencja czy historia?

Jadwiga Gnybek
Jadwiga_Gnybek@nofer.lodz.pl

Motorów baz danych – jak wiadomo z historii
informatyki – było wiele. Z owej różnorodności pozostały zaledwie
trzy lub cztery profesjonalne bazy danych, dzielące pomiędzy siebie rynek
rozwiązań komercyjnych. Jednym z takich motorów bez wątpienia jest Sybase.

Motor Sybase – jak się wydaje – swoje lata świetności
ma już za sobą. Ale nie lekceważmy konkurencji i przyjrzyjmy się
zastosowanym tam rozwiązaniom.

SYBASE

Serwer bazy danych Sybase składa się z:

  • dwóch procesów (serwera danych
    i serwera backupu),
  • powierzchni dyskowej przechowującej zasoby bazy
    oraz informacje o jej konfiguracji,
  • plików konfiguracyjnych zawierających atrybuty
    serwera.

Struktura pamięci operacyjnej serwera bazy to:

  • obszar programu czyli miejsce rezydencji
    uruchamialnej części motoru bazy,
  • bufor danych czyli obszar przechowujący często
    pobierane dane,
  • obszar pamięci dla procedur składowanych, który
    przechowuje zoptymalizowane zapytania SQLa.

Motor bazy danych Sybase uruchamiany jest jako pojedynczy
proces
w systemie operacyjnym. Liczba procesów nie zmienia się wraz ze zmieniającą
się liczbą użytkowników bazy. Liczba użytkowników bazy wpływa jednak
znacząco na wymagania bazy w stosunku do rozmiaru pamięci operacyjnej. Każde
kolejne połączenie użytkownika bazy wymaga bowiem alokacji od 40 do 60kB RAM.
Co ważne, rozmiar potrzebnej pamięci skalkulować należy w momencie
konfiguracji bazy, jeszcze przed startem. Jej rozmiar określony jest bowiem
parametrem „total memory”, który określa ilość pamięci
alokowanej dla serwera podczas startu bazy. Wielkość tego obszaru nie może być
zmieniana dynamicznie.

Przetwarzanie transakcyjne, to kolejny z istotnych
elementów decydujących i jakości i wydajności motoru bazy. Transakcje w
Sybase zapisywane są w pierwszym kroku do bufora danych (data cache), stamtąd
w następnym kroku przepisywane są do dziennika transakcji (transaction log) i
na urządzenie składujące dane (database device). Odwołanie transakcji
powoduje wymazanie odpowiedniej strony pamięci bufora i przywrócenie
poprzednich wartości danych na podstawie zapisów dziennika transakcji.
Informacje te używane są również
w przypadku odzyskiwania danych utraconych na skutek awarii urządzenia składującego
dane. Motor tej bazy zna również pojęcie checkpoint, które skutkuje trwałym
zapisaniem wszystkich zatwierdzonych transakcji. Transakcyjne przetwarzanie
danych jest postępowaniem standardowym dla wszystkich typów operacji, z wyjątkiem
operacji na danych typu blob, które nie mogą być przetwarzane
w trybie transakcyjnym.

Procedury archiwizacji danych to kolejny wyznacznik
dojrzałości bazodanowych motorów.

Mechanizmy zaimplementowane
w Sybase pozwalają na wykonanie eksportu danych zarówno podczas pracy bazy
czyli w trybie on-line jak również w sytuacji, gdy baza jest dla użytkowników
niedostępna (off line).

Bezpieczeństwo i administracja. Podstawowym
predefiniowanym użytkownikiem bazy danych Sybase jest administrator bazy czyli
„sa” (system administrator). Użytkownikowi temu przypisana jest
rola o nazwie „sa_role”, która jest odpowiednikiem oraclowego DBA i
daje jej posiadaczowi nieograniczone przywileje. Nowi użytkownicy bazy tworzeni
są na poziomie narzędzi administrowania bazą i wymagają przypisania im
odpowiednich praw i przywilejów. Możliwe jest również nazwanie użytkownika
bazy jej właścicielem „dbo”, co automatycznie nadaje mu prawa do
wszystkich obiektów danej bazy.

Sybase – będąc bazą opartą o standard SQL –
tworzy wszystkie swoje obiekty z wykorzystaniem poleceń DDL. Normą jest tu
konfiguracja, w której jedna instancja serwera pracuje na potrzeby kilku baz
danych. W celu identyfikacji obiektów, podobnie jak w bazach oraclowych,
stosowana jest składnia nazwa_właściciela.nazwa_obiektu.

Zgodnie ze standardem SQL, baza ta obsługuje między innymi
dane typu: integer, decimal, float, money, char, varchar, datetime, image i text.
Dane typu varchar przeznaczone są do składowania informacji tekstowych
o maksymalnej długości 255 znaków. Pole czasu/daty przechowuje liczbę będącą
wielokrotnością 1/300 sekundy.

Organizacja przestrzeni dyskowej zrealizowana jest
poprzez podział na segmenty, które – mając za zadanie przechowywanie
danych składowanych w konkretnej tablicy – stanowią obszar dysku
oznaczony nazwą
i charakteryzujący się określonym rozmiarem. W podobny sposób są składowane
na dysku informacje zawarte
w dziennikach transakcji, z tym
że dzienniki te umieszczane są zwykle na oddzielnych urządzeniach (dyskach).

Zwykle najefektywniejszą formą manipulowania danymi jest
wykorzystanie do tego celu procedur składowanych w bazie. W Sybase do pisania
takich procedur używany jest język Transact-SQL. Szybkość realizacji takich
procedur zapewniona jest poprzez składowanie procedur w formacie skompilowanym.
Obsługa kursorów realizowana jest poprzez przetwarzanie wiersz po wierszu. W
procesie realizacji procedur istnieje również pojęcie tabel tymczasowych.
Wyniki pracy procedur składowanych mogą być wywoływane z bazy z pośrednictwem
polecenia SELECT.

Narzędzia zarządzania i programowania, to może nie
najważniejszy, ale zawsze ciekawy fragment „infrastruktury bazy”.
Sztandarowym edytorem poleceń SQL dla Sybase jest ISQL zaś podstawowe narzędzie
administratora bazy to Sybase Central. Narzędzia programisty aplikacji oparte o
ten motor bazy, to Powerbuilder, Powerdesigner, Power J.

ORACLE

A teraz dla porównania, przypomnienie tych samych informacji
o znanym i lubianym serwerze Oracle.

Instancja Oracle składa się z:

  • wielu procesów tła – ich liczba zależy od
    konfiguracji serwera i wybranych jej opcji,
  • plików zawierających dane bazy, plików
    kontrolnych zawierających informacje konfiguracyjne, plików dziennika powtórzeń
    zawierających zapis historii transakcji oraz ewentualnie ich archiwalnych
    kopii,
  • plików konfiguracyjnych zawierających parametry
    inicjalizacyjne instancji.

Struktura pamięci operacyjnej serwera bazy to:

  • SGA – będący obszarem pamięci zarezerwowanym dla
    procesów drugoplanowych motoru bazy,
  • obszar pamięci dzielonej zawierający bufor
    bibliotek (library cache) i bufor słownika danych (data dictionary cache),
  • bufor plików dziennika powtórzeń (redo log buffer),
    gdzie składowane są dane o transakcjach przed zapisaniem ich do plików
    dziennika powtórzeń,
  • bufor cache służący do składowania danych przed
    zapisaniem ich do plików bazy danych.

Serwer bazy danych Oracle z punktu widzenia systemu
operacyjnego tworzy wiele procesów a ich liczba może być zależna od liczby
zalogowanych do bazy użytkowników.

Przetwarzanie transakcyjne w bazach danych Oracle polega
na zapisywaniu efektów działania poleceń wchodzących w skład transakcji do
buforów dziennika powtórzeń (redo log buffer), a w następnej kolejności do
plików dziennika powtórzeń (redo logs), buforów danych (data file buffer) i
plików bazodanowych (data files). Polecenie wycofania transakcji (rollback)
powoduje wymazanie odpowiednich bloków pamięci z bufora plików dziennika powtórzeń.
Z bloków segmentów wycofania (rollback segment blocks) odtwarzane są
pierwotne wartości nadpisanych danych. W przypadku transakcji zakończonych
zatwierdzeniem (commit) dane historyczne zapisywane są do plików dziennika
powtórzeń (redo logs)
i ewentualnie do ich archiwalnych kopii (archive logs). Pliki te używane są również
podczas odtwarzania danych w przypadku awarii urządzenia przechowującego pliki
bazodanowe. Polecenie checkpoint powoduje zapisanie wszystkich zatwierdzonych
zmian z pamięci operacyjnej serwera do plików bazodanowych. Watro zauważyć,
że logowanie przebiegu transakcji jest opcjonalne, podobnie jak archiwizacja
plików dzienników powtórzeń.

Procedury archiwizacji zaimplementowane w serwerach bazy
danych Oracle umożliwiają wykonanie kopii zapasowej bazy, zarówno w trybie
on-line jak i off-line. Pamiętajmy, że większość tych działań wspierana
jest od dawna przez pakiet narzędzi Recovery Manager.

Bezpieczeństwo i administracja. Standardowa instalacja
bazy danych Oracle wyposażona jest w szereg predefiniowanych schematów. Do
najbardziej znanych zaliczyć należy „sys”, „system” i
„scott”. Jednocześnie baza wyposażona jest w zestaw podstawowych ról,
wśród których wyróżnić warto rolę administratora bazy „DBA”
oraz dwie role nadające podstawowe uprawnienia użytkownika: „connect”
i „resource”. Możliwa jest również autoryzacja użytkowników
bazy za pośrednictwem mechanizmów zabezpieczeń, zaimplementowanych na
poziomie systemu operacyjnego. Nazwy obiektów bazodanowych budowane są zgodnie
z regułą nazwa_schematu.nazwa_tablicy. Dostęp do obiektów bazodanowych (na
przykład tablic) mają ich właściciele lub użytkownicy, uprawnieni do
takiego dostępu przez właścicieli. Uprawnienia do wykonywania wszelkich działań
na wszystkich obiektach bazodanowych mają użytkownicy bazy, którym przypisana
została rola „DBA”.

Zgodnie ze standardem SQL, baza Oracle obsługuje między
innymi następujące typy danych: number, char, varchar2, date, long raw, clob i
blob. Standardowo do składowania danych tekstowych wykorzystywany jest typ
danych varchar2, który przechowywać może ciągi o długości do 2000 znaków.

Organizacja przestrzeni dyskowej. Tabele – będące chyba
najistotniejszym obiektem bazodanowym – składowane są w logicznych
bytach o nazwie „przestrzeń tabel” (tablespace), które z kolei
tworzone są fizycznie przez jeden lub wiele plików bazodanowych. Pliki
kontrolne (control files) i pliki dziennika powtórzeń (redo logs) składowane
są na dysku w postaci oddzielnych plików. Możliwa jest również konfiguracja
bazy, która rezygnuje z wykorzystania dostępu do przestrzeni dyskowej w trybie
systemu partycji i plików. Taka konfiguracja powierzchni dyskowej nosi nazwę
raw devices.


Język programowania zapewniający największą wydajność
operacji na danych składowanych w bazie Oracle, to proceduralna odmiana SQL –
PL/SQL. W języku tym napisane są niemal wszystkie podstawowe procedury tworzące
wewnętrzne mechanizmy obsługi danych. Jest to również najbardziej natywny język
kodowania logiki aplikacji, opartych na modelu danych składowanych w tej bazie.
Procedury są składowane w bazie w postaci skompilowanej, co przyspiesza każdorazowe
ich wykonanie. Obsługa kursorów realizowana jest poprzez przetwarzanie wiersz
po wierszu.
W procesie realizacji procedur możliwe jest tworzenie obiektów tymczasowych w
postaci obszarów (table datatype) lub struktur (record type). Co istotne,
procedura PL/SQL zwraca wynik swojej pracy jedynie w postaci parametrów typu
„out”.

Narzędzia zarządzania i programowania. Najbardziej
uniwersalnym
i najstarszym narzędziem administratora bazy danych jest edytor poleceń SQL*Plus.
Od wersji ósmej jest dostępny okienkowy pakiet narzędzi służących do
administracji bazą – zwie się Oracle Enterprise Manager. Narzędzia
programisty aplikacji opartych o ten motor bazy to oczywiście Oracle Designer,
Developer, JDEveloper.

Jaki morał z zaprezentowanego porównania? W wielu miejscach
produkty te wyglądają podobnie. Wynika to najczęściej z implementacji
standardu SQL. Ale nawet z tak pobieżnej analizy widać, o ile bardziej
skomplikowanym produktem jest motor bazy Oracle

cdn.