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?