Redigerer
Database
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
En '''database''' er strukturert samling av relaterte [[data]], begrepet er vanligvis knyttet til elektroniske [[datamaskin|datasystemer]]. Et databasesystem skal kunne behandle store mengder data effektivt, motsetningsfritt og sikkert. Databasesystemet skal sikre at endringer og tilføyelser ikke fører til motsetninger eller feil, og skal kunne levere riktig informasjon effektivt til brukere og programvare. Et databasesystem har to deler – [[databasehåndteringssystem|databasehåndteringssystemet (DBMS)]] som er [[programvare]]n som administrerer systemet, og selve databasen, som er data som håndteres av systemet. DBMSen organiserer dataene og styrer all lesing og skriving til databasen. For å kommunisere med DBMS-en brukes et [[spørrespråk]]. Det finnes ulike sorter databasesystemer. Metoden man bruker for å organisere data kalles en datamodell. Den vanligste formen for databasesystem er basert på relasjonsmodellen. ==Datamodell== [[Fil:Network Model.svg|thumb|150px|Nettverksdatabase.<ref name="USDT01">[http://knowledge.fhwa.dot.gov/tam/aashto.nsf/All+Documents/4825476B2B5C687285256B1F00544258/$FILE/DIGloss.pdf Data Integration Glossary] {{Wayback|url=http://knowledge.fhwa.dot.gov/tam/aashto.nsf/All%2BDocuments/4825476B2B5C687285256B1F00544258/%24FILE/DIGloss.pdf |date=20120218233448 }}, U.S. Department of Transportation, August 2001.</ref>]] Databasemodellen er en teori eller en spesifikasjon for hvordan en database er strukturert og brukt. Det første kommersielle DBMS, IDS, var en '''nettverksdatabase'''. [[Fil:Hierarchical Model.svg|thumb|150px|right|Hierarkisk database.<ref name="USDT01" />]] IMS, som ble det første utbredte databasesystemet var en '''hierarkisk database'''. [[Fil:Relational Model.svg|thumb|150px|Relasjonsdatabase.<ref name="USDT01"/>]] I moderne tid er den vanligste formen for databasesystem [[relasjonsdatabase]]r. Relasjonsdatabaser bygger på relasjonsmodellen, som er basert på [[formal logikk|førsteordens predikatlogikk]] og ble formulert i 1969–70 av [[Edgar F. Codd]].<ref>[[Edgar F. Codd]], ''"Derivability, Redundancy, and Consistency of Relations Stored in Large Data Banks"'', IBM Research Report, 1969</ref><ref>[[Edgar F. Codd]], ''"A Relational Model of Data for Large Shared Data Banks"'', in Communications of the ACM, 1970.</ref> Sentrale begreper i Codds arbeider er [[normalisering]] og [[relasjonsalgebra]]. I en relasjonsdatabase er dataene organisert i tabeller. Disse tabellene bindes sammen og reguleres av [[nøkkel (database)|nøkler]]. Det finnes en rekke ulike databasehåndteringssystemer for relasjonsdatabaser. Informasjonen i Wikipedia er eksempelvis organisert i en MySQL relasjonsdatabase. [[Objektdatabase]]r er basert på samme grunnprinsipper som datastrukturer i [[objektorientert programmering]]. I objektdatabaser lagres informasjon i objekter som står i relasjoner til hverandre. Objekter er organisert i klasser og man bruker vanlige programmerings-strukturer som subklasser og interface. [[Objektrelasjonell database|Objektrelasjonelle databaser]] er basert på relasjonsmodellen, men de har en utvidet funksjonalitet som gjør at de håndtere objekter/ sammensatte faktatyper. Det er også mulig å lage pekere til andre relasjoner og legge metoder til faktatypene. Et viktig motiv for utviklingen av denne modellen er å gi bedre samsvar mellom relasjonsdatabaser og objektorienterte programmerings- og modelleringsspråk. SQL:1999-standarden tok inn en rekke av idéene bak den objekt-relasjonelle modellen, og enkelte vil si at DBMS-er som følger denne standarden kan betraktes som objektrelasjonelle. [[XML]] er et markeringsspråk som kan brukes til ''semi-strukturerte'' data. Semistrukturerte data har en viss struktur, men kan være irregulær og ufullstendig. På grunn av fleksibiliteten til XML kan språket brukes som kommunikasjonsspråk mellom ulike databaser og til organisering på [[World Wide Web]]. Standarden for XML 1.0 ble publisert i 1998 av [[W3C]].<ref>Munthe-Kaas, Ellen (med flere): [http://www.uio.no/studier/emner/matnat/ifi/INF3100/v08/undervisningsmateriale/lysark/kap04-6-7.pdf Semi-Structured Data and XML (lysark)]. INF3100 Universitetet i Oslo, april 2008.</ref> ==ACID-prinsippet== ACID (Atomicity, Consistency, Isolation, Durability) er et sett av krav som sikrer at operasjoner på databaser utføres pålitelig. En operasjon på en database er '''atomær''' hvis DBMS-et sikrer at hvis en del av operasjonen ikke utføres så utføres heller ikke andre deler – alt eller ingenting. En serie operasjoner på en database som sammen bevarer databasens konsistens kalles en transaksjon. En serie operasjoner som fører til inkonsistens eller brudd på integretsregler er ikke gyldig og må kunne oppheves/tilbakeføres. Databasen skal være '''konsistent''' med reglene for databasen både før en operasjon utføres og etter at den er avsluttes (men den kan være inkonsistent mens operasjoner utføres). Konsistensen sikres med ''integretetsregler''. I relasjonsdatabaser er [[nøkkel (database)|nøkler]] viktige integretetsregler innenfor og mellom tabeller. [[beskrankning | ''Beskrankninger'']] på enkeltattributter'' bestemmer lovlige statuser for en enkel verdi. ''Assertions'' er fastsatte kontroller som kan omfatte alle deler av databasen, denne funksjonaliteten støttes bare av enkelte DBMS-er. ''Triggere'' er operasjoner som utføres når fastlagte hendelser inntreffer. '''Isolasjon''' innebærer at operasjoner ikke kan arbeide med data som er i en midlertidig endret tilstand på grunn av at andre prosesser arbeider med dem. Dette er ikke noe problem hvis systemet arbeider serielt – hvis det bare behandler en og en operasjon. Men i praksis designes databasesystemer for at mange prosesser skal kunne arbeide parallelt. Prinsippet om [[serialiserbarhet]] innebærer at operasjoner skal utføres slik at det finnes en seriell utførelse som gir samme resultat. Rekkefølgen av operasjonene kan ha stor betydning for resultatet, men det skal ikke være slik at forskjellige operasjoner blandes sammen og gir et helt uventet resultat. '''Varighet''' innebærer at resultatet av utførte transaksjoner aldri kan forsvinne. Dette innebærer at databasen skal takle ulike forventede og ikke-forventede hendelser, som for eksempel systemkrasj eller fysiske feil. ==Systemarkitektur== 3-skjemaarkitektur er et viktig prinsipp i moderne databasesystemer. Denne innebærer en deling av databasesystemet i presentasjonslaget, det konseptuelle(logiske) laget og det fysiske laget. Målet med denne delingen er at man skal kunne endre deler av databasesystemet uten at det er nødvendig å endre andre lag. For eksempel kan man endre måten tall lagres på(fysisk lag) uten å endre informasjonen om hva som skal lagres i systemet (logisk lag). ==Databasehåndteringssystem (DBMS)== Den sentrale programvaren i et databasesystem er [[databasehåndteringssystem]]et (DBMS). Databasehåndteringssystemet skal ta seg av opprettelse, endringer og lesing i databasen. Det første kommersielle databasehåndteringssystemet, IDS, ble utviklet i 1964 av General Electric. I 1968 lanserte [[IBM]] systemet IMS, som fikk en bred anvendelse, og som fremdeles er i bruk i mange gamle datasystemer. I 1979 lanserte [[Oracle (selskap)|Oracle]] den første kommersielle DBMS som var basert på relasjonsmodellen. I første del av åttitallet kom også flere andre relasjonsdatabasesystemer på markedet. Relasjonsdatabasene fikk stadig høyere markedsandel i slutten av åttitallet og begynnelsen av nittitallet.<ref name="White">White, Colin. [http://www.teradata.com/t/page/127057 http://www.teradata.com/t/page/127057 In the Beginning: An RDBMS History] {{Wayback|url=http://www.teradata.com/t/page/127057 |date=20090107165202 }}. Teradata Magazine Online. September 2004 edition.</ref> ==Transaksjonslogg== Logging er den viktigste teknikken et databasesystem har for å hindre feil og tap av data. Loggen arbeider vanligvis både etter både undo- og redo-prinsippet. '''Undo-loggen''' har en linje for hver skriveoperasjon der det er registrert hva den aktuelle verdien var før endringen. Først utføres operasjonen i [[RAM|arbeidsminnet]], deretter skrives loggen til [[lagringsmedie]]t og til slutt skrives de nye verdiene til lagringsmediet. Hvis operasjonen var vellykket noteres ''commit'' i loggen, hvis den ikke var gyldig skrives ''abort'' og endringene tilbakeføres. Da er kun fullstendig transaksjoner som overholder prinsippet om atomitet og konsistens utført (se [[Database#ACID-prinsippet|ACID]]). Hvis det skjer en feil, f.eks. hvis strømmen går midt i en eller flere transaksjoner, kan systemet bruke undo-loggen til å tilbakeføre alle operasjoner der det ikke er notert commit eller abort. Man taper de halvferdige operasjonene, men man sikrer at databasen er i en konsistent tilstand. '''Redo-loggen''' virker på samme måte, men noterer hva de aktuelle verdiene var etter endringen. Redo-loggen kan brukes til å gjenopprette databasen fra en tidligere versjon, eller et såkalt sjekkpunkt, der man vet at databasen var konsistent. Man tar utgangspunkt i siste sikre versjon og gjenoppretter alle verdier som er merket commit.<ref name="Normann">Normann, Ragnar: [http://www.uio.no/studier/emner/matnat/ifi/INF3100/v08/undervisningsmateriale/lysark/kap17.pdf Systemfeil og logging (lysark)], delvis etter Hector Garcia-Molina. INF3100 Universitetet i Oslo, mars 2008.</ref> Hvis operasjonen innebærer fysiske endringer, for eksempel uttak fra minibank, utføres fysisk operasjon etter at commit er notert.<ref name="Normann" /> ==Spørrespråk== {{hoved|Spørrespråk}} Et spørrespråk (engelsk: ''query language'') er et forenklet språk som brukes i kommunikasjon med databaser og informasjonssystemer.<ref>Subieta, Kazimierz: [http://sbql.pl/Topics/What%20are%20query%20lang.html What are query languages?] {{Wayback|url=http://sbql.pl/Topics/What%20are%20query%20lang.html |date=20121108221919 }}</ref> I 1976 lanserte IBM spørrespråket [[SQL]], som ganske etter hvert ble regulert av standarder fastsatt av ISO og støttes av praktisk talt alle relasjonsdatabasesystemer. De fleste DBMS-er har imidlertid egne tolkninger og tillegg til standarden, man snakker derfor om ulike dialekter av SQL. [[Objektdatabase]]r behandles ved hjelp av spørrespråket OQL, som bevisst er gjort så likt SQL som mulig. [[XQuery]] er et spørrespråk som er utviklet for å kunne gjøre spørringer mot XML-data. ==Distribuerte databaser== En distribuert database er en database som er spredt over flere datamaskiner, noder, som er bundet sammen i et nettverk. Hvis samme data finnes på flere noder sier man at disse data er ''replikerte''. Hvis alle data er replikert til alle nodene er databasen ''fullreplikert''. == Se også == * [[Flatfildatabase]] == Referanser == <references/> {{Databaser}} {{Datavarehus}} {{Autoritetsdata}} [[Kategori:Databaser| ]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Autoritetsdata
(
rediger
)
Mal:Databaser
(
rediger
)
Mal:Datavarehus
(
rediger
)
Mal:Hlist/styles.css
(
rediger
)
Mal:Hoved
(
rediger
)
Mal:Navboks
(
rediger
)
Mal:Utdypende artikkel
(
rediger
)
Mal:Wayback
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:Genitiv
(
rediger
)
Modul:Navbar
(
rediger
)
Modul:Navbar/configuration
(
rediger
)
Modul:Navboks
(
rediger
)
Modul:Navbox/configuration
(
rediger
)
Modul:Navbox/styles.css
(
rediger
)
Modul:Wayback
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon