Wzór projektu: system powiadomień

Pracuję na stronie internetowej, która będzie korzystała z funkcji sieci społecznościowych (np. Na Facebooku).

Chciałbym wdrożyć system powiadomień, który pokazuje takie rzeczy jak „X dodał cię jako przyjaciela”, „Zapraszam cię na imprezę”, „Z wykonał ostatni quiz” ... i nie wiem jak to zrobić .

Zastanawiam się, jakie jest najlepsze rozwiązanie:

Rozwiązanie 1, czyli „logowanie”.

Dedykowane „powiadomienie” w tabeli. Dodaję wiersze w tej tabeli za każdym razem, gdy pojawi się powiadomienie (dodawanie znajomych, odpowiadanie na quiz itp.). Tabela „Powiadomienie” zawiera pola zawierające różne informacje, w zależności od rodzaju powiadomienia dodawanego do tabeli.

Dobry : łatwe do zakodowania, oddzielenie funkcji powiadamiania od „normalnych” funkcji, niezbyt dużo zasobów, gdy muszę przeczytać tabelę.

Zły : Tabela powiadomień będzie prawdopodobnie bardzo duża (myślę, że dodam 10k wierszy / dzień w tabeli), „zduplikowane” informacje: informacje w tabeli powiadomień można znaleźć we wszystkich innych tabelach, używając daty / listy / dowolnego porównania.

Rozwiązanie 2, inaczej „spójrz wszędzie”.

Za każdym razem, gdy muszę pokazać listę powiadomień lub pokaz, ile jest nowych powiadomień, sprawdzam wszystkie dane tabele, porównuję datę / itd., Aby wiedzieć, czy coś nowego się wydarzyło od ostatniego sprawdzenia powiadomienia przez użytkownika.

Dobry : Nie za duży stół w porównaniu z rozwiązaniem 1, brak „nadmiarowości” informacji.

Zły : Obawiam się, ponieważ liczba użytkowników (~ 1k +) powoduje, że serwer eksploduje, ponieważ jest zasobochłonny / czasochłonny, trochę trudniejszy do zakodowania / utrzymania.

Czy możesz mi powiedzieć, co myślisz lepiej i dlaczego, czy masz rozwiązanie, którego nie wyobrażałem sobie?

Dzięki =)

Edytować : Powiedzmy, że używam naprawdę podstawowego projektu bazy danych: użytkownicy mają znajomych, mogą wykonywać quizy.

1 tabela dla listy użytkowników, lista quizów,

1 tabela quizu <-> relacja użytkownika,

1 użytkownik tabeli <-> użytkownik za przyjaźń.

Za każdym razem, gdy użytkownik odwiedza swój profil, może zobaczyć, co się stało: nowy quiz <-> relacja użytkownika, nowy użytkownik <-> relacja użytkownika itp. Jak zaprojektowałbyś takie powiadomienie?

questionAnswers(4)

yourAnswerToTheQuestion