Redigerer
Objektdatabase
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 '''objektdatabase''' er en [[database]] som bygger på prinsippet om objektorientering. I objektdatabaser organiseres informasjon i objekter som står toveis relasjoner til hverandre. Objekter er organisert i klasser, og man bruker strukturer som subklasser og interface, på samme måte som i [[objektorientert programmering]]. I en objektdatabase ønsker man å kunne bruke metodene fra objektorientert programmering, men sette disse inn i et system som ivaretar kravene til en database. [[Databasehåndteringssystem]]er for objektdatabaser kalles ODBMS (Object Database Managment System). Objektdatabaser brukes gjerne når komplekse data skal behandles med høy ytelse. ==Standardisering== Object Database Management Group (ODMG) ble stiftet i 1991 og utarbeidet en viktig standard for objektdatabaser med utgangspunkt i standarder fra Object Managment Group (OMG). Bakgrunnen for dette var at de ønsket en mindre strikt standard som enklere kunne implementeres. Mellom 1993 og 2001 utgav de en spesifikasjon og fem revideringer av denne. Siste versjon var ODMG 3.0. Gruppen ble så oppløst. I 2006 ble rettighetene til standarden overført til OMG. OMG er en viktig standardfastsetteren innenfor objektorientering, som ble stiftet i 1989 av 11 større dataselskaper. For å ivareta det videre arbeidet har de stiftet Object Database Technology Working Group (ODBT WG). ==ODMG-standarden== ODMGs standard består av: *'''Object Definition Language (ODL)''' som brukes til å definere klasser *'''Object Interchange Format (OIF)''' som er et format for å skrive og lese objekter til filer *'''Object Query Language (OQL)''' som er et spørrespråk som ligner på [[SQL]], men som arbeider med objektdatabaser. *Språkbindinger for [[Smalltalk]], [[C++]] og [[Java (programmeringsspråk)|Java]] ==Object Definition Language (ODL)== Et eksempel på definisjon av en klasse i ODL:<ref name="garcia-molina">Garcia-Molina, Hector. Ullman, Jeffrey D.. Widom, Jennifer: Database Systems - The Complete Book. Stanford University/ Pearson Education International, 2009.</ref> <!-- ikke akkurat java, men nesten... --> <syntaxhighlight lang="java"> class Student : Person (extent studenter keys (navn, alder)) { attribute string navn; attribute integer alder; attribute Struct Stud { string institusjon, string fag } studie; }</syntaxhighlight> Denne definisjonen oppretter klassen Student, som implementerer interfacet Person. Mengden av Student kalles studenter og studenter identifiseres med navn og alder. Navn og alder er definert direkte. Studie defineres som en egen struktur som heter Stud. I klassen student brukes betegnelsen "studie". Årsaken til at det gjøres slik er at man da kan gjenbruke strukturen i en annen sammenheng/klasse. Strukturen får pekeren Student::Stud. Eksempel på deklarasjon av en-til-en-assosiasjon. Det må være en korresponderende deklarasjon i klassen det henvises til, Mobil::eiesAv er en lenke til denne deklarasjonen.<ref name="garcia-molina" /> <!-- ikke akkurat java, men nesten... --> <syntaxhighlight lang="java"> class Student { relationship Mobil eier inverse Mobil::eiesAv; }</syntaxhighlight> <syntaxhighlight lang="java"> class Mobil { relationship Student eiesAv inverse Student::eier; }</syntaxhighlight> Eksempel på deklarasjon av en mange-til-en assosiasjon i ODL. Her har arbeidgruppe et sett av studenter og hver student deltar i en arbeidsgruppe:<ref name="garcia-molina" /> <!-- ikke akkurat java, men nesten... --> <syntaxhighlight lang="java"> class Arbeidsgruppe { relationship Set<Student> harDeltager inverse Student::deltarI; }</syntaxhighlight> <syntaxhighlight lang="java"> class Student { relationship Arbeidsgruppe deltarI inverse Arbeidsgruppe::harDeltager; }</syntaxhighlight> Mange-til-mange-relasjoner uttrykkes som to en-til-mange assosiasjoner.<ref name="garcia-molina" /> Klasser i objektdatabaser kan også inneholde metoder, på samme måte som i objektorienterte programmeringsspråk, og slike brukes for å endre verdiene i objekter. ==Object Query Language (OQL)== OQL er laget for å kjøre spørringer mot en objektdatabase, og brukes alltid innenfor et vertsspråk. OQL refererer alltid til ekstensjoner, og ikke til klasser. I motsetning til SQL har ikke OQL en egen update-funksjon, men objekter kan endres ved å kalle metoder i objektene. I OQL navigerer man ofte ved hjelp av stier. Eksempel på spørring i OQL, med utgangspunkt i tidligere eksempler. Finn navn og nummer til studenter som er eldre enn 21, sorter etter alder med høyeste først: <syntaxhighlight lang="sql"> SELECT s.navn, m.nummer FROM Student s, s.eier m WHERE s.alder > 21 ORDER BY s.alder DESC </syntaxhighlight> Legg merke til ''s.eier'' i FROM. Dette er en vanlig konstruksjon i OQL, men forekommer ikke i SQL. Man vil også finne en del andre avvik i syntaksen. ==Referanser== <references/> {{databaser}} [[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:Databaser
(
rediger
)
Mal:Hlist/styles.css
(
rediger
)
Mal:Navboks
(
rediger
)
Modul:Arguments
(
rediger
)
Modul:Navbar
(
rediger
)
Modul:Navbar/configuration
(
rediger
)
Modul:Navboks
(
rediger
)
Modul:Navbox/configuration
(
rediger
)
Modul:Navbox/styles.css
(
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