product-recommendation-system数据库设计:用户行为数据如何驱动精准推荐 product-recommendation-system数据库设计用户行为数据如何驱动精准推荐【免费下载链接】product-recommendation-system:sunrise: 基于用户的协同过滤算法实现的商品推荐系统 https://github.com/MrQuJL/product-recommendation-system项目地址: https://gitcode.com/gh_mirrors/pr/product-recommendation-system商品推荐系统是现代电商平台的核心竞争力之一而精准推荐的背后离不开科学的数据库设计。product-recommendation-system作为基于用户协同过滤算法的推荐系统其数据库架构巧妙地将用户行为数据转化为推荐动力。本文将深入解析该系统的数据库设计理念揭示用户点击、浏览等行为数据如何通过表结构设计和算法计算最终实现个性化商品推荐。一、推荐系统的数据基石核心表结构设计在product-recommendation-system中数据库设计围绕用户-商品-行为三角关系展开通过精心设计的表结构捕获推荐所需的关键数据。系统主要包含用户行为表、商品信息表和相似度计算表三大核心模块它们共同构成了推荐引擎的数据基础。1.1 商品信息表推荐内容的载体商品表shopping_product是推荐系统的内容源存储了所有可推荐商品的基础信息。其结构设计兼顾了业务需求和推荐算法需要CREATE TABLE shopping_product ( product_id bigint(100) unsigned NOT NULL AUTO_INCREMENT COMMENT 商品id, product_name varchar(40) NOT NULL COMMENT 商品名称, category1_id bigint(20) unsigned NOT NULL COMMENT 商品所属的一级类目, category2_id bigint(20) unsigned NOT NULL COMMENT 商品所属的二级类目, purchase_price decimal(30,0) unsigned NOT NULL COMMENT 采购价, sale_price decimal(30,0) unsigned NOT NULL COMMENT 销售价, inventory int(10) unsigned NOT NULL COMMENT 库存, hits bigint(30) unsigned NOT NULL DEFAULT 0 COMMENT 该商品的点击量, img_src varchar(255) NOT NULL COMMENT 图片地址, description varchar(255) NOT NULL COMMENT 商品描述, gmt_create datetime NOT NULL COMMENT 记录创建的时间, gmt_modified datetime NOT NULL COMMENT 记录修改的日期, is_show tinyint(1) unsigned NOT NULL DEFAULT 1 COMMENT 是否展示该商品1展示0隐藏, is_deleted tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT 逻辑删除标识, PRIMARY KEY (product_id), KEY idx_category1_id (category1_id) USING HASH, KEY idx_category2_id (category2_id) USING HASH ) ENGINEInnoDB AUTO_INCREMENT114 DEFAULT CHARSETutf8;设计亮点引入hits字段记录商品点击量为热门商品推荐提供数据支持采用二级类目category1_id/category2_id实现商品分类体系便于基于类目进行推荐通过is_show和is_deleted字段实现商品的灵活上下架管理为类目字段建立哈希索引优化基于类目筛选的查询性能1.2 用户行为表推荐算法的燃料用户行为数据是协同过滤算法的核心输入系统通过用户行为表shopping_user_active记录用户与商品的交互历史CREATE TABLE shopping_user_active ( user_active_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 用户行为id, member_id bigint(20) NOT NULL COMMENT 用户id, product_id bigint(20) NOT NULL COMMENT 商品id, category1_id bigint(20) NOT NULL COMMENT 商品一级类目id, category2_id bigint(20) NOT NULL COMMENT 商品二级类目id, active_type int(11) NOT NULL COMMENT 行为类型1-点击2-加入购物车3-购买, active_time datetime NOT NULL COMMENT 行为发生时间, gmt_create datetime NOT NULL COMMENT 记录创建时间, gmt_modified datetime NOT NULL COMMENT 记录修改时间, PRIMARY KEY (user_active_id), KEY idx_member_id (member_id) USING HASH, KEY idx_product_id (product_id) USING HASH ) ENGINEInnoDB AUTO_INCREMENT1002 DEFAULT CHARSETutf8;关键设计记录多维度行为类型点击/加购/购买通过active_type字段区分用户兴趣强度同时存储商品ID和类目ID减少推荐计算时的表关联操作为用户ID和商品ID建立哈希索引加速用户行为数据的查询精确到秒的时间戳active_time支持时间衰减等高级推荐策略1.3 用户相似度表协同过滤的核心计算结果基于用户行为数据系统通过协同过滤算法计算用户间相似度并将结果存储在用户相似度表shopping_user_similarity中CREATE TABLE shopping_user_similarity ( similarity_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 相似度记录id, member_id bigint(20) NOT NULL COMMENT 用户id, similarity_member_id bigint(20) NOT NULL COMMENT 相似用户id, similarity_degree double NOT NULL COMMENT 相似度值, gmt_create datetime NOT NULL COMMENT 记录创建时间, gmt_modified datetime NOT NULL COMMENT 记录修改时间, PRIMARY KEY (similarity_id), KEY idx_member_id (member_id) USING HASH ) ENGINEInnoDB AUTO_INCREMENT246 DEFAULT CHARSETutf8;设计考量存储预计算的相似度值避免实时计算带来的性能开销通过similarity_degree字段量化用户间相似程度支持TopN相似用户筛选为用户ID建立索引快速查找目标用户的相似用户群体二、从行为到推荐数据流转全流程用户行为数据如何转化为精准推荐结果product-recommendation-system通过清晰的数据流转流程实现了从原始行为数据到推荐列表的完整转化。推荐数据流转步骤数据采集用户点击商品链接后系统通过前端埋点记录用户行为包括用户ID、商品ID、行为类型和时间戳等关键信息数据存储行为数据被写入shopping_user_active表形成用户行为历史数据库相似度计算后台任务定期扫描用户行为数据使用余弦相似度等算法计算用户间相似度并将结果存入shopping_user_similarity表推荐生成当用户访问平台时系统从相似度表中找出与当前用户最相似的前N个用户兴趣挖掘分析相似用户的行为记录找出当前用户未点击但相似用户感兴趣的商品类目结果排序在目标类目中按商品点击量hits字段等指标排序生成最终推荐列表结果展示将推荐列表返回给前端展示给用户三、用户协同过滤的核心相似度计算机制用户协同过滤是product-recommendation-system的核心算法其本质是基于用户行为的相似性来预测用户兴趣。系统采用多种相似度计算方法包括余弦相似度、皮尔逊相关系数等以适应不同场景的推荐需求。3.1 基于用户行为的相似度计算系统将用户行为转化为向量表示其中每个维度对应一个商品或类目维度值表示用户对该商品/类目的兴趣程度。例如用户A点击了商品1、商品3、商品5用户B点击了商品2、商品3、商品6系统会将这两个用户表示为高维空间中的向量通过计算向量夹角的余弦值来衡量用户相似度3.2 相似度计算的工程实现在代码层面系统通过UserSimilarityService接口及其实现类完成相似度计算// 相似度计算服务接口 public interface UserSimilarityService { // 计算所有用户间的相似度 void calculateAllUserSimilarity(); // 获取指定用户的相似用户列表 ListUserSimilarityDTO getSimilarUsers(Long memberId, int topN); }实现类中采用了优化的余弦相似度算法通过矩阵运算提高计算效率适合处理大规模用户行为数据。计算结果存储在shopping_user_similarity表中供推荐服务快速查询。四、数据库设计优化支撑千万级用户的推荐需求为了应对大规模用户行为数据和实时推荐需求product-recommendation-system在数据库设计上做了多项优化4.1 合理的索引设计系统为所有查询频繁的字段建立了哈希索引如member_id、product_id和category_id等将查询时间从O(n)降低到O(1)显著提升了推荐服务的响应速度。4.2 数据分层存储热数据用户近期行为数据和活跃商品信息保留在MySQL中支持实时查询冷数据历史行为数据和计算中间结果迁移到低成本存储通过定时任务进行归档4.3 读写分离采用主从复制架构将写操作如用户行为记录和读操作如推荐列表查询分离到不同数据库实例避免读写冲突影响系统性能。五、实战案例从数据库设计到推荐效果以时尚女装类目推荐为例我们来看看数据库设计如何影响推荐效果数据采集多位用户点击了时尚潮流女装product_id1和冬季卫衣product_id6相似度计算系统发现这些用户的行为向量高度相似将他们标记为相似用户similarity_degree0.8推荐生成当新用户点击时尚潮流女装后系统查找相似用户群体发现他们也喜欢冬季卫衣结果展示将冬季卫衣推荐给新用户利用hits字段确保推荐的是该类目中的热门商品六、总结数据驱动的推荐系统设计最佳实践product-recommendation-system的数据库设计展示了如何将用户行为数据转化为推荐动力的完整思路。通过精心设计的表结构、高效的相似度计算和合理的性能优化系统实现了精准且实时的商品推荐。核心启示推荐系统的数据库设计应紧密结合算法需求优化数据存储格式用户行为数据的质量直接影响推荐效果需完整记录行为类型、时间等维度预计算相似度等中间结果是平衡推荐质量和系统性能的关键合理的索引设计和存储策略是支撑大规模用户推荐的技术基础通过这套数据库设计product-recommendation-system成功将用户行为数据转化为商业价值为电商平台提供了强大的个性化推荐能力。无论是初学者还是有经验的开发者都能从中学习到数据驱动推荐系统的设计精髓。【免费下载链接】product-recommendation-system:sunrise: 基于用户的协同过滤算法实现的商品推荐系统 https://github.com/MrQuJL/product-recommendation-system项目地址: https://gitcode.com/gh_mirrors/pr/product-recommendation-system创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考