Prosessitietojen valvonta sumeiden laukaisimien avulla

Antoni Wolski
Antti Pesonen
Janne Karvonen
Tarik Bouaziz

VTT Tietotekniikka, PL1201, 02044 VTT
Sähköposti: <etunimi>.<sukunimi>@vtt.fi

Projektin kotisivu: http://www.vtt.fi/tte/projects/tempo/

AVAINSANAT aktiivinen tietokanta, laukaisimet, sumea päättely, prosessitietokanta


1 Johdanto

Kerättävän ja talletettavan tietomäärän jatkuva, räjähdysmäinen kasvu on yleisesti tiedostettu ilmiö. Raakatiedon jalostaminen ja siihen automaattisesti reagoiminen ovat nousseet kynnyskysymyksiksi valtavan tietomäärän hallinnassa. Yhtenä ratkaisuvaihtoehtona edelläkuvattuun ongelmaan on esitetty aktiivisen tietokannan käsitettä, jota on intensiivisesti tutkittu jo usean vuosikymmenen ajan (esim. [WiC96]). Aktiivinen tietokanta mahdollistaa nk. laukaisimien (trigger) avulla automaattisen reagoimisen ennalta määrättyihin tietokanta- tai ulkoisiin tapahtumiin. Tämä tarkoittaa sitä, että esimerkiksi tietoalkion lisääminen tietokantaan voi aiheuttaa tietokannan sisäisen tai ulkoisen toiminnon automaattisen käynnistämisen.

Olemme VTT Tietotekniikan TEMPO-projektissa laajentaneet aktiivisen tietokannan keskeistä käsitettä, laukaisinta, sumeaksi laukaisimeksi. Sumea laukaisin hyödyntää sumean logiikan teoriaa [Zad65], joka mahdollistaa inhimillistä päättelymekanismia mallintavan päättelyn. Sumeiden päättelysääntöjen perusteella sumea laukaisin aktivoi tai hylkää siihen kiinnitetyn toiminnon. Sumean laukaisimen kehittämiseen on myötävaikuttanut yhteistyö suomalaisen teollisuuden kanssa [PBW96].

Seuraavassa luvussa esitellään aktiivisen tietokannan laukaisimen perusmalli, ECA-malli. Luvussa 3 käydään läpi kehittämiemme sumeiden laukaisimien teoreettiset mallit. Luvussa 4 on TEMPO-projektissa kehitetyn aktiivisen tietokantapalvelimen prototyypin esittely, palvelimessa toteutetun sumean laukaisimen suorituskykytestin tulokset ja esimerkki sumean laukaisimen määrittämisestä TEMPO-palvelimessa.

2 Aktiivinen tietokanta ja ECA-laukaisin

Aktiivinen tietokanta on tietokanta, joka aktiivisesti reagoi määrättyihin tietokanta- tai ulkoisiin tapahtumiin. Aktiivisuuden käsite muuttaa perinteisen tietokannan passiivisesta tietovarastosta aktiiviseksi tiedonhallintajärjestelmän osaksi. Tyypillinen tietokantatapahtuma, johon tietokanta voidaan määritellä reagoimaan, on esimerkiksi tiedonlisäys (INSERT) tai päivitys (UPDATE). Tietokannan aktiivisuuden toteutusmekanismi on laukaisin (trigger).

Laukaisimen teoreettisesta mallista, ECA-mallista (kuva 1), vallitsee tutkijapiireissä lähes täydellinen konsensus. ECA tulee sanoista Event-Condition-Action (tapahtuma-ehto-toiminto). ECA-laukaisimen semanttinen toimintamalli on seuraava: Laukaisimen aktivoivan tapahtuman (E) seurauksena evaluoi laukaisimen ehto (C) ja jos ehto täyttyy, käynnistä toiminto (A). Laukaisimen aktivoiva tapahtuma voi olla tietokannan sisäinen tai ulkoinen tapahtuma. Laukaisimen ehto-osan muodostavat tietokannan hetkittäisen tilan pohjalta evaluoitavat predikaatit. Laukaisimen käynnistämä toiminto voi olla tietokantatoiminto tai tietokannan ulkoinen funktio.


Kuva 1. Aktiivisen tietokannan laukaisimen ECA-malli.

Aktiivisia tietokantoja on tutkittu ja kehitetty jo pitkään, mutta niiden peruskäsitteiden standardointi on vielä kesken. SQL3-standardi tullee sisältämään tietokannan aktiivisen käyttäytymisen perusrakenteet. Standardien puutteesta huolimatta kaupallisia toteutuksia tietokannan aktiivisista piirteistä on ollut markkinoilla jo vuosia.

