Qualquer banco de dados relacional deve ser bom para armazenar os dados brutos, como listas de músicas, lista de usuários, preferências de músicas dos usuários.
Acho que você descobrirá que bancos de dados relacionais (e SQL) não são tão bons para armazenar as várias estruturas de dados que seu recomendador estará construindo. Seu mecanismo de recomendação provavelmente criará dados que realmente não precisam estar em tabelas e manipulá-los para armazenamento em um banco de dados relacional pode ser apenas um trabalho desperdiçado.
Apenas esteja ciente do que você está fazendo e não gaste tempo colocando coisas em um banco de dados SQL se parecer errado. Talvez procure usar um banco de dados orientado a documentos como MongoDB .
O recomendador que escrevi recentemente é na verdade um processo de servidor Java que lê os dados brutos do MySQL, faz todo o seu trabalho na memória e fornece dados de recomendação para meu aplicativo por meio de uma API HTTP. Eu nem me preocupei em armazenar os dados de recomendação permanentemente, pois eles podem ser regenerados.