En **dokumentorientert database** eller et **dokumentlager** er et dataprogram og datalagringssystem designet for lagring, henting og håndtering av semistrukturerte data, også kalt dokumentorientert informasjon.

Dokumentorienterte databaser er en av hovedkategoriene av NoSQL databaser, og populariteten til begrepet "dokumentorientert database" har vokst sammen med bruken av begrepet NoSQL. XML-databaser er en underklasse av dokumentorienterte databaser som er optimalisert for å jobbe med XML-dokumenter. Grafdatabaser er lignende, men legger i tillegg til relasjoner hvilket gjør det mulig å koble dokumenter for rask traversering.

Dokumentorienterte databaser er en underklasse av nøkkel-verdi-databaser, et annet konsept fra NoSQL-databaser. Forskjellen ligger i måten dataene behandles på: I et nøkkelverdilager anses dataene å være ugjennomsiktige for selve databaseprogramvaren, mens i et dokumentorientert system er man avhengig av intern struktur i *dokumentet* for å trekke ut metadata som databasemotoren bruker for videre optimalisering. Selv om forskjellen ofte er ubetydelig på grunn av verktøyene i systemene er et dokumentlager konseptuelt designet for å tilby en rikere opplevelse med moderne programmeringsteknikker.

Dokumentdatabaser (og nøkkel-verdi-lagre generelt) står i sterk kontrast til det tradisjonelle relasjonsdatabaser. Relasjonsdatabaser lagrer vanligvis data i separate *tabeller* som er definerte av programmereren, og et enkelt objekt kan være spredt over flere tabeller. Dokumentdatabaser lagrer all informasjon for et gitt objekt i en enkelt forekomst i databasen, og hvert lagret objekt kan være forskjellig fra alle andre. Dette eliminerer behovet for objekt-relasjonell avbilding når man laster data inn i databasen.

Dokumenter
----------

Forestillingen om en *dokument* er det sentrale konseptet i dokumentorientert databaser. Dokumentorienterte databaser antar generelt at dokumenter innkapsler og koder data (eller informasjon) i noen standard formater eller kodinger. Kodinger i bruk inkluderer XML, YAML, JSON, samt noen binære former som BSON.

Dokumenter i et dokumentlager tilsvarer omtrent programmeringskonseptet objekt. De er ikke pålagt å følge et standardskjema, og vil heller ikke ha alle de samme seksjonene, delene eller nøklene. Vanligvis har programmer som bruker objekter mange forskjellige typer objekter, og disse objektene har ofte mange valgfrie felter. Hvert objekt, selv de som er i samme klasse, kan se veldig ulike ut. Dokumentlagre er like ved at de tillater forskjellige typer dokumenter i et enkelt lager, lar felter være valgfrie, og ofte lar dem kodes ved hjelp av forskjellige tegnkodingssystemer.

Se også
-------

* Databaseteori
* Datahierarki
* Dataanalyse
* Fulltekstsøk
* Hovedminnedatabase
* Internet Message Access Protocol (IMAP)
* Maskinlesbart dokument
* Multimodell-database
* NoSQL
* Objektdatabase
* Online database
* Publiseringssystem
* Sanntidsdatabase
* Relasjonsdatabase

Referanser
----------

1. ↑  Drake, Mark. «A Comparison of NoSQL Database Management Systems and Models». Arkivert fra originalen 13. august 2019. Besøkt 23. august 2019.
2. ↑  «DB-Engines Ranking per database model category».

| * v
* d
* r
Databasemodeller |
| --- |
| Vanlige modeller | 
* Flat
* Hierarkisk
* Dimensjonell
* Nettverk
* Relasjon
* Entitetrelasjon
	+ Forbedret
* Graf
* Objektorientert
* Entitet-attributt-verdi

 |
| Andre modeller | 
* Korrelasjon
* Multidimensjonal
* Tabell
* Semantisk
* Stjernemodell
* XML-database

 |
| Implementasjoner | 
* Flatfil
* Kolonneorientert
* Dokumentorientert
* Objektrelasjonell
* Deduktiv
* Temporal
* XML-datalager
* Nøkkelverdi
* Triplett

 |