3 Sumeat laukaisimet

Sumea laukaisin on uusi käsite aktiivisten tietokantojen teoriassa. Olemme VTT Tietotekniikan TEMPO-projektin puitteissa kehittäneet kolmen eritasoisen sumean laukaisimen teoreettiset mallit. Näistä ensimmäisen, C-sumean laukaisimen [BoW96a] prototyyppi on toteutettu TEMPO -tietokantapalvelimessa. CA-sumean ja ECA-sumean laukaisimen [BoW96b] käytännön toteutukset ovat suunnitteilla. Seuraavissa aliluvuissa esitetään kunkin laukaisimen teoreettinen perusta.

3.1 C-sumea laukaisin

C-sumea laukaisin on kolmesta esitetystä laukaisinmallista yksinkertaisin. Kirjain C viittaa ECA-mallin keskimmäiseen komponenttiin (Condition). C-sumeassa laukaisimessa tavallisen ECA-laukaisimen klassisen logiikan mukaista ehto-osaa laajennetaan siten, että se voi sisältää myös sumeaa logiikkaa. Tällöin ehtoon voi sisältyä täsmällisten lukuarvojen lisäksi myös sumean sääntöjoukkofunktion (SSF) kutsuja, joiden palauttamia arvoja voidaan käyttää vertailuoperaattoreiden operandeina. Sääntöjoukkofunktion kutsussa sumealle päättelymekanismille välitetään säännöissä käytettävien sumeiden operandien täsmälliset arvot reaalilukuina. Sääntöjoukon käsittelyä varten täsmälliset arvot sumeutetaan ja päättelyn sumea tulos edelleen täsmällistetään palautettavaksi sääntöjoukkofunktion kutsujalle. Täsmällistämiseen on olemassa useita eri menetelmiä, joista yleisimmin käytetty lienee ns. painopistementelmä (center of gravity). Alla on esimerkki C-sumean laukaisimen ehto-osasta, jossa on yhdistetty klassista ja sumeaa logiikkaa:

arvo1 > 0 AND SSF(arvo2) < 2

Tässä arvo1 ja arvo2 ovat reaalilukuarvoisia muuttujia (esim. tietokantataulun sarakkeita) ja SSF on sääntöjoukkofunktion kutsu. Luvussa 4.3 on täydellinen esimerkki C-sumean laukaisimen määrittelemisestä TEMPO-palvelimessa.

3.2 CA-sumea laukaisin

CA-sumea laukaisin laajentaa C-sumean laukaisimen mallia sumeuttamalla laukaisimen suorittaman toiminnon valinnan. C-sumeassa laukaisimessa ehto-osan täyttyessä laukaisin käynnistää tietyn ennaltamäärätyn toiminnon. CA-sumeassa laukaisimessa käynnistettäviä toimintoja saattaa olla useita ja käynnistettävien toimintojen valinta tapahtuu vasta ajonaikaisesti, soveltamalla sumeaa logiikkaa suoritettavien toimintojen valinnassa.

3.3 ECA-sumea laukaisin

ECA-sumea laukaisin kehittää ECA-malliin pohjautuvaa sumeaa laukaisinta edelleen tuomalla mukaan sumean tapahtuman käsitteen. Tapahtuman sumeus ilmaistaan kiinnittämällä tapahtumalle sen merkitsevyysaste. Mitä merkittävämmästä tapahtumasta laukaisimen kannalta on kyse, sitä suurempi on tapahtuman merkitsevyysaste. Tapahtuman merkitsevyysaste otetaan huomioon laukaisimen käynnistämiä toimintoja valittaessa. Tämä edellyttää sitä, että toiminnot on järjestetty merkitsevyytensä mukaiseen järjestykseen.

4 Sumean laukaisimen toteutus TEMPO-palvelimessa

TEMPO-palvelin on C-sumean laukaisimen mekanismilla varustettu aktiivisen tietokantapalvelimen prototyyppi. Se on VTT Tietotekniikassa RAPID-projektin puitteissa kehitetyn RapidBase-palvelimen [WKP96] laajennos. RapidBase on aktiivinen, keskusmuistipohjainen tietokantapalvelin, joka on kehitetty erityisesti prosessiteollisuuden mittaustietojen aikasarjojen talletukseen. RapidBase-palvelimen kyselykieli RQL (RAPID Query Language) on kehitetty SQL:n pohjalta. TEMPO-palvelimen laajennettua toiminnallisuutta varten RQL -kieltä on edelleen kehitetty RQL/F -kieleksi (RAPID Query Language / Fuzzy).

