Technologia DataBlade

Funkcje

Drugim ważnym składnikiem modułów DataBlade jest zbiór funkcji operujących na danych. Funkcje mogą operować zarówno na typach zdefiniowanych przez projektanta systemu, jak i na dowolnych innych typach danych znanych serwerowi, włączając w to typy zdefiniowane przez inne moduły DataBlade.

Podobnie jak w przypadku definiowania nowych typów danych, istnieje kilka sposobów definiowania nowych funkcji DataBlade. Główny problem dla projektantów polega na tym, czy pisać je w SQL czy w C. Funkcje napisane w języku C są kompilowane i ładowane do wspólnych plików obiektowych (shared object file) lub do DLL (Dynamic Link Library). Funkcje i nazwa wspólnego obiektu są deklarowane na serwerze. Gdy funkcja jest wywoływana, wspólny obiekt jest przyłączany do serwera i tam uruchamiany. Ponieważ język C jest bardzo wydajnym językiem programowania, to zaprogramowane w nim funkcje mogą wykonać bardziej złożone obliczenia niż funkcje zdefiniowane w SQL, nawet z rozszerzeniami proceduralnymi. Z drugiej strony, funkcje SQL są znacznie łatwiejsze do napisania i wymagają mniej trudu przy debuggingu.

Jeśli moduł DataBlade zawiera typy opaque, to serwer musi być wyposażony w funkcje, które umożliwią mu operowanie na tego rodzaju typach. Niektóre funkcje są niezbędne, inne - opcjonalne.

Interfejsy

Interfejs jest zbiorem standardowych funkcji, umożliwiających modułom DataBlade dzielenie się realizowanymi przez nie usługami z innymi modułami. Przykładowo: moduł DataBlade odpowiedzialny za dopasowywanie obrazów może umożliwić użytkownikom przygotowanie podpisów pod obrazy. Gdyby interfejs wyszukiwania słów kluczowych został zarejestrowany w bazie danych, to moduł DataBlade mógłby użyć procedur wyszukiwania słów kluczowych wśród podpisów. Informix standaryzował kilka modułów DataBlade, np. do dopasowywania tekstów i obrazów, tak że oferują one zgodne interfejsy, umożliwiając z jednej strony klientom wybór najbardziej stosownego modułu, a z drugiej - łączenie modułów na podobieństwo klocków Lego.

Tablice i indeksy

Funkcje modułów DataBlade mogą używać danych przechowywanych w bazie danych. Przykładowo moduł zarządzania obrazami może przechowywać w tablicy listę wszystkich znanych formatów i programy konwersji, które je obsługują. Dla dużych, szczególnie często używanych tablic, moduł DataBlade może także zdefiniować indeksy w jednej kolumnie lub kilku, zwiększając wydajność dla zapytań po kolumnach indeksowanych.

Używanie tablic do przechowywania informacji dotyczących DataBlade ułatwia także pracę projektantów w późniejszej rozbudowie modułu. Użytkownicy wspomnianego powyżej modułu zarządzającego obrazami mogą zarejestrować nowe formaty przez proste dodanie nowego wiersza do tablicy rozpoznawanych formatów.

Metody dostępu

Podstawowa metoda dostępu polega na skanowaniu tablicy lub indeksów w poszukiwaniu danych, które spełniają określony warunek i uaktualnieniu tablicy i jej indeksów przez wstawienie, modyfikację lub usunięcie danych. Metody dostępu są po prostu zbiorem funkcji wywoływanych przez motor serwera w stosownych miejscach podczas wykonywania planu zapytań. Funkcje włączone w nową metodę dostępu wykonują różne operacje, takie jak otwarcie skanowania indeksu, pobranie następnego rekordu do skanowania, wstawienie rekordu i usunięcie go, zamiana rekordu i zakończenie skanowania.

Gdy metody dostępu, takie jak B-drzewo, są używane w celu przyspieszenia realizacji zapytań w stosunku do jednowymiarowych danych, nowe typy danych mogą wymagać nowych metod dostępu w celu przyspieszenia zapytań specyficznych dla nowego typu danych. Jednakże, w pewnych przypadkach, projektanci mogą używać istniejących metod dostępu dla nowych typów danych.

Następujące funkcje muszą być obecne w kodzie metody dostępu:

Blokada (locking): Stosowne blokady muszą być ustawione i zwolnione na indeksowanych obiektach. Wymaga to interakcji z kodem zarządzania blokadami serwera.

Odtworzenie: Kod metody dostępu musi zapewnić możliwość odtworzenia struktury bazy danych w razie awarii. Można to osiągnąć za pomocą kombinacji dziennika zdarzeń dotyczących indeksów i/lub za pomocą bezpiecznego kodowania. Jeśli używa się dziennika, kod metody dostępu musi współpracować z zarządcą dziennika.

Zarządzanie stronami: Aby uzyskać dostęp do odpowiedniej strony dysku, kod metody dostępu musi współpracować z zarządcą pamięci buforowej serwera. W celu uniknięcia kopiowania stron do wydzielonych miejsc, dobra metoda dostępu będzie używała puli buforowych stron. To wymaga ostrożnego przypinania (pinning) i usuwania (unpinning) stron, tak by zarządca pamięci buforowej przypadkowo nie przepisywał indeksu z dysku, zanim metoda dostępu nie będzie go potrzebowała.

Kod klienta

Oprócz kodu implementującego nowe typy danych, wiele modułów DataBlade zawiera kod klienta. Kod klienta ma dostęp do bazy danych poprzez bibliotekę LIBMI i eksportuje interfejs użytkownika, tak że użytkownicy mogą zadawać zapytania, wyświetlać i modyfikować nowe typy danych. Może on wchodzić w skład modułu lub być dostarczony oddzielnie.


TOP 200