En database er en samling data lagret på et elektronisk medium. Datasamlingen er organisert og strukturert etter en bestemt strategi eller modell – en databasemodell. Data brukes og vedlikeholdes gjennom et bestemt programsystem som benevnes databasesystem eller databasehåndteringssystem. Det finnes mange databasemodeller og tilhørenede databasesystemer. Årsaken er teknologisk og metodemessig utvikling, ulike løsningsstrategier og aktører og at det finnes mange forskjellige behov. 

Et fullverdig databasesystem baseres på følgende:

  • databasen inneholder sin egen beskrivelse (databaseskjema)
  • lagringen er sikker og korrekt selv om databasen har mange samtidige brukere, plutselig stopp oppstår (årsak kan for eksempel være strømbrudd, program- eller maskinfeil), eller hvis lagringsmediet feiler
  • databasen beskyttes mot brukere uten adgangsrettigheter
  • brukerne får ett eller flere grensesnitt som gir fleksibel og effektiv søking, manipulering av data, og sammenstilling og presentasjon av data

Databasen inneholder unike ressursenheter – poster eller dataobjekter – som mange samtidige brukere konkurrerer om å bruke (lese, skrive eller oppdatere). Dette skiller et dataobjekt fra andre typer ressurser som lagerplass og CPU-kapasitet. Et dataobjekt kan ikke erstattes, og databasesystemet må derfor sørge for at konkurransen om dataobjektene, systemfeil eller ytre hendelser ikke fører til at data går tapt eller får feil verdi.

En mekanisme for å sikre korrekt utførelse og hindre tap eller korrupsjon av data er å utføre databaseoperasjonene innenfor en enhet som kalles en transaksjon

Systemer basert på relasjonsmodellen har lenge vært dominerende i databasemarkedet. Alle operasjoner på relasjonsmodellen er definert i en standard som kort kalles SQL-standarden. SQL står for Structured Query Language - på norsk kalt strukturert spørrespråk – men SQL omfatter vesentlig mer enn spørrespråket.

SQL ble første gang standardisert i 1986, og til nå (2016) har det kommet åtte endringer og tillegg. Eksempler på systemer som følger relasjonsmodellen inkluderer Ingres, Oracle, SyBase (kjøpt opp av SAP i 2010), DB2, SQL Server og MySQL. 

Den tradisjonelle databasen lagrer data i form av poster. Hver post inneholder et antall felter der ett eller flere felter i kombinasjon utgjør en entydig identifikasjon – postens nøkkel. Databasene vokste ut av de postorienterte filsystemene, der alle poster var lagret i en sekvensiell fil. Databasene utviklet strukturer, eller relasjoner, mellom posttypene. Først kom en ren trestruktur også kalt hierarkisk modell med IBMs IMS. Poster i trestrukturer lar seg linearisere, det vil si at de kan lagres etter hverandre på sekvensielle medier, for eksempel magnetbånd.

Med inntog av disker som er adresserbare, kunne en ved hjelp av pekere (adresser) hoppe fra en post til en annen, og det gir muligheter for mer avanserte strukturer hvor en lenker sammen poster. Datamodeller basert på lenker kalles settbaserte modeller. Postene i en lenke danner et sett, og posten som lenken starter fra blir settets eierpost. Når samme post inngår i flere lenker dannes en nettverksstruktur. CODASYL foreslo i 1971 en standard for databasesystemer, både strukturell utforming og operasjoner, basert på en nettverkstruktur av lenkede lister.  

De settbaserte (lenkede lister av poster) var omstendelige å programmere. I 1970 lanserte Edgar Frank Codd relasjonsmodellen som prioriterte enkelthet og enklere programmering, samt at den var basert på en helhetlig teoretisk modell. Problemet var at ingen ennå kunne fortelle hvordan systemet kunne realiseres i praksis slik at en oppnådde akseptabel kapasitet. 

1970-årene var preget av at operative databaser var realisert av databasesystemer basert på settmodellen, enten trestrukturert modell eller nettverksmodellen (CODASYL-modellen). Forskningsmiljøene prøvde å finne løsninger på hvordan relasjonsmodellen kunne realiseres for praktisk bruk. Blant annet ble det bygget flere databasemaskiner med spesialisert maskinvare.

De postorienterte databasene (sett- og relasjonsmodellbaserte) er gode på håndtering av formaterte data i poster, men lite fleksible ved behov for å lagre andre typer data som tekst, film, video og lyd, tegninger, kart, matriser og vektorer, og data med komplekse eller variable strukturer som for eksempel dokumenter.

Det finnes derfor en rekke spesialiserte databasetyper som kan håndtere dette. For eksempel blir markeringsspråkene SGML og XML brukt for å strukturere dokumenter. Objektorienterte databaser er brukt i geografiske informasjonssystemer (GIS). For å lagre fakta og regler er det utviklet deduktive databaser. 

Fritekstsøk kan utføres gjennom spesielle algoritmer på egne fritekst-databaser som inneholder ustrukturert informasjon. Et norskutviklet system for fritekstsøk er SIFT (Søking I Fri Tekst) fra Statens Datasentral AS (1972-1995).

Tradisjonelt har det vært slik at databaser oppdateres, den gamle verdien overskrives med den siste og mest gyldige verdien. Dette fører til at historikken, det vil si de historiske data, går tapt. Skal en ta vare på historikken må det bygges inn i databasemodellen, altså den aktuelle databases utforming eller struktur. Eventuelt kan en kan ha en database som aldri sletter eller overskriver data - en såkalt temporal database. Nye verdier for en attributt lenkes inn i front på kjeden av alle foregående verdier, og til alle verdier hører en tidsangivelse, et tidsstempel

En distribuert database er lokalisert på på forskjellige maskiner som er knyttet sammen i et nettverk. Hver maskin med sine data og sitt databasehåndteringsprogram kalles en node. Distribuerte databaser forekommer i en rekke varianter. Hvis alle noder er like – altså at de har samme databaseprogram og databaseskjema – og er knyttet sammen i et høykapasitets nettverk, har vi en parallell databasemaskin.

Den andre ytterlighet er at maskiner og databaseprogrammer er forskjellige – altså at nodene har individuelle databaseskjema – og maskinene er knyttet sammen av det alminnelige internettet.

Korrekt utførelse, altså operasjoner som sikrer et teknisk korrekt resultat, er teknisk krevende og av og til umulig i distribuerte databaser. Noder kan falle ut, det samme kan deler av nettet og lange forsinkelser kan oppstå.  

Settmodelbaserte databaser programmeres proseduralt. Dette betyr at en må navigere seg gjennom databasen post for post langs tilgjenglige veier for å få fram det ønskede resultat. Dette krever hyppig kommunikasjon fram og tilbake mellom bruker- og databaseprogram. 

I relasjonsmodellen kan oppgaver spesifiseres ved å formulere betingelser som resultatet skal oppfylle. Deretter vil databasesystemet selv finne ut hvordan det best mulig kan beregne resultatet. Denne programmeringsmåten gir kompakte programmer som også er egnet til å overføre oppgaver til maskiner i et nettverk.

Foreslå endringer i tekst

Foreslå bilder til artikkelen

Kommentarer

28. desember 2016 skrev Kjell Bratbergsengen

Bør overføres til Databaseteknologi og informasjonsgjenfinning

28. desember 2016 svarte Guro Djupvik

Det har du rett i, flyttet den nå.

Har du spørsmål om artikkelen? Skriv her, så får du svar fra fagansvarlig eller redaktør.

Du må være logget inn for å kommentere.