TEMPO-palvelin on toteutettu C++ -kielellä ja sen toteutusalustoina ovat Unix (HP-UX) ja Windows NT. Sumean päättelykoneen toteutuksessa on hyödynnetty CFlie-kirjaston rutiineja. (CFlie on alunperin kehitetty Robotiikan Instituutissa Zurichissä, Sveitsissä. Sittemmin se on konvertoitu C-kielelle Hawthornin teknillisessä korkekoulussa Australiassa). Demonstraatio-ohjelmisto (Windows NT ja 95) on ladattavissa VTT Tietotekniikan Internet-sivuilta (http://www.vtt.fi/tte/projects/tempo/).

4.1 Palvelimen yleinen arkkitehtuuri

Kuvassa 2 on esitetty TEMPO-palvelimen keskeiset komponentit ja niiden välinen vuorovaikutus. Kuvan komponentit muodostavat palvelimen käyttöjärjestelmätasoisen prosessin. Palvelinprosessi ylläpitää verkkoyhteyksiä RQL/F -pyyntöjä esittäviin asiakasprosesseihin sekä toimintopalvelimiin, joille palvelin lähettää laukaisimien toimintopyynnöt.

Kuva 2. TEMPO-palvelimen yleinen arkkitehtuuri.

Seuraavassa luettelossa on kuvassa 2 esiintyvien komponenttien lyhyet kuvaukset:

Kuvan 2 nuolet kuvaavat laukaisimen ajonaikaista käsittelyä. Asiakas lähettää verkon välityksellä palvelimelle tiedon päivityspyynnön RQL/F -komennon muodossa. Komento välitetään RQL/F -kielen tulkille (A), joka lähettää tiedon päivityspyynnön tietokantamoottorille (B).

Laukaisin aktivoituu sille määrätyn tapahtuman seurauksena. Tietokantamoottori rekisteröi ja välittää eteenpäin tiedon yksinkertaisista tietokantatapahtumista, kuten tiedon lisäyksestä, päivityksestä tai poistosta (1a). Ajastintapahtumat generoi erityinen Ajastinkäsittelijä (Timer Manager) (1b). Mikäli aktivoituneelle laukaisimelle on määritelty ehto-osa, sen evaluoimiseen käytetään predikaattijärjestelmän palveluja (2). Predikaattijärjestelmä käyttää tietokantamoottorin palveluja predikaattien laskennassa tarvittavien, tietokantaan talletettujen arvojen hakuun (3). Jos kyseessä on sumea predikaatti, sumea päättelykone johtaa predikaatin sumean operandin täsmällisen arvon (4). Kun predikaattien totuusarvot on laskettu, predikaattijärjestelmä palauttaa totuusarvot laukaisinkäsittelijälle, joka puolestaan lähettää toimintopyynnön (5), mikäli laukaisimen ehto-osa täyttyy [Bou97].

4.2 Sumean laukaisimen suorituskyky

Sumean laukaisimen suorituskyky mitattiin testillä, jossa tietokantatauluun lisättiin sumean laukaisimen aktivoivia rivejä täydellä kuormalla. Laukaisin määriteltiin siten, että sen aktivoinnit eivät johtaneet toimintopyyntöihin. Laukaisimen suorituskyky eristettiin palvelimen muusta toiminnasta aiheutuvasta viiveestä ajamalla testi kahteen kertaan; ensin yhdellä laukaisimella ja toisessa testissä kahdella identtisellä laukaisimella. Laukaisimen suorituskyky saatiin jakamalla testien suoritusaikaero tietokantaan lisättyjen rivien lukumäärällä. Vertailun vuoksi testi suoritettiin myös normaalilla laukaisimella, ilman sumeaa päättelyä. Testissä käytetty tietokonelaitteisto oli 133 MHz Pentium PC, jossa oli 32 MB keskusmuistia ja Windows NT käyttöjärjestelmä. Tietokannan koko säädetiin sellaiseksi, että käyttöjärjestelmässä ei tapahtunut sivutusta.

Testissä käytettyjen sääntöjoukkojen säännöt koostuivat kahdesta ehdosta ja yhdestä johtopäätöksestä, eli ne olivat muotoa IF ehto1 AND ehto2 THEN johtopäätös. Testissä käytettyjen laukaisimien ehto-osat olivat yksinkertaisia, eli niissä käytettiin vain yhtä predikaattia.

Sumean laukaisimen ehto-osan evaluoimiseen kului kahdeksan säännön sääntöjoukolla noin 0,45 ms. 64 säännön sääntöjoukolla ehdon evaluoiminen kesti noin 0,55 ms. Normaalilla laukaisimella, ilman sumeaa päättelyä, vastaava aika oli noin 0,1 ms (ks. Kuva 3).

Kuva 3. Sumean laukaisimen suoritusajat.

Sumeasta päättelystä aiheutuva suorituskyvyn lasku on selvästi nähtävissä. Suorituskykyero normaalin ja sumean laukaisimen välillä on seurausta sumean päättelyprosessin auheuttamasta lisälaskennasta. On kuitenkin huomattavaa, että sääntöjoukon koon kasvattaminen aiheuttaa vain logaritmisen kasvun sumeaan päättelyyn kuluvaan aikaan.

4.3 Esimerkki C-sumeasta laukaisimesta

C-sumean laukaisimen määrityksessä on kolme vaihetta: i) lingvististen tyyppien määritys, ii) sääntöjoukon muodostus ja iii) laukaisimen määritys. Seuraavassa käydään esimerkinomaisesti läpi sähkömoottorin lämpötilakäyttäytymistä tarkkailevan laukaisimen määrittäminen TEMPO-palvelimessa.

