Task01:熟悉新闻推荐系统的基本流程(数据库设计)

Task01:熟悉新闻推荐系统的基本流程(数据库设计)

0.代码版本

该专栏的博客当中涉及的所有代码,均为组队学习期间的版本,大概在2021年12月12日左右,某一个可能的参考版本链接如下:

https://github.com/datawhalechina/fun-rec/tree/9bcfafaae339c443cc7911b9070bf52adef9e994

1. 相关文件

PS D:\Project\fun-rec\codes\news_recsys\news_rec_server> tree /f /a
卷 Data 的文件夹 PATH 列表
卷序列号为 7876-8A9C
D:.
|
+---controller
|       log_controller.py
|		这是MVC架构当中的controller部分,即:
|		MySQL内loginfo库中log_Y-m-d表的控制文件
|
|       user_action_controller.py
|		这是MVC架构当中的controller部分,即:
|		MySQL内userinfo库中register_user表的控制文件
|		也控制user_collections、user_likes、user_read
|		主要是在注册时新增用户,登录时做身份校验
|		以及根据前端传来的用户行为更新对应的数据
|		例如删除用户的喜欢,或者是新增用户的喜欢
|
+---dao
    |   mongo_server.py
	|	MVC架构当中MongoDB数据库的Model文件
	|	用于和MongoDB数据库进行交互
	|	返回与数据库的连接使得数据库被操作
	|	
    |   mysql_server.py
	|	MVC架构当中MySQL数据库的Model文件
	|	用于和MySQL数据库进行交互,返回与数据库的连接
	|
    |   README.md
	|	项目的说明文件
	|
    |   redis_server.py
	|	MVC架构当中Redis数据库的Model文件
	|	用于和Redis数据库进行交互,返回与数据库的连接
    |
    \---entity
	 \--
        |    logitem.py
		|	定义MySQL内loginfo库log_Y-m-d表的结构
		|	主要是用来存储用户行为,包括阅读、点赞等
		|	
        |    register_user.py
		|	定义MySQL内userinfo库register_user表的结构
		|	主要是为了存储已经注册的用户的个人信息及账户
		|	
        |    user_collections.py
		|	定义MySQL内userinfo库user_collections表的结构
		|	主要是用来存储用户收藏行为的详细信息
		|	
        |    user_exposure.py
		|	定义MySQL内userinfo库exposure_Y-m-d表的结构
		|	主要是用来存储用户的曝光表,每天存一个版本
		|	也就是说,每个表包含截止到当天的所有曝光数据
		|	
        |    user_likes.py
		|	定义MySQL内userinfo库user_likes表的结构
		|	主要是用来存储用户点赞行为的详细信息
		|	
        |    user_read.py
		|	定义MySQL内userinfo库user_read表的结构
		|	主要是用来存储用户阅读行为的详细信息
		|----------------------------------------------------------

2. MySQL

在这里插入图片描述

我感觉有点神奇,user_likesuser_collections为啥同时存在昵称username和用户编号userid,这两者都是唯一的,不允许重复啊

所以说根据其中一个,就可以确定用户的身份,就像user_readexposure_Y-m-d,都只用唯一的id标识用户和新闻

而且这个exposure_Y-m-d也挺奇怪,存的是当天的曝光表,注意,是当天的曝光,也就是,每天一个表,从Redis更新过来

我想起来了,物料处理的时候会有一个叫news_to_redis.py的文件,在那里面会清空Redis所有的数据,也就是Redis按天更新

3. MongoDB

在这里插入图片描述
这里也挺神奇的,RedisProtrail当中竟然没有新闻的热度值,热度值是在FeatureProtrail当中,随着物料处理按天进行热度更新

这里的RedisProtrail的数据就是流向Redis[1]Redis[2]的用来展示新闻的数据,包含的静态信息和动态信息

FeatureProtrail的数据才是被cold_start.pyhot_recall.py处理之后流向Redis[0]用来生成推荐和生成热门的

而且还有一个问题,为什么用户画像当中要包含密码啊?这个属性好像从来没有被用到吧,即便后面升级也不会使用吧

然后就是关于历史行为的统计了,这里设定的是对用户过去15天内的likecollections进行top3新闻类别等的统计,没有阅读量

4. Redis

在这里插入图片描述

这里基本都还算正常吧,神奇的是曝光表,这个东西好像是只记录当天的推荐历史,去重的话也只是针对当天的历史去重,可以有昨天的

如同上文所说,物料处理的时候会有一个叫news_to_redis.py的文件,在那里面会清空Redis所有的数据,也就是Redis按天更新

5. 流程图示

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值