Technologia DataBlade

Relacyjne bazy danych mogą teraz zarządzać rozszerzoną listą typów danych.

Relacyjne bazy danych mogą teraz zarządzać rozszerzoną listą typów danych.

Informix od niedawna oferuje nowe rozwiązanie tego problemu - DataBlade. Moduły DataBlade, przyłączone do relacyjnego systemu zarządzania bazami danych (RDBMS), rozszerzają jego możliwości o wykonywanie nowego rodzaju operacji na nowych typach danych.

Przez ostatnie 15 lat producenci relacyjnych RDBMS skupiali uwagę na zapewnieniu coraz szybszego dostępu i łatwego manipulowania na prostej, alfanumerycznej informacji - znakach i liczbach. W latach 90. natura danych, do których użytkownik ma dostęp, zmieniła się jednak drastycznie. Pojawiły się obrazy, dźwięk, wideo, strony HTML, 2- i 3-wymiarowe dane przestrzenne, dokumenty tekstowe i wiele innych bardziej zróżnicowanych typów informacji, z którymi relacyjne RDBMS nie mogły sobie poradzić.

Producentom relacyjnych baz danych trudno było dostosować się do coraz większych wymagań klientów, a żaden z dostawców nie był w stanie dostarczyć jednego serwera, który mógłby zarządzać dowolnym typem danych, jaki wymyśliłby sobie klient.

Informix proponuje rozwiązanie tego problemu w postaci technologii DataBlade autorstwa firmy Illustra (która od grudnia 1995 r. jest własnością Informixa). Moduły DataBlade są przyłączone do serwera bazy danych rozszerzając jego możliwości o wykonywanie operacji na nowych typach danych. Do serwera bazy danych można dołączać gotowe moduły DataBlade "z półki" - opracowane przez Informixa lub jego partnerów - a także stworzone samodzielnie. Obecnie na rynku jest już kilkanaście modułów przeznaczonych do specyficznych zadań (patrz ramka).

Architektura i składniki modułów DataBlade

Tradycyjny RDBMS może obsługiwać bardzo ograniczony zbiór typów danych, głównie o charakterze alfanumerycznym: liczby całkowite, zmiennoprzecinkowe, daty i łańcuchy znaków.

Bardziej złożone typy danych są przechowywane w RDBMS, jako tzw. BLOB (Binary Large Objects). Ponieważ BLOB tworzą ciągi bitów trudne do zidentyfikowania, nie jest możliwe zadawanie zapytań dotyczących ich zawartości. Brak możliwości porównywania ich między sobą utrudnia tym samym zbudowanie z nich wydajnego systemu wyszukiwania informacji. Tradycyjny RDBMS nie może więc wykonywać na danych typu BLOB standardowych funkcji, takich jak indeksowanie i kwerendy, które czynią relacyjny model tak użytecznym dla danych alfanumerycznych. Jeśli projektant systemu RDBMS będzie zmuszony do korzystania z BLOB, to wszystkie wymienione powyżej cechy funkcjonalne będzie musiał zaprogramować osobiście. Ponieważ tradycyjny RDBMS nie rozumie zawartości danych typu BLOB, to za każdym razem będą one musiały być przesłane do klienta drastycznie zmniejszając przepustowość sieci.

Moduły DataBlade reprezentują odmienne podejście w obsłudze tego typu danych; są zbiorem obiektów bazodanowych i kodu, który rozszerza możliwości serwera bazy danych, oferując taki sam poziom obsługi dla nowych typów danych, jak dla wbudowanych. W pewnym sensie moduł DataBlade można uważać za obiektowy "pakiet" podobny do biblioteki klas C++ która składa się z wyspecjalizowanych typów danych, np. obrazów.

W skład modułów DataBlade wchodzą następujące składniki: abstrakcyjne typy danych, funkcje, interfejsy, tablice i indeksy, metody dostępu oraz kod klienta.

Abstrakcyjne typy danych

Podstawowym składnikiem większości modułów DataBlade jest zbiór abstrakcyjnych typów danych, które zdefiniowano w celu rozszerzenia dziedziny działania aplikacji. Serwer bazowy zarządza jedynie najprostszymi (alfanumerycznymi) typami danych: liczbami całkowitymi, łańcuchami znaków, datami, czasem itp. Dzięki modułom DataBlade abstrakcyjne typy danych mogą być traktowane tak samo jak wbudowane typy danych. Ich wartości mogą być gromadzone i badane za pomocą zapytań lub przez wywołanie funkcji, przekazywane jako argumenty do funkcji bazodanowych oraz indeksowane w taki sam sposób, jak typy wbudowane.

Istnieje kilka możliwości zdefiniowania nowego typu danych. Pierwszy polega na wykorzystaniu możliwości dziedziczenia przez zdefiniowanie nowego typu za pomocą typu już istniejącego. Drugi - stworzeniu złożonego typu za pomocą kilku prostych. Trzeci - zdefiniowaniu nowego typu za pomocą kodu napisanego w języku C, przydzielając miejsce dla wartości zmiennych i dokonując konwersji między tekstową a wewnętrzną reprezentacją typu.

Zaimplementowany w ten ostatni sposób typ (o nazwie opaque - nieprzezroczysty) dla projektanta RDBMS ma szczególne zalety. Po pierwsze, typy danych wielu aplikacji są zdefiniowane jako struktury języka C, które bez żadnych problemów mogą być wykorzystane jako moduły DataBlade. Po drugie - reprezentacja typu opaque jest bardziej zwarta niż typów złożonych, co odgrywa istotną rolę w szybkości wykonywania operacji I/O. Wreszcie kod, który przydziela miejsce i dokonuje konwersji typów opaque może być wykonany bardziej efektywnie od kodu, który przydziela miejsce i konwertuje typy złożone. Ponieważ programista dokładnie zna zakres wartości danych, przechowywanie i kopiowanie wartości może być przez niego zakodowane efektywnie. Natomiast kod, który zarządza złożonymi wartościami jest ogólnego przeznaczenia i zanim uzyska dostęp do wartości danej składowej musi zinterpretować zawartość nagłówka danej złożonej.


TOP 200