Любая реляционная база данных должна быть хороша для хранения необработанных данных, таких как списки песен, список пользователей, предпочтения песен пользователя.
Я думаю, вы обнаружите, что реляционные базы данных (и SQL) не так уж хороши для хранения различных структур данных, которые будет строить ваш рекомендатель. Ваш механизм рекомендаций, вероятно, будет создавать данные, которые на самом деле не обязательно должны быть в таблицах, и манипулировать ими для хранения в реляционной базе данных может быть просто потраченной впустую работой.
Просто будьте в курсе того, что вы делаете, и не тратьте время на вставку вещей в базу данных SQL, если вам кажется, что это неправильно. Может быть, посмотрите на использование ориентированной на документы базы данных, например MongoDB .
Рекомендатель, который я недавно написал, на самом деле является процессом Java-сервера, который считывает необработанные данные из MySQL, выполняет всю свою работу в памяти и предоставляет рекомендации для моего приложения через HTTP API. Я даже не удосужился сохранить данные с рекомендациями навсегда, так как они могут быть восстановлены.