Bom dia Leonardo,
Existem dois tipos de algoritmos: real time (inline) e não real time. TOdos os algoritmos montam um modelo.. enquanto esse modelo estiver na sua memória você pode perguntar queries a vontade, descobrindo recomendações.
Então temos dois momentos:
- posso perguntar a qualquer momento, dado que o modelo esteja na minha memória (alguns modelos ocupam mais, outros menos memória)
- atualizo o modelo de tempo em tempo ou inline (live/real time)? isto é, quando o usuário compra algo, posso atualizar rapidamente o modelo ou tenho que modelar novamente do zero? isso é um ponto bastante discutido e tem algoritmos para os dois lados
Da maneira que fizemos você pode armazenar as diversas recomendações em um banco como vocês citaram, ou pode manter o modelo (referenciado pela variável) na memória e pedir para ele recomendações sempre que quiser.
Tudo depende do algoritmo que estiver usando e da abordagem que preferir
Se estiver usando Java como fizemos aqui você pode fazer um micro serviço (olha só... aqui sim micro serviço para fazer sentido... - nem sempre faz, cuidado) só para gerar as recomendações para seu usuário a medida que ele precisa.
[]s
Guilherme