4.3.1 Lingvistiset tyypit

Lingvistinen tyyppi on sumean logiikan keskeisin käsite. Sen arvojoukko koostuu lukuarvojen sijaan sanoista, lingvistisistä termeistä. Kukin termi määritellään jäsenyysfunktion (membership function) avulla. Esimerkkilaukaisinta varten tarvitsemme lingvistiset tyypit 'Lämpötila', 'Nopeus' ja 'HälytysTaso'. Tyyppien arvojoukot (termijoukot) ovat seuraavat: A(Lämpöila) = {matala, normaali, korkea}, A(Nopeus) = {pieni, normaali, suuri} ja A(HälytysTaso) = {neutraali, matala, keskitaso, korkea}. Tyypin 'Lämpötila' arvojoukon määritys voidaan esittää graafisesti kuvan 4 esittämällä tavalla.


Kuva 4. Lingvistisen tyypin 'Lämpötila' arvojoukon graafinen esitys.

x-akselille asetetulle täsmälliselle arvolle voidaan laskea kunkin termin jäsenyysaste (= täsmällisen arvon sumeutus). Esimerkiksi arvon 90 C jäsenyysaste termeille 'matala' ja 'normaali' on 0.5 ja termille 'korkea' jäsenyysaste on nolla. RQL/F -kielellä lingvistisen tyypin 'Lämpötila' määritys annetaan seuraavasti:

CREATE LINGUISTIC TYPE Lämpötila float
  matala TRAPEZOIDAL (0, 0, 80, 100),
  normaali TRAPEZOIDAL (80, 100, 140, 160),
  korkea TRAPEZOIDAL (140, 160, 200, 200)
)

4.3.2 Sääntöjoukko

Sumean logiikan sääntö on muotoa IF X IS A THEN Y IS B, jossa X ja Y ovat lingvistisiä muuttujia ja A ja B ovat näiden muuttujien arvoja, lingvistisiä termejä. Sääntöjoukko on kokoelma edellisen kaltaisia sääntöjä.

TEMPO-palvelimessa sääntöjoukko on toteutettu sääntöjoukkofunktiona, jota kutsumalla sumea päättely käynnistyy. Päättelyn aluksi funktiokutsussa välitetyt sääntöjen ehtomuuttujien täsmälliset arvot sumeutetaan, jonka jälkeen päättely sumeiden sääntöjen avulla voidaan suorittaa. Päättelyn tuloksena saatu sumea johtopäätös täsmällistetään ja palautetaan funktion kutsujalle. Sähkömoottorin lämpötilakäyttäytymistä tarkkailevaa laukaisinta varten määrittelemme sääntöjoukon LämpöHälytys RQL/F -kielellä seuraavasti:

CREATE RULE SET LämpöHälytys (lämpötila Lämpötila, nopeus Nopeus)
  HälytysTaso DEFAULT neutraali (
    IF Lämpötila IS normaali AND Nopeus IS suuri THEN matala,
    IF Lämpötila IS korkea AND Nopeus IS suuri THEN keskitaso,
    …
  )

Sääntöjoukon määritelmässä esiintyvä termi HälytysTaso on sumean päättelyn lingvistinen tulostyyppi. DEFAULT avainsanan jälkeen oleva termi 'neutraali' on kyseistä tyyppiä oleva päättelyn sumea johtopäätös, mikäli yksikään sääntöjoukon säännöistä ei laukea.

4.3.3 C-sumea laukaisin

C-sumea laukaisin käyttää sääntöjoukkofunktion palauttamaa sumean päättelyn tulosta laukaisimen ehto-osassa olevan predikaatin evaluointiin. Esimerkkimme sähkömoottorin lämpötilakäyttäytymisen seurannasta päättyy itse laukaisimen määrittämiseen RQL/F -kielellä. Määrittelemme laukaisimen siten, että sen ehto-osa toteutuu ja siten toimintopyyntö generoidaan, jos sääntöjoukkofunktio palauttaa suuremman arvon kuin kaksi. Oletuksena on, että moottorin lämpötila-arvot talletetaan TEMPO-palvelimen 'MoottorinLämpö' tietokantataulun 'AsteMäärä' sarakkeeseen ja moottorin nopeus saman taulun 'PyörimisNopeus' sarakkeeseen.

CREATE TRIGGER MoottorinLämpöHälytin
  INSERT ON MoottorinLämpö
  WHEN ( LämpöHälytys(AsteMäärä, PyörimisNopeus) > 2 )
  (LämpöHälytys@MoottoriHälytykset)

Jos laukaisimen ehto-osa toteutuu, palvelin lähettää toimintopyynnön erillisenä prosessina olevalle MoottoriHälytykset toimintopalvelimelle. Toimintopalvelin suorittaa toimintopyynnössä identifioidun funktion LämpöHälytys.

5 Johtopäätökset

Kerättävän raakatiedon määrä kasvaa kiihtyvällä vauhdilla. Valtava raakatiedon määrä vaatii uusia menetelmiä tietomäärän hallitsemiseksi. Olemme VTT Tietotekniikassa tutkineet sumean logiikan ja aktiivisen tietokannan teorioiden yhdistämistä prosessitiedon hallintamenetelmän kehittämiseksi ja olemme päätyneet uuteen, humaania päättelyä mallintavaan teknologiaan, sumeaan laukaisimeen. Olemme myös toteuttaneet aktiivisen tietokantapalvelimen prototyypin, jossa perinteisten ECA-mallisten laukaisimien lisäksi voidaan määrittää sumeita laukaisimia.

6 Lähteet

Bou97 Bouaziz, T., Karvonen, J., Pesonen, A. ja Wolski, A. Design and Implementation of TEMPO Fuzzy Triggers. Proc. 8th International Conference and Workshop on Database and Expert Systems Applications (DEXA'97), September 1 - 5, 1997, Toulouse, France. (ftp://ftp.vtt.fi/pub/projects/rapid/tempo-design.ps).

BoW96a Bouaziz, T. ja Wolski, A. Incorporating fuzzy inference into database triggers. Research Report No TTE1-2-96, VTT Information Technology, Espoo, Finland, November 1996. (ftp://ftp.vtt.fi/pub/projects/rapid/f-infer-triggers.ps).

BoW96b Bouaziz, T. ja Wolski, A. Applying Fuzzy Events to Approximate Reasoning in Active Databases. Proc. IEEE International Conference on Fuzzy Systems, July 1 - 5, 1997. (ftp://ftp.vtt.fi/pub/projects/rapid/f-event-triggers.ps).

PBW96 Pesonen, A., Bouaziz, T. ja Wolski, A. Case Study: Applying Fuzzy Triggers to a Drive Control System. Research Report No. J-6/96, VTT Information Technology, Espoo, Finland, August 1996.

WKP96 Wolski, A., Karvonen, J. ja Puolakka, A. The RAPID Case Study: Requirements for and the Design of a Fast-Response Database System. Proc. First Workshop on Real-Time Databases (RTDB'96), March 7-8, Newport Beach, CA, USA, s. 32-39. (ftp://ftp.vtt.fi/pub/projects/rapid/case.ps).

WiC96 Widom, J. ja Ceri S. (Eds.) Active Database Systems: Triggers and Rules For Advanced Database Processing. Morgan Kaufman, 1996.

Zad65 Zadeh, L. A. Fuzzy Sets. Information Control, Vol. 8(3), June 1965, s. 338-353.