【问题标题】:System database design for article personalized recommendation system文章个性化推荐系统的系统数据库设计
【发布时间】:2020-05-25 19:17:38
【问题描述】:

您好我正在设计一个系统,它从 API 中获取文章链接,将文章分类,然后根据用户指定的过滤参数向用户发送推荐文章链接列表。

我计划的最初方法是使用 SQL 数据库来存储排序的文章以及用户信息。然后每天我都会在文章数据库上运行一个 SQL 查询,让每个用户获取相关的文章链接。我需要弄清楚的一件事是处理重复的文章/用户,但即使假设存在独特的实例,这种方法似乎效率也很低。

我想知道是否有更好的方法来设计系统以实现规模化,即系统是否必须处理数百万篇文章和数百万用户的范围?

根据相似的文章过滤参数将用户分组是否会有所帮助(因此,如果两个或更多用户具有相同的文章数据库查询,则可能需要运行更少的查询)?还是这种努力太复杂,不值得?

【问题讨论】:

    标签: sql database database-design architecture recommendation-engine


    【解决方案1】:

    用户自己指定过滤器,并且应该发送匹配过滤器的新文章?听起来更像是“有新文章出现时提醒我”?

    这个想法是自发的:

    • 如果文章数量>>用户然后反转逻辑:在每篇新文章上检查是否有一些用户过滤匹配并将其附加到用户的警报通道。 (对于新文章的复杂度是 O(n),其中 n 是用户数量)

    • 如果过滤器评估可以很容易地标准化(并拆分为过滤器部分),则将过滤器单独存储并从过滤器引用到使用该过滤器的用户。然后您只需要评估新文章是否与过滤器匹配。 (对于新文章的复杂度是 O(n),其中 n 是过滤器数量)

    一般:

    • 通过异步处理所有这些来卸载峰值。例如。在队列中缓冲新文章并逐步处理它们。对于每个用户的“警报频道”,您也可以使用发布/订阅频道

    其他想法:

    • 考虑使用现有的库和工具进行基于 item-item(或 user-item)的推荐

    一般来说,一旦需要,您的评估就会变得复杂(如果它适用于您的情况,可以更简单地开始,并且使用一种无​​法完美扩展的算法)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-28
      • 2013-02-28
      • 2013-08-16
      • 2014-06-10
      • 2018-10-23
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多