Illustra ORDBMSHarald Holone
InnledningVi produserer stadig mer kompleks informasjon som vi ønsker å ta vare på og presentere i forskjellige sammenhenger. Tidligere har vanlige relasjonsdatabaser (RDBMS) vært løsningen på de fleste databaseproblemer. De siste årene har det kommet endel objektorienterte databasesystemer (OODBMS) for håndering av komplekse data. Svakheten ved disse har vært mangelen på et strukturert (og standard) spørrespråk for å manipulere data i databasen. Derfor er det lagt ned mye arbeid på å kombinere tradisjonelle relasjonsdatabaser og objektorienterte databaser. Resultatet er objektrelasjonsdatabaser (ORDBMS). Illustra er en av dem.En del ORDBMS baserer seg på en tradisjonell RDBMS-motor med et objektorientert skall på toppen for å gi tilgang til objektrelasjonsteknologien. Dette medfører ofte en svekket ytelse og begrensninger når det gjelder fleksibilitet. Illustra er skrevet som et ORDBMS, der de to teknologiene er integrert fra bunnen av. Dette gir en god ytelse og store muligheter for utbygging av funksjonalitet. Jeg har testet Illustra Server en periode for å vurdere et innkjøp av en flerbrukerversjon av programvaren. I denne artikkelen vil jeg skrive litt om mine erfaringer med Illustra og kort om hvilke muligheter jeg ser i denne teknologien sett i sammenheng med våre aktiviteter på avdelingen.
Illustra ORDBMSHar man noe erfaring med SQL er det å jobbe med Illustra ikke noe problem. I enbrukerversjonen jeg har testet har all kommunikasjon med databasene skjedd via et klientprogram som heter Illustra Query Tool (IQT). Her kan man gjøre det man trenger av administrative oppgaver, i tillegg til manipulering av data i databasene.Illustra støtter SQL-92, og man kan jobbe med databasene som om det var en tradisjonell relasjonsdatabase. Det vil si at å opprette tabeller, populere disse, hente ut data osv gjøres med SQL som man er vant med fra relasjonsdatabasene. I tillegg til SQL-92 har Illustra definert et sett med funksjoner og kommandoer for å få tilgang til objektrelasjonsdelen av Illustra. Min erfaring er at dette tillegget virker som en naturlig utvidelse av SQL-92. Objektrelasjonsdelen er kanskje mest tydelig i muligheten til å definere egne datatyper (basert på kjente datatyper eller helt nye datatyper), arv mellom datatyper og arv mellom tabeller.
Her følger et eksempel som viser hvordan man kan definere en
sammensatt datatype for en person og hvordan man lager en datatype for
en ansatt som arver egenskaper fra typen person.
På denne måten arver typen
Nå er datatypene beskrevet, og jeg vil her vise hvordan man lager en
tabell av typen
At tabellen
få ut alle recordene fra person og alle recordene fra ansatt. Man kan også velge ut bare de recordene som ligger i tabellen person ved å skrive
Oppretter man tabeller som arver fra Funksjoner er også en viktig del av Illustras fleksibilitet. Funksjonene kan skrives i SQL eller eksternt i C++. Funksjonene kan ta parametre som f.eks integer, text og egendefinerte datatyper. Den siste muligheten er spesiellt interessant, fordi den kan brukes i forbindelse med virtuelle felter. Virtuelle felter er felter i en tabell som er definert med navn, datatype og stikkordet virtual. Navnet på det virtuelle feltet referer til en funksjon som tar den aktuelle datatypen som parameter. Ved uthenting av data fra tabellen vil funksjonen kalles for hver record, og en beregnet verdi presenteres. Et eksempel her kan være beregning av en persons alder basert på fødselsdato.
DatabladerEt datablad i Illustra er en samling av datatyper og funksjoner som er laget for å løse en spesiell oppgave. Som eksempler kan nevnes Web DataBlade som gjør det mulig å håndtere html-dokumenter i databasen med fletting av statiske og dynamiske data fra databasen. Image DataBlade innheholder en datatype for å lagre bilder i databasen og en del funksjoner for å manipulere bildene. Å få tilgang til slike funksjoner i databasen er et stort pluss f.eks i forbindelse med vedlikehold av Web-sider.I tillegg til at man kan kjøpe ferdige datablader kan man også utvikle egne datablader. Det finnes et DataBlade Developers Toolkit for å gjøre dette på en standarisert måte, men siden et datablad kun er en samling av datatyper og funksjoner kan man oppnå det samme ved å lage disse direkte i databasen.
Web DataBladeWeb DataBlade er en samling med funksjoner og definisjoner av tags. Et program, webdriver.exe, er grensesnittet mellom web-serveren og illustra-databasen. Kort fortalt fungerer det på denne måten:Html-sider lagres i databasen. Disse kan være helt vanlige html-dokumenter, men de kan også inneholde spesielle tags som beskriver sql-spørsmål, håndtering av variable osv. Sidene hentes ut av Illustra ved hjelp av webdriver.exe. Dersom sidene inneholder spesielle tags vil disse bli tolket og utført før dokumentet når klienten. På denne måten kan man flette statisk informasjon med dynamisk informasjon fra databasen.
Her er et eksempel på en html-fil som benytter den nye tag'en
Her brukes tag'en Med Web DataBlade kan man enkelt legge flere sql-setninger inn i et html-dokument, stille betingelser for når forskjellige sql-setninger skal utføres, hente ut binære objekter (f.eks bilder) osv.
Image DataBladeImage DataBlade er et datablad som godt illustrerer mulighetene som datablad-teknologien gir. Dette databladet er laget for bildebehandling, det håndterer ca 50 bildeformater i sort/hvitt, gråtoner og farger. Det defineres en ny datatype, image, for å lagre bildene i databasen. Har man en bitmap-fil på disk er det en enkel sak å legge denne inn i databasen. Man lager en tabell (bilder) der et av feltene (bilde) er av typen image, og så kan man bruke en insert-setning for å legge inn bildet i tabellen:
Her angis bitmapformatet på bildet og hvor det ligger. Nå ligger bildet i databasen, og kan manipuleres og spørres mot. Ønsker man f.eks å vite hvor stort bildet er kan man gjøre slik:
Det finnes også funksjoner for manipulering av bilder. Ønsker man f.eks å populere en annen tabell med krympede utgaver av bildene i den første tabellen kan man gjøre slik:
Det ville være naturlig å kombinere Web DataBlade med Image DataBlade, og dette skal være mulig. Det ser ut til at det er noe galt med NT-distribusjonen, Informix ser på saken.
Mulige bruksområder for IllustraMed muligheten for å definere egne datatyper og funksjoner byr Illustra på mange muligheter for vår virksomhet, både i forskning og undervisningssammenheng. Man kan tenke seg å utvikle egne datablader som håndterer nevrale nettverk, fuzzy logikk og numeriske metoder. Også i multimediasammenheng finnes det muligheter, kanskje særlig i WWW-sammenheng.Det vil også være naturlig å ta med Illustra som en del i databasekurset, i første omgang i forbindelse med prosjektoppgavene som er en sentral del av kurset. I mars kommer Informix-Universal Server for NT, en databaseprogrampakke som bygger på RDBMS-teknologien fra Informix og ORDBMS-teknologien fra Illustra. Hvis dette ser lovende ut vil det være naturlig å vurdere dette som grunnlaget for databasekurset som helhet, og gå bort fra Oracle som basis.
OppsummeringIllustra Server er en databasemotor med spennende teknologi og mange muligheter. Gjennom den perioden jeg har testet programvaren har jeg fått et bilde av et produkt som virker stabilt og ikke minst gjennomtenkt. Det er lett å lære og lett å bruke. De svake punktene jeg har funnet ved produktet dreier seg om administrasjon og sikkerhet. Det er tydelig at det er teknologien som står i sentrum. Dette har jeg snakket med Informix om, og de bekrefter dette, de kjøpte Illustra p.g.a. den spennende teknologien. I følge Informix vil lanseringen av Informix-Universal Server rette på de manglene som finnes i Illustra idag, og samtidig utvide funksjonaliteten ytterligere.
Videre lesingUnder testingen av Illustra Server har jeg dokumentert de delene som er testet. For de interesserte kan denne dokumentasjonen finnes på følgende URL: http://eddie.hiof.no/dok/illustra/
Illustras hjemmeside:
Informix' hjemmeside:
Copyright: 1996, Høgskolen i Østfold. Last Update: 28.06.97, Thomas Malt. |