2010-02-22 7 views
8

Wenn Sie eine Anwendung wie Twitter erstellen würden, wie würden Sie das Nachrichtensystem gestalten?Wie würden Sie ein Twitter-ähnliches Nachrichtensystem entwerfen, wie das Nachrichtensystem zu gestalten?

Suchen Sie gezielt nach Ideen zum grundlegenden Datenmodell und wie Sie die Methode schreiben würden, die den Tweet des Benutzers annimmt und an alle seine Follower sendet?

Beispiel:

Tweets (tweetID, userID, message, datesend) 
User (userID, ...) 
Followers(userID, followerUserID) 

Inbox(userID, tweetID) 

ist das obige Modell ein guter Ausgangspunkt?

Würden Sie zuerst den Tweet einfügen und dann eine Nachricht in die Warteschlange schieben. Dann nimm eins nach dem anderen eine Nachricht aus der Warteschlange und schicke die Nachricht an ihre Abonnenten?

(Ich bin die mobile Funktionalität von Twitter zu ignorieren, nur auf der Web-basierte Funktionalität konzentrieren, aber ich dachte, eine Warteschlange von Anfang an mit so eine später anderer Funktionalität hinzufügen könnte)

Antwort

0

Ich glaube nicht, twitter verwendet eine Nachrichtenwarteschlange (Posteingang in Ihrem Datenmodell). Ich denke, in Twitter wird alles über Datum erledigt. Somit hat jeder Benutzer ein "zuletzt angesehenes Datum" und die Eingangs-/Nachrichtenwarteschlange wird erstellt, indem nach dem zuletzt angesehenen Datum nach allen abonnierten Tweets gesucht wird.

Um das Datenmodell zu ändern, entfernen Sie den Posteingang und fügen dem Benutzer eine letzte Ansichtsdatumsspalte hinzu.

Auch würde ich erwarten, dass Follower-Informationen nicht als wer folgt einem Benutzer gespeichert wird, sondern stattdessen, welche Benutzer ein geben Benutzer folgt. Natürlich könnte es in beiden Richtungen gespeichert werden, aber das scheint für mich mehr Sinn zu machen.

+0

die Nachrichtenwarteschlange und der Posteingang sind 2 getrennte Dinge. – user275475

+1

@mrbux: Du machst Witze mich richtig? Sie geben mir eine -1, weil Ihre Spezifikation des Problems implizierte, dass Sie das Problem falsch dachten? Wow, das scheint überhaupt nicht im Sinne von SO zu sein. Was genau ist Ihr Datenbankdesign? Was macht der Posteingang? Warum hast du es in deiner Frage aufgelistet? – Hogan

Verwandte Themen