Entwurfsmuster: Benachrichtigungssystem

Ich arbeite an einer Website, die Funktionen sozialer Netzwerke nutzt (wie zum Beispiel Facebook).

Ich möchte ein Benachrichtigungssystem implementieren, das Dinge wie "X hat dich als Freund hinzugefügt", "Y lädt dich zur Party ein", "Z hat das letzte Quizz genommen" ... und ich weiß nicht, wie ich das machen soll .

Ich frage mich, was die beste Lösung ist:

Lösung 1, auch "Protokollierung" genannt.

Eine dedizierte Tabelle "Benachrichtigung". Ich füge jedes Mal Zeilen in diese Tabelle ein, wenn eine Benachrichtigung ausgelöst wird (Hinzufügen eines Freundes, Beantworten eines Quiz usw.). Die Tabelle "Benachrichtigung" enthält Felder, die unterschiedliche Informationen enthalten, je nachdem, welche Art von Benachrichtigung der Tabelle hinzugefügt wird.

Gut : einfach zu codieren, Trennung zwischen Benachrichtigungsfunktion und "normalen" Funktionen, nicht zu viel Ressourcen verbrauchend, wenn ich die Tabelle lesen muss.

Schlecht : Benachrichtigungstabelle wird wahrscheinlich sehr groß (ich denke, ich werde 10k Zeilen / Tag in die Tabelle einfügen), "duplizierte" Informationen: Informationen in der Benachrichtigungstabelle können in allen anderen Tabellen unter Verwendung von Datum / Liste / Vergleich gefunden werden.

Lösung 2, auch bekannt als "schau überall hin".

Jedes Mal, wenn ich die Benachrichtigungsliste oder die Anzahl der neuen Benachrichtigungen anzeigen muss, schaue ich in die betreffende Tabelle, vergleiche Datum / usw., um festzustellen, ob seit der letzten Überprüfung der Benachrichtigung durch den Benutzer etwas Neues passiert ist.

Gut : Keine zu große Tabelle im Vergleich zu Lösung 1, keine "Redundanz" von Informationen.

Schlecht : Ich habe Angst wegen der Anzahl der Benutzer (~ 1k +), es lässt den Server explodieren, weil es ressourcen- / zeitaufwändig ist, etwas schwieriger zu codieren / zu warten.

Können Sie mir bitte sagen, was Sie besser finden und warum, oder haben Sie eine Lösung, die ich mir nicht vorgestellt habe?

Danke =)

Bearbeiten: Angenommen, ich verwende ein sehr einfaches DB-Design: Benutzer haben Freunde, können Quizfragen durchführen.

1 Tabelle für Benutzerliste, Quizliste,

1 Tabelle Quizz <-> User Relations,

1 Tischbenutzer <-> Benutzer für Freundschaft.

Jedes Mal, wenn ein Benutzer sein eigenes Profil besucht, kann er sehen, was passiert ist: neue Quiz- <-> Benutzerbeziehung, neue Benutzerbeziehung <-> Benutzerbeziehung usw. Wie würden Sie eine solche Benachrichtigung gestalten?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage