Każda relacyjna baza danych powinna nadawać się do przechowywania surowych danych, takich jak listy utworów, lista użytkowników, preferencje utworów użytkowników.
Myślę, że okaże się, że relacyjne bazy danych (i SQL) nie są zbyt dobre do przechowywania różnych struktur danych, które będzie konstruował Twój rekomendujący. Twój silnik rekomendacji prawdopodobnie utworzy dane, które tak naprawdę nie muszą znajdować się w tabelach, a manipulowanie nimi w celu przechowywania w relacyjnej bazie danych może być po prostu zmarnowaną pracą.
Po prostu bądź świadomy tego, co robisz i nie marnuj czasu na umieszczanie rzeczy w bazie danych SQL, jeśli wydaje Ci się to niewłaściwe. Może warto rozważyć użycie bazy danych zorientowanej na dokumenty, takiej jak MongoDB .
Rekomendator, który ostatnio napisałem, jest w rzeczywistości procesem serwera Java, który odczytuje surowe dane z MySQL, wykonuje całą swoją pracę w pamięci i dostarcza dane rekomendacji do mojej aplikacji za pośrednictwem interfejsu API HTTP. Nawet nie zawracałem sobie głowy przechowywaniem danych rekomendacji na stałe, ponieważ można je zregenerować.