ich mit der Antwort stimmen @tomliversidge präsentiert, aber meine Antwort-Tool lang für einen Kommentar sein können, so wenden Sie sich bitte als Antwort akzeptieren das nicht ‚richtig‘ :)
Es ist gehen eine geschäftliche Entscheidung darüber treffen, was mit historischen Daten geschieht.
Nehmen wir ein anderes Beispiel zur Veranschaulichung. Als ich eine Bestellung aufgegeben habe, habe ich SKU-001 bestellt, was zufällig ein "roter Eimer" war. Doch während ich auf meine Bestellung wartete, entschied jemand, dass der "rote Eimer" tatsächlich ein "blauer Eimer" ist. Jetzt wird es interessanter. Wenn nur die ID von SKU-001 in der Bestellung gespeichert ist, bedeutet dies, dass sich das, was ich bestellt habe, jetzt geändert hat. Es wird zu einiger Verwirrung führen. Es gibt jedoch Möglichkeiten. Einer speichert historische Daten und findet den Artikel basierend auf dem Datum der Bestellung. Aber , dass ist schrecklich komplex und ineffizient. Aus diesem Grund wird manchmal ein Wertobjekt gespeichert, das sowohl eine ID als auch einige relevante Informationen wie die Beschreibung enthält. Im Bestellbeispiel würde man sicher nicht zurückgehen und die Beschreibung zu historischen Daten ändern.
In diesem speziellen Twitter-Fall scheint es, als ob die historischen Daten aktualisiert werden. Nun, ich kenne Twitter nicht und ich bin nicht dabei, also werde ich es ein bisschen anders betrachten. Es ist auch interessant, einen vollen Namen zu haben, da die Frage lautet: "Warum wurde der Name geändert?" Es passiert ziemlich oft, wenn eine Frau heiratet. Es mag sein, dass das Geschäft entscheidet, dass alte vollständige Namen so gehalten werden, wie es zu diesem Zeitpunkt den Stand der Dinge darstellte.
Wenn jedoch die Daten aktualisiert werden sollen, wird es auch ein bisschen eine technische Übung. Es gibt Optionen hier. Einer, wie in einer anderen Antwort angegeben, ist, den Benutzernamen einfach nachzuschlagen, wenn er Tweets findet. Ein anderer, auch gesagt, ist die Denormalisierung der Daten in den Tweet. Jemand weiß, wie das funktioniert. Selbst wenn wir die Tweets denormalisieren müssen, kann es sich um ein einzelnes Update handeln, das gegen das Lesemodell ausgeführt wird. Dies hängt alles von der technischen Implementierung ab.
Just my 2 cents :)
Nun, das ist, was Twitter tut - [Zeitrahmen bei Stufen] (https://www.infoq.com/presentations/Twitter-Timeline-Scalability)/[Die Architektur Twitter Uses 150M aktive Benutzer, 300K QPS, eine 22 MB/s Firehose und Tweets in weniger als 5 Sekunden zu behandeln] (http://highscalability.com/blog/2013/7/8/the-architecture-twitter-uses- to-Deal-mit-150m-active-users.html). Und wie ich mich erinnere, sind ihre Lesevorgänge von Schreibvorgängen getrennt, was ziemlich genau wie bei CQRS ist. –
Eureka. Im Grunde machen sie das, was ich getan habe, bevor ich DDD und CQRS entdeckt habe (ich hasse Joins): Da die Timeline nur Tweet-IDs enthält, müssen sie diese Tweets "hydratisieren", also den Text der Tweets finden. Mit einem Array von IDs können sie ein Multiget erstellen und die Tweets von T-bird parallel abrufen. Ich wette, sie machen dasselbe mit der UserId. – Villason