Definition: Referencing (NoSQL)

Als Referencing (de. Referenzierung) bezeichnen wir im Kontext von NoSQL die Praxis, Beziehungen zwischen verschiedenen Datensätzen durch das Speichern von Referenzen (ähnlich zu Fremdschlüsseln) auf andere Dokumente herzustellen, anstatt die Daten direkt einzubetten.

Hierbei ist natürlich auch eine “Rückreferenzierung” möglich, es können also auch beide Objekte aufeinander verlinken.

Referencing ermöglicht es, Daten zu “normalisieren”, Redundanzen zu vermeiden und den Speicherbedarf zu reduzieren, indem verknüpfte Daten getrennt gespeichert und durch Verweise miteinander verbunden werden.

  • Vorteile
    • Reduzierte Redundanz: Da Daten nicht mehrfach gespeichert werden müssen, wird der Speicherplatz effizienter genutzt und Inkonsistenzen werden vermieden.
    • Flexibilität: Änderungen an den referenzierten Daten müssen nur an einer Stelle vorgenommen werden, was die Wartung und Aktualisierung erleichtert.
    • Kleinere Dokumente: Dokumente bleiben kleiner und übersichtlicher, da sie keine eingebetteten Strukturen enthalten.
  • Nachteile
    • Komplexität bei Abfragen: Das Abrufen von Daten erfordert oft mehrere Datenbankabfragen, um die referenzierten Dokumente zu laden, was die Abfragekomplexität und -zeit erhöhen kann.
    • Komplexe Joins: Joins vieler Daten über Nodes hinweg ist in der Regel komplex und inperformant.
    • Verlust der Atomizität: Operationen, die mehrere Dokumente betreffen, können nicht mehr atomar (in einem Schritt) durchgeführt werden, was die Datenkonsistenz gefährden kann.

Anmerkung

Beispiel: Customer und Order