Zum Inhalt springen

Dokumentenorientierte Datenbank

aus Wikipedia, der freien Enzyklopädie

Eine dokumentenorientierte Datenbank ist eine Datenbank, bei der Dokumente die Grundeinheit zur Speicherung der Daten bilden. Als das am weitesten verbreitete Datenbanksystem mit einer dokumentenorientierten Datenbank gilt HCL Notes (vor 2019 IBM bzw. Lotus Notes). Da sie keinen relationalen Ansatz verfolgen und auf SQL verzichten, zählen dokumentenorientierte Datenbanken zu den NoSQL-Datenbanken.

Während eine relationale Datenbank aus Datenbanktabellen besteht, die einem festen Datenbankschema unterliegen, enthält eine dokumentenorientierte Datenbank einzelne Dokumente mit einem eindeutigen Identifikator. Hierbei entspricht ein Dokument einer Zeile in einer Datenbanktabelle. Diese Dokumente können nun strukturierte Dateien mit einem Standard-Dateiformat sein (wie eine Textverarbeitungsprogrammdatei), aber auch Binary Large Objects sind möglich, die im Sinne eines Datenbankzugriffs nicht weiter strukturiert sind (wie ein Videofilm im mpeg-Format).<ref>Rod Stephens: Beginning Database Design Solutions. Wiley-India, New Delhi 2008, S. 44. ISBN 81-265-1917-7.</ref> Da die Dokumente schemafrei sind, kann eine Datenbank unterschiedliche Arten von Dokumenten enthalten. Durch die Zuordnung der Dokumente zu einem eindeutigen Schlüssel sind dokumentenorientierte Datenbanken Schlüssel-Werte-Datenbanken sehr ähnlich. Während Schlüssel-Werte-Datenbanken den dem Schlüssel zugeordneten Wert nicht weiter betrachten, bieten dokumentenorientierte Datenbanken Möglichkeiten, die Dokumente direkt auszuwerten oder inhaltlich zu verändern.<ref>Dokumentenorientierte Datenbanken.</ref>

In aktuellen Datenbanksystemen wie CouchDB und MongoDB enthalten diese Dokumente semistrukturierte Daten wie JSON, YAML oder XML (siehe auch XML-Datenbank). Dies ermöglicht das Speichern komplexer Datenstrukturen in der Datenbank sowie deren Abfrage anhand bestimmter Eigenschaften. Im Gegensatz zu relationalen Datenbanken müssen diese Strukturen nicht auf Tabellen abgebildet werden, was die Vorgänge des Speicherns und des Auslesens weniger komplex macht. Jedoch können aufgrund der fehlenden Möglichkeiten zur Normalisierung Redundanzen in den Daten entstehen und die Anwendung, die die Daten nutzen soll, wird komplexer, da sie unter Umständen selbst dafür sorgen muss, dass die Daten konsistent sind.<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20190217030129

      | {{#ifeq: 20190217030129 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen | {{#invoke:WLink|getEscapedTitle|MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen}} | {{#invoke:Webarchiv|getdomain|https://entwickler.de/online/datenbanken/mongodb-erfolgreich-ein-dokumentenorientiertes-datenbanksystem-einfuehren-115079.html}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20190217030129}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen | {{#invoke:WLink|getEscapedTitle|MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen}} | {{#invoke:Webarchiv|getdomain|https://entwickler.de/online/datenbanken/mongodb-erfolgreich-ein-dokumentenorientiertes-datenbanksystem-einfuehren-115079.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-12-13 15:43:22 InternetArchiveBot | 2023-12-13 15:43:22 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20190217030129}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen | {{#invoke:WLink|getEscapedTitle|MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen}} | {{#invoke:Webarchiv|getdomain|https://entwickler.de/online/datenbanken/mongodb-erfolgreich-ein-dokumentenorientiertes-datenbanksystem-einfuehren-115079.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-12-13 15:43:22 InternetArchiveBot | 2023-12-13 15:43:22 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen | {{#invoke:WLink|getEscapedTitle|MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen}} | {{#invoke:Webarchiv|getdomain|https://entwickler.de/online/datenbanken/mongodb-erfolgreich-ein-dokumentenorientiertes-datenbanksystem-einfuehren-115079.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-12-13 15:43:22 InternetArchiveBot | 2023-12-13 15:43:22 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen | {{#invoke:WLink|getEscapedTitle|MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen}} | {{#invoke:Webarchiv|getdomain|https://entwickler.de/online/datenbanken/mongodb-erfolgreich-ein-dokumentenorientiertes-datenbanksystem-einfuehren-115079.html}} }} (Memento{{#if: {{#if: 2023-12-13 15:43:22 InternetArchiveBot | 2023-12-13 15:43:22 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen | {{#invoke:WLink|getEscapedTitle|MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen}} | {{#invoke:Webarchiv|getdomain|https://entwickler.de/online/datenbanken/mongodb-erfolgreich-ein-dokumentenorientiertes-datenbanksystem-einfuehren-115079.html}} }}  
                 }}}}}}}}{{#if:2023-12-13 15:43:22 InternetArchiveBot
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20190217030129|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|https://entwickler.de/online/datenbanken/mongodb-erfolgreich-ein-dokumentenorientiertes-datenbanksystem-einfuehren-115079.html}}
    || {{#if:  || }}
  }}{{#if: MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen
    | {{#if: {{#invoke:WLink|isBracketedLink|MongoDB: erfolgreich ein dokumentenorientiertes Datenbanksystem einführen}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|https://entwickler.de/online/datenbanken/mongodb-erfolgreich-ein-dokumentenorientiertes-datenbanksystem-einfuehren-115079.html%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|https://entwickler.de/online/datenbanken/mongodb-erfolgreich-ein-dokumentenorientiertes-datenbanksystem-einfuehren-115079.html%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|https://entwickler.de/online/datenbanken/mongodb-erfolgreich-ein-dokumentenorientiertes-datenbanksystem-einfuehren-115079.html }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}.</ref>

Weitere dokumentenorientierte Datenbankmanagementsysteme sind:

Zusätzlich bieten relationale Datenbanksysteme wie PostgreSQL und MySQL Möglichkeiten an, semistrukturierte Daten in den Tabellen zu speichern und diese ähnlich wie bei einer dokumentenorientierten Datenbank auszuwerten.<ref>JSON Types.</ref><ref>The JSON Data Type.</ref> Dies ermöglicht das Verbinden des relationalen und des dokumentenorientierten Ansatzes.

Literatur

  • {{#invoke:Vorlage:Literatur|f}}
  • {{#invoke:Vorlage:Literatur|f}}

Einzelnachweise

<references />