什么是收集用户数据的正确方法,以使其可用于模型构建(离线)和推荐系统中的预测(在线)?假如说:
- 预测是通过多个服务器完成的。服务器有一些可用内存,但从用户数据的角度来看,它们被认为是无状态的。这意味着用户可以在会话期间与不同的机器进行交互,并且无论用户登陆哪台机器,用户数据都应该可用。
- 所有附加到文章和推荐项目(如分类、文章文本等)的元数据都可以在线和离线使用。但是,获取此数据需要 db 调用。
- 一些用户活动需要相当快地用于推理,而其他活动可能在它发生几小时后可用。例如,在用户点击推荐后,我们希望尽快提供此信息。另一方面,在用户浏览该内容后,可以在推理小时内获得长期浏览行为数据。
- 所有用户的数据都太大而无法在训练时保存在内存中。
问题:该系统应该大规模运行。人们会使用哪些主要技术和主要数据结构?