pobierz plik referatu

Transkrypt

pobierz plik referatu
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
Rozdział 2
w
Aktywny system zarządzania bazą danych jako
kontroler homogenicznego środowiska aplikacji
w
1 Wstęp
da
.b
w
Streszczenie. Aktywny system zarządzania bazą danych jest w stanie
reagować w sposób automatyczny na zdarzenia zachodzące w bazie danych
oraz poza nią. W pierwszej części rozdziału przedstawiono najważniejsze
pojęcia z dziedziny aktywnych systemów zarządzania bazami danych oraz
klasyfikację tych systemów. Możliwości wykorzystania wybranej klasy
aktywnych systemów zarządzania bazą danych (kontrola homogenicznego
środowiska aplikacji) przedstawiono na przykładzie systemu przeznaczonego
do zarządzania kontami klientów telefonii komórkowej. Aby umożliwić
kontrolę środowiska bazy danych zdefiniowano odpowiednią bazę reguł
ECA. Opis budowy i zachowania zaawansowanych reguł, reagujących na
złożone sekwencje zdarzeń wzbogacono odpowiednimi diagramami UML.
pl
s.
Pojawienie się skomplikowanych z natury aplikacji, mających jednocześnie duże
zapotrzebowania na rozmiar bazy danych doprowadziło do rozszerzenia funkcjonalności
systemów zarządzania bazami danych. Jedną z możliwości wsparcia aplikacji przez system
zarządzania bazą danych jest wyposażenie go w możliwości monitorowania
i samodzielnego reagowania na szeroki wachlarz sytuacji, jakie mogą zajść w
rzeczywistych aplikacjach. Takie podejście pozwala przenieść część logiki biznesowej z
warstwy aplikacji do warstwy danych. Zalety są następujące:
− możliwość współdzielenia funkcjonalności przez wiele aplikacji, co zmniejsza
poziom zduplikowania kodu;
− wykorzystanie wzorca reguły ECA prowadzi do zmniejszenia zabiegów
implementacyjnych potrzebnych do dostarczenia wymaganych funkcjonalności;
− możliwość modyfikowania logiki biznesowej umieszczonej w warstwie danych
w sposób niezauważalny dla użytkowników i aplikacji.
Samodzielna reakcja systemu bazodanowego oznacza, że jest on w stanie podjąć pewną
akcję niezależnie od działań użytkownika lub aplikacji. Specyfikacja sytuacji, na które
system będzie reagował może odbywać się za pomocą reguł ECA (ang. event-conditionaction). Semantyka reguły ECA jest następująca: „jeśli zajdzie zdarzenie E i jeśli jest
spełniony warunek C wówczas, podejmowana jest akcja A”. Modelowanie reguł odbywa
Robert Bar, Zygmunt Mazur: Politechnika Wrocławska,
Wydział Informatyki i Zarządzania, Instytut Informatyki Stosowanej,
ul. Wybrzeże Wyspiańskiego 27, 50-370 Wrocław, Polska
email: [email protected], [email protected]
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
R. Bar, Z. Mazur
w
się za pomocą języka definiowania reguł. Składa się on z konstrukcji pozwalających na
definiowanie zdarzeń, warunków, akcji. Wszystkie zdefiniowane reguły składowane są w
tzw. bazie reguł i są traktowane (podobnie jak schemat bazy danych) jako metadane.
Aktywny system zarządzania bazą danych (ang. ADBMS – Active Database Management
System) rozszerza pasywny system zarządzania bazą danych o możliwości specyfikowania
i wykrywania zdarzeń oraz dostarcza mechanizmy wykonywania akcji, które określają
reakcję systemu na pojawiające się zdarzenia. W idealnym rozwiązaniu ADBMS to system,
który wykrywa wszystkie rodzaje zdarzeń. Gdy programiści aplikacji lub sami
użytkownicy są odpowiedzialni za sygnalizację wystąpień wszystkich zdarzeń wówczas
mamy do czynienia jedynie z wariantem pasywnego systemu zarządzania bazą danych.
ADBMS jest odpowiedzialny za wyliczenie wartości logicznej warunku C reguły ECA w
następstwie zdarzenia E oraz za wykonanie akcji A, jeśli warunek ten zostanie spełniony.
Warunek C jest najczęściej zapytaniem do bazy danych, którego niepusty rezultat określa
spełnienie tego warunku. Akcja A jest dowolnym wykonywalnym fragmentem kodu.
Na podstawie roli, jaką będzie pełnił ADBMS w środowisku aplikacji można dokonać
klasyfikacji aktywnych systemów zarządzania bazami danych. Drugi podrozdział
niniejszego rozdziału poświęcono w całości na przedstawienie owej klasyfikacji. Aby
przybliżyć zalety wykorzystania ADBMS w podrozdziale trzecim pokazano, w jaki sposób
można wykorzystać aktywny system zarządzania do kontrolowania środowiska aplikacji,
które współdzielą te same bazy danych. W opracowaniu przykładu wykorzystano
doświadczenia zdobyte w czasie budowy aktywnego obiektowo-zorientowanego systemu
zarządzania bazą danych. ActiveJDO jest propozycją rozszerzenia standardu JDO 1.0
o możliwości definiowania i przetwarzania reguł ECA [1][2]. Podrozdział czwarty zawiera
podsumowanie i wskazuje obszary dalszych badań nad aktywnymi systemami zarządzania
bazami danych.
da
.b
w
w
2 Klasyfikacja aktywnych systemów zarządzania bazami danych
pl
s.
Podstawą do kategoryzowania aktywnych systemów zarządzania bazami danych jest
przyjęcie założenia, że klasa do której należeć będzie ADBMS, zależy od strategii jaką on
przyjmuje realizując swoje funkcjonalności. W pracy [3] wskazano dwa podstawowe
aspekty, których sposób realizacji może wskazywać na klasę ADBMS:
− rola ADBMS w systemie aplikacji: nadzór (ang. supervision) lub kontrola (ang.
control);
− stopień integracji ADBMS z środowiskiem aplikacji: system homogeniczny lub
heterogeniczny.
Aktywny system w roli nadzorcy weryfikuje żądania operacji na bazie
danych i ewentualnie wykonuje proste akcje (np. powiadamianie użytkownika, wycofanie
transakcji, rozpropagowanie uaktualnień). Natomiast ADBMS kontrolujący środowisko
aplikacji jest w stanie dodatkowo uruchamiać zewnętrzne aplikacje. W tej roli ADBMS
może kontrolować nie tylko stan bazy danych, ale również zachowanie całego środowiska
aplikacji.
Środowisko aplikacji będzie można nazwać homogenicznym, jeśli wszystkie aplikacje
współdzielą schematy bazy danych oraz posiadają wspólne bazy danych. W przeciwnym
razie mamy do czynienia z heterogenicznym środowiskiem aplikacji.
Kombinacja możliwych ról, jakie może pełnić ADBMS oraz stopni integracji ADBMS z
środowiskiem aplikacji prowadzi do powstania trzech klas aktywnych systemów, które
można opisać następująco:
28
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
Aktywny system zarządzania bazą danych jako kontroler homogenicznego środowiska aplikacji
w
− Nadzorca homogenicznego środowiska aplikacji to najprostsza w budowie klasa
aktywnych systemów. Zadaniem takich systemów jest weryfikacja żądań aplikacji
wobec stanu bazy danych. Możliwości tej klasy systemów ograniczają się do
powiadamiania użytkownika i cofania transakcji. Taki rodzaj ADBMS jest użyteczny
podczas implementacji zwykłych zadań dla DBMS, takich jak: sprawdzanie
integralności danych, autoryzacji użytkowników, uaktualnień widoków.
− ADBMS jako kontroler homogenicznego środowiska aplikacji ma możliwość
kontrolowania nie tylko bazy danych, ale również środowiska aplikacji. Aktywny
system oprócz posiadania możliwości nadzorcy jest w stanie wykrywać stany lub
sekwencje stanów środowiska aplikacji i reagować na nie, włączając w to
uruchamianie programów. Kontrolowanie złożonych sekwencji zdarzeń wymusza
istnienie złożonych typów zdarzeń.
− Kontroler heterogenicznego środowiska aplikacji jest w stanie integrować
autonomiczne systemy. Do możliwości klasy opisanej powyżej należy dodać
wykrywanie zdarzeń zachodzących w innych systemach, które mogą bazować na
innych DBMS. Uruchamianie akcji nie musi odbywać się pod kontrolą lokalnego
menadżera transakcji. Kontrola heterogenicznego środowiska wymaga również
przeniesienia części warstwy pośredniczącej (ang. middleware) do ADBMS.
Mimo jeszcze jednej dostępnej kombinacji czwarta możliwa klasa ADBMS czyli nadzorca
heterogenicznego środowiska jest uznawana za pozbawioną własnego znaczenia [3].
da
.b
w
w
3 Przykład kontrolera homogenicznego środowiska aplikacji
pl
s.
W niniejszym podrozdziale zostaną przybliżone wymagania stawiane przed aktywnymi
systemami zarządzania bazami danych pełniącymi rolę kontrolera aplikacji, które
współdzielą te same bazy danych. Jak już wspomniano w poprzednim podrozdziale, od tej
klasy ADBMS wymaga się dostarczenia szerszego zakresu funkcjonalności od tego jaki
jest potrzebny do pełnienia roli nadzorcy. W najprostszej klasie ADBMS wystarcza obsługa
zdarzeń prostych, pochodzących z systemu zarządzania bazą danych (np. zdarzenia
transakcji), zdarzeń mających miejsce w samej bazie danych (np. zdarzenia zmiany
wartości atrybutów obiektu) oraz zdarzeń czasowych (np. wskazanie przez zegar danej
godziny). Projektant bazy reguł może jeszcze tylko określić zależność pomiędzy transakcją,
w której pojawiło się zdarzenie (tzw. transakcja wyzwalająca), a transakcją rozpoczętą na
rzecz wykonania akcji (transakcja wyzwolona). Wyróżnia się następujące tryby sprzężenia
owych transakcji:
− w trybie bezpośrednim wykonanie akcji ma miejsce natychmiast po zajściu zdarzenia
i odbywa się w ramach transakcji zagnieżdżonej w transakcji wyzwalającej;
− w trybie opóźnionym transakcja wyzwolona jest również transakcją zagnieżdżoną,
jednak jej wykonanie jest odroczone do zakończenia transakcji wyzwalającej;
− w trybie rozłącznym wykonanie akcji rozpoczyna się w osobnej transakcji.
W pracy [1] pokazano również, w jaki sposób sprzężenia transakcji wyzwolonej
i wyzwalającej można ustalać osobno dla wykonania akcji i warunku. Na tym kończą się
możliwości modelowania reakcji w najprostszej klasie ADBMS. Cechą charakterystyczną
dla pozostałych klas ADBMS jest konieczność wspierania przez nie złożonych typów
zdarzeń, które należy rozumieć jako zdarzenia skomponowane z innych zdarzeń (prostych
lub złożonych). Dostarczenie zdarzeń złożonych daje projektantowi bazy reguł możliwość
implementowania reguł ECA, które będą realizować operacje w odpowiedzi na specjalnie
zdefiniowane sekwencje zdarzeń. Podstawowe typy zdarzeń złożonych tworzy się za
29
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
R. Bar, Z. Mazur
w
pomocą tzw. konstruktorów zdarzeń. Podczas prac nad prototypem aktywnej warstwy [2]
wyszczególniono następujące konstruktory zdarzeń złożonych:
− konstruktor dysjunkcji DYSJ(E1, E2), który określa zdarzenie zajścia jednego ze
zdarzeń składowych;
− konstruktor sekwencji SEQ(E1, E2) opisuje zajście zdarzenia E2 poprzedzonego
zajściem zdarzenia E1;
− konstruktor koniunkcji CONJ(E1, E2) określa konieczność wystąpienia obu zdarzeń
składowych aby zasygnalizowane zostało jedno zdarzenie złożone;
− konstruktor tzw. zdarzenia negatywnego NEG(E, TI) opisuje sygnalizację zdarzenia
złożonego pod warunkiem, że przez określony okres czas TI nie zostanie zgłoszone
ani jedno wystąpienie zdarzenia E;
− konstruktor pierwszego wystąpienia FO(E, TI) ma następujące znaczenie: jeśli w
czasie trwania interwału czasowego TI pojawi się po raz pierwszy zdarzenie E,
wówczas zostanie zasygnalizowane zdarzenie złożone. Kolejne wystąpienia
zdarzenia E będą ignorowane, aż do zakończenia bieżącego przedziału czasowego TI.
− konstruktor historii zdarzeń H(E, N, TI) definiuje zdarzenie złożone, które do
wystąpienia potrzebuje N-krotnej sygnalizacji zdarzenia E w podanym okresie czasu
TI.
Aktywny system zarządzania bazą danych akceptujący tak określone zdarzenia złożone jest
już w stanie kontrolować zachowanie środowiska aplikacji, co zresztą zostanie pokazane
w bieżącym rozdziale. Zanim jednak omówiony zostanie przykład, warto zwrócić jeszcze
uwagę na możliwości dalszego uściślania, kiedy może nastąpić reakcja na dane zdarzenie
złożone. Otóż z każdym wystąpieniem zdarzenia związana jest informacja o źródle
zdarzenia oraz transakcji wyzwalającej. W zaawansowanych ADBMS projektant bazy
reguł może wymagać, aby do sformułowania zdarzenia złożonego były brane wyłącznie
wystąpienia zdarzeń pochodzących z tej samej transakcji i/lub źródła.
Do celów poglądowych zaprojektowano uproszczony system zarządzający kontami
klientów sieci komórkowej. Do realizacji funkcjonalności warstwy danych wybrano
ADBMS, który może pełnić rolę kontrolera w homogenicznym środowisku aplikacji.
Specyfika modelowanej dziedziny wymaga dostarczenia elastycznego mechanizmu zmiany
reguł biznesowych, np. naliczających koszty rozmowy. Dzięki regułom ECA,
przechowywanym w bazie reguł i zarządzanym tak samo jak inne dane taki mechanizm
z powodzeniem posiada wspomniany ADBMS. Wystarczy zmodyfikować zbiór reguł, aby
reakcja ADBMS odpowiadała nowym wymaganiom. Na rysunku 1 przedstawiono
architekturę projektowanego systemu. Komponent CallManager odpowiedzialny jest za
obsługę rozmów telefonicznych. Komponent ten w określonych jednostkach czasu zleca
naliczanie kosztów rozmowy komponentowi AccountManager, służącemu do obsługi kont
klientów telefonii. Komponent AccountManager odpowiada również za realizację płatności
klientów. Dane o aktualnym stanie konta klienta, o historii rozmów, historii płatności
przechowywane są w aktywnym systemie zarządzania bazą danych ActiveJDO. Oprócz
realizacji funkcjonalności typowej dla bazy danych ActiveJDO jest w stanie wywoływać
operacje oferowane w dostępnych interfejsach pozostałych aplikacji. Ostatnim
wyróżnionym komponentem jest SMSSender udostępniający usługę wysyłania krótkich
wiadomości tekstowych. Znając architekturę systemu można zaprezentować możliwości
użycia ADBMS do wyrażania ważnych (z punktu widzenia prowadzonej działalności) reguł
biznesowych. W tym celu zdefiniowano kilka przykładowych reguł, których opis
zamieszczono poniżej:
− reguła 1: „Jeśli klient rozmawiał łącznie 100 minut w styczniu 2006 r. w godzinach
18-22 i nie skorzystał z promocji w grudniu 2005 r., a jego rachunek telefoniczny za
da
.b
w
w
pl
s.
30
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
Aktywny system zarządzania bazą danych jako kontroler homogenicznego środowiska aplikacji
ostatnie 3 miesiące wynosi łącznie więcej niż 1000 zł, wówczas podjęta zostanie
akcja wysłania SMS do klienta z ofertą tanich rozmów”;
− reguła 2: „Jeśli klient, który rozpoczął rozmowę i nie uregulował rachunku za
poprzedni miesiąc i stan zadłużenia jest większy niż 700 zł wówczas podjęta zostanie
akcja przerwania rozmowy”;
− reguła 3: „Jeśli klient rozpoczął 5 minutę rozmowy koszt minuty połączenia spada do
50%”.
w
id Mobile System
w
w
Komponent SMSSender
oferuje usługę wysyłania
krótkich wiadomości
tekstowych. Usługa ta jest
oferowana poprzez
interfejs SendMessage
InternetSMS to przykładowy komponent, którego
zadaniem jest realizacja żądań wysłania
wiadomości SMS. Żądania te są zgłaszane na
stronie internetowej przez klientów i po
przetworzeniu są przekazywane do komponentu
SMSSender, oferującego wysłanie
przygotowanej wiadomości.
InternetSMS
Activ eJDO
da
.b
SMSSender
Send Message
Call Handling
ActiveJDO to komponent
reprezentujący aktywny system
zarządzania bazami danych.
Baza reguł tego ADBMS
zawiera reguły biznesowe, które
w odpowiedzi na pewne
zdarzenia pozwalają na
kontrolowanie całego
środowiska aplikacji. Jako że
akcje reguł są wykonywalnymi
fragmentami kodu, mogą
korzystać z każdego interfejsu
oferowanego przez pozostałe
komponenty (SendMessage,
CallHandling, Payment). Dzięki
regułom ECA możliwe jest
wysyłanie sms-ów, przerywanie
rozmowy, modyfikowanie
parametrów naliczania kosztów
rozmowy itp. niezależnie od
przebiegu sterowania
komponentów.
Payment
Account Details
Count Up
CallManager
Komponent odpowiedzialny za zarządzanie kontami
klientów. Aby naliczać opłaty za wykonywane rozmowy
komponent AccountManager oferuje interfejs CountUp,
poprzez który będzie informowany o każdej upływającej
jednostce czasu każdego połączenia. W tym wypadku za
informowanie o upływających jednostkach
odpowiedzialny jest komponent CallManager. Kiedy
AccountManager dostaje dane o upłynięciu jednostki
czasu, wtedy dokonuje modyfikacji danych konta
rozmawiającego klienta. Dane kont przechowywane są w
aktywnej bazie danych i dostępne poprzez interfejs
AccountDetails.
pl
s.
Komponent CallManager przechowuje informacje
na temat aktywnych połączeń.
Komponent ten oferuje interfejs CallHandling,
poprzez który można:
- sygnalizować rozpoczęcie rozmowy
- sygnalizować zakończenie rozmowy.
Po rozpoczęciu rozmowy CallManager jest
odpowiedzialny za przekazywanie informacji o
upływających jednostkach każdego aktywnego
połączenia. Informacje te są przekazywane
poprzez interfejs CountUp do komponentu
AccountManager, który jest odpowiedzialny za
modyfikowanie stanu konta klientów.
AccountManager
Rys. 1. Komponenty przykładowego systemu zarządzającego kontami klientów telefonii
komórkowej wykorzystującego ADBMS do kontroli środowiska aplikacji
Cechą charakterystyczną tych reguł jest to, że każda z nich wpływa na działanie innej
części systemu. Oczywiście takich reguł może być w bazie reguł znacznie więcej, nic
również nie stoi na przeszkodzie, aby np. definiować nowe reguły w czasie działania
systemu.
31
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
R. Bar, Z. Mazur
w
Mechanizmem, który przychodzi z pomocą projektantowi bazy reguł przy określaniu
aktualności nadchodzących zdarzeń są interwały czasowe. Instancje dowolnego zdarzenia
mogą być weryfikowane pod względem czasu wystąpienia. Jeśli wystąpienie zdarzenia
będzie miało miejsce poza określonym interwałem czasowym, wówczas nie zostanie ono
nawet zasygnalizowane. Interwały czasowe podobnie jak zdarzenia dzielą się na proste i
złożone. Istnieją dwa rodzaje interwałów prostych:
− interwały pojedyncze określane są na podstawie daty początkowej i końcowej;
− interwały cykliczne określają powtarzające się przedziały czasu, których długość
zależy od przyjętej podstawy czasu (może to być rok, miesiąc, dzień itd. );
Przykładowo w trybie dziennym oczekujemy na zdarzenia każdego dnia pomiędzy
określonymi godzinami.
Zwiększenia precyzji w modelowaniu interwałów czasowych można dokonać
wykorzystując interwały złożone, które są skomponowane z innych interwałów czasowych:
− suma interwałów składowych określa wszystkie dostępne przedziały czasu
(niekoniecznie zazębiające się);
− część wspólna interwałów czasowych określa wyłącznie nakładające się na siebie
części przedziałów składowych.
Mając tak rozbudowany zestaw konstrukcji do definiowania interwałów czasowych, można
modelować bardzo wyszukane przedziały czasowe. Przykładowo możemy określić, że
spodziewamy się sygnalizowania zdarzeń między godziną 08:00 a 09:00 w poniedziałki,
środy i niedziele w latach 2005-2010 w miesiącach kwiecień oraz maj (dekompozycja na
interwały składowe wymaga zdefiniowania ośmiu interwałów, w tym dwóch złożonych).
Na rysunku 2. za pomocą diagramu obiektów UML przedstawiono dekompozycję
pierwszej reguły, kontrolującej aplikację SMSSender.
da
.b
w
w
cd Bonus Rule
Reguła jest wzywalana kiedy użytkownik wydzownił 100 minut w styczniu 2005
pomiedzy 18:00 a 22:00 godziną i dodatkowo nie wykorzystał promocji w
grudniu 2005. Akcja jest wykonywana wyłącznie gdy suma rachunków klienta w
oststnich 3 miesiącach przekroczyła 1000zł. Podczas wykonywania akcji
wysyłana jest krótka wiadomość tekstowa z ofertą promocyjną.
sygnalizacja nastąpi gdy zajdzie sekwencja
SEQ(initalEvent, terminationEvent)
ThreeMonths :
Condition
+terminationEvent
+initialEvent
DecemberPromoUnused :
Negativ eConstructor
+E
EnablePromo :
AbstractEv ent
SendSms :
Action
BonusRule :Rule
BonusEv ent :
SequenceConstructor
HundredMinutes :
HistoryConstructor
::HistoryConstructor
- N: int = 100
+TI
interwał prosty:
[01/12/2005 00:00:00,
31/12/2005 23:59:59]
+TI
interwał złożony: every day in
january 2005 between 18:00:00
and 22:00:00
Ov erlap :
Ov erlappingInterv al
January2006 :
SingleTimeInterv al
December2005 :
SingleTimeInterv al
+E
sygnalizowane prze
aplikację, gdy
użytkownik uruchomi
promocję
akcja wysyła SMS
używając aplikacji
SMSSender
pl
s.
sygnalizacja nastapi
gdy klient nie
wykorzystał promocji w
grudniu 2005
SELECT sum (total) FROM
payment_details WHERE
payment_date between NOW
and NOW - MONTHS(3)
przekracza wartość 1000
MinutesCounterIncrement
:ValueChangedEv ent
sygnalizowane przy
każdej zmianie
wartości atrybutu
obiektu
Hours18-22 :
CyclicInterv al
interval cykliczny:
EVERY_DAY between
18:00:00 and 22:00:00
Rys. 2. Diagram obiektów UML przedstawiający dekompozycję jednej z reguł ECA
32
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
Aktywny system zarządzania bazą danych jako kontroler homogenicznego środowiska aplikacji
w
Kontrola środowiska aplikacji odbywa się przez uruchamianie operacji zewnętrznych
aplikacji. W szczególności działania jednej aplikacji mogą generować w ADBMS takie
zdarzenia, które spowodują wykonanie pewnych operacji z użyciem innej aplikacji. Na
rysunku 3 znajduje się diagram sekwencji UML pokazujący sposób, w jaki ADBMS może
kontrolować działania jednej aplikacji w reakcji na zdarzenia pochodzące z innej aplikacji.
Jest to realizacja scenariusza, w którym wyzwolona została reguła kontrolująca pracę
aplikacji SMSSender. Można zauważyć, że dopiero drugie doliczenie minuty wyzwoliło
regułę, oznacza to, że pierwsza doliczona minuta albo była 99 minutą wykorzystaną
pomiędzy 18:00 a 22:00 w styczniu 2005 r. albo została naliczona jeszcze przed godziną
18:00. Drugie zdarzenie naliczenia minuty wyzwoliło regułę i natychmiast został obliczony
warunek. Warunek okazał się spełniony i wykonana została w sposób asynchroniczny akcja
polegająca na wysłaniu wiadomości SMS. Aby wykonanie akcji nie blokowało działania
reszty systemu, należy ustalić tryb sprzężenia transakcji na rozłączny.
w
sd ADBMS Controller
CallManager
AccountManager
Activ eJDO
BonusEv ent
BonusRule
TheeMonths
SendSms
SMSSender
User
w
startCall
countMinute
zdarzenie zwiększenia licznika impulsów nie
spowodowało wyzwolenia reguł przypisanych do
zdarzenia BonusEvent
incrementCounter
da
.b
Kolejne zdarzenie spowodowało
sygnalizację zdarzenia BonusEvent
matchEvent(e)
countMinute
w odpowiedzi na zdarzenie BonusEvent
aktywny system wyzwolił wszystkie reguły
zdolne do reakcji na to zdarzenie
incrementCounter
ok:= matchEvent(e)
wyzwolenie reguły BonusRule
[ok]: triggerRules
trigger
sprawdzenie, czy warunek reguły jest spełniony
isTrue:= evaluate
[isTrue]: executeAction
pl
s.
Aktywny system w reakcji na zajście zdarzenia
BonusEvent (rys. 2), wysyła wiadomość SMS
poprzez komponent SMSSender
sendSms
warunek jest spełniony, więc dochodzi do
wyzwolenia akcji (asynchronicznie), która wysyła
wiadomość SMS używając do tego komponentu
SMSSender
Rys. 3. Diagram sekwencji UML przedstawiający sposób sprawowania kontroli aktywnego
systemu zarządzania bazą danych ActiveJDO nad środowiskiem aplikacji
Rysunek 4 przedstawia sytuację, w której ADBMS kontroluje aplikację będącą źródłem
zdarzeń. Jest to scenariusz wyzwolenia reguły ECA, mówiącej o przerwaniu rozmowy
w razie wykrycia nieuregulowanego rachunku. W tym wypadku akcja wykonywana jest
jako operacja blokująca, po to, aby niemożliwe było zgłaszanie nowych zdarzeń, które
mogłyby omyłkowo wyzwolić reguły przyznające rabaty.
Należy wspomnieć, że w niniejszym przykładzie pominięto sposób, w jaki aktywny
system zarządzania bazą danych wyznacza zdarzenia składowe do budowy zdarzeń
złożonych. Ustalenie trybu konsumpcji zdarzeń [4] ma poważne konsekwencje w sposobie
działania ADBMS.
33
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
R. Bar, Z. Mazur
sd Close Connection
CallManager
AccountManager
Activ eJDO
CounterIncremented
Rej ectRule
Rej ectCondition
Rej ectAction
User
startCall
countMinute
w
incrementCounter
ok:= matchEvent
[ok]: triggerRules
trigger
isTrue:= evaluate
w
[isTrue]: execute
refuseConnection
w
Scenariusz przerywania rozmowy na skutek przekroczenia zadłużenia.
W momencie naliczenia kolejnej jednostki, doszło do wyzwolenia reguły RejectRule. W rozpatrywanym scenariuszu sprawdził się
warunek RejectCondition, który określa czy został przekroczony limit zadłużenia. Następnie zostaje wyzwolna akcja, która
natychmiast przerywa połączenie.
da
.b
Rys. 4. Diagram sekwencji UML ukazujący kontrolę aplikacji będącej jednocześnie
źródłem zdarzeń
4 Podsumowanie
pl
s.
Przedstawienie klasyfikacji ADBMS miało na celu ukazanie ich szerokiego spektrum
zastosowań. Klasa ADBMS zależy od roli, do jakiej aktywny system zarządzania bazą
danych został przeznaczony i od możliwego stopnia integracji ze środowiskiem aplikacji.
Do najprostszej klasy ADBMS będą należeć systemy zdolne do wykrywania wyłącznie
zdarzeń prostych. Można traktować je raczej jako alternatywę dla tradycyjnych DBMS, niż
zupełnie nową jakość. Pozostałe klasy ADBMS są obciążone odpowiedzialnością za
kontrolowanie działania aplikacji. Kontrola taka wymaga dostarczenia przez ADBMS
zaawansowanych typów zdarzeń oraz dodatkowych modyfikatorów, takich jak tryby
sprzężenia transakcji, tryby konsumpcji zdarzeń, interwały czasowe czy maskowanie
zdarzeń, co zostało opisane w podrozdziale trzecim. Na koniec należy wspomnieć jeszcze o
dwóch niezwykle ważnych kwestiach. Pierwszą z nich jest pominięty w tej pracy aspekt
rozwiązywania konfliktów podczas wyzwalania kilku reguł jednocześnie. Do takiej sytuacji
może dojść, kiedy wiele reguł ECA współdzieli tę samą definicję zdarzenia E. Kolejnym
ciekawym zagadnieniem, którego rozwiązanie stanowi duże wyzwanie jest problem
zapętlania się mechanizmu wyzwalania reguł, do którego dochodzi, jeśli działanie akcji
powoduje kaskadowe wyzwalanie reguł tworząc cykl.
Literatura
1.
Bar R., Mazur Z.: Reguły ECA jako nośnik aktywnego zachowania w wybranej dziedzinie.
W ramach pracy zbiorowej pod redakcją A. Kwietnia: Systemy czasu rzeczywistego. Kierunki
badań i rozwoju. Wydawnictwa Komunikacji i Łączności 2005.
34
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
Aktywny system zarządzania bazą danych jako kontroler homogenicznego środowiska aplikacji
2.
3.
4.
5.
w
Bar R., Mazur Z.: Aktywna warstwa trwałości JDO jako element systemu czasu rzeczywistego.
W ramach pracy zbiorowej pod redakcją A. Kwietnia: Systemy czasu rzeczywistego. Kierunki
badań i rozwoju. Wydawnictwa Komunikacji i Łączności 2005.
Cheesman J., Daniels J.: UML Components. A Simple Process for Specifying Component-Based
Software. Addison Wesley 2001.
Dittrich K. R., Gatziu S., Geppert A.: The Active Management System Manifesto: A Rulebase of
ADBMS Features. Computer Science. Springer 1995.
Dittrich K.R., Fritschi H., Gatziu S., Vaduva A.: Samos in hindsight: Experiences in building an
active object-oriented dbms. University of Zurich 2000.
Hyesun Lee: Support for temporal event in Sentiel: design, implementation and preprocessing.
Master Thesis. University of Florida 1996.
Philippe A., Marc D., Philippe R.: Using active database mechanisms to build cooperative
applications. Journal of Integrated Design and Process Science, vol. 3, no. 1, 1999.
6.
7.
da
.b
w
w
pl
s.
35
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
w
da
.b
w
w
pl
s.
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006