Grundsätzlich haben Sie 3 Möglichkeiten:
-
Hinterlegen Sie einfach die
userId
und dann den Benutzer separat abrufen. So erhalten Sie immer optimale Ergebnisse in Bezug auf frische Daten. Aber natürlich ist es langsamer. Das ist im Grunde das, was eine relationale Datenbank tut. Eine SQL-Datenbank wirft nur einen Blick auf den Fremdschlüssel und ruft die Daten anhand der ID ab. -
Lebe mit veralteten Daten. Speichern Sie ein Duplikat des Benutzernamens in den Kommentaren. Manchmal ist dies ein erwünschtes Verhalten, da Sie so die Daten genau so darstellen können, wie sie zum Zeitpunkt der Speicherung waren. Das bedeutet:Wenn John einen Kommentar erstellt und später sein Benutzername auf Paul aktualisiert wird, können Sie immer noch sehen, dass er als John erstellt wurde. (Dies ist besonders nützlich für z. B. Rechnungen, wenn Sie dort auf eine Person verweisen und sich die Adresse ändert, dann möchten Sie die Adresse einer alten Rechnung nicht aktualisieren)
-
Aktualisieren Sie alles, was einen Benutzernamen enthält, wenn der Benutzername aktualisiert wird. Das ist auch nicht schlimm, denn ein Benutzername sollte sich normalerweise nie ändern. Das Lesen geht also immer schnell, da der Name im Kommentar gespeichert wird. Und wenn sich der Name ändert, müssen Sie alles aktualisieren, was den Benutzer betrifft. Dies ist natürlich eine langsame Aufgabe, aber da es nicht jede Minute passieren sollte, ist es erträglich.
3.1 Sie könnten die Dinge optimieren:Wenn sich der Benutzername ändert, wird dies irgendwo gespeichert und um Mitternacht angewendet. Auf diese Weise können Sie mehrere Namensänderungen sammeln und alles gleichzeitig aktualisieren.
Wie Sie sehen können:Bei NoSQL geht es um die Wahl . Sie können die Dinge tun, die am besten zu Ihren Daten passen. Natürlich ist es immer ein Kompromiss:Langsamer/schneller, mehr/weniger Code zu schreiben, einfacher/schwieriger zu warten.
Zusammengefasst ist es:
- Schnelles Schreiben, konsistente Daten, langsames Lesen
- Schnelles Schreiben, inkonsistente Daten, schnelles Lesen
- Schnelles Schreiben, schnelles Lesen, Daten werden nach dem Aktualisierungsprozess konsistent, was einige Zeit dauern kann. Und der Aktualisierungsprozess ist natürlich langsam.