当前位置:   article > 正文

用户关系表 存储_如何存储分销社交电商中用户间的推荐关系之一 [算法之美]...

分销推荐关系优化分表处理

一、问题描述

分销社交电商系统产品需求:记录用户之间的推荐关系:A 推荐 B,B 推荐 C,直至 N,理论上无限级。同时由于数据展示的关系,需要快速查询出某一个人所有直接和间接推荐的用户。

以下图一张简单的三国人物图谱举例:

bd6736bfc62389f2da4e33e5be2390b0.png

二、常见的解决方案

使用经典的结构,即每一条记录用一个字段记录推荐人编号-父节点,从而能够建立二维的关系表,然后依次递归所有记录找出推荐关系。

上述数据可以描述为如下图:

6dd5923cd8777bd668bd498a96764ff3.png

优点:设计直观,一目了然。代码实现起来简单,明了。

缺点:由于节点间的推荐关系是直接记录的,因此对表的任何增查改删(CRUD)的操作都是用多级的递归操作实现的,在层级增多时,导致不断访问数据库,随着循环次数增多,效率低下,执行时间开销呈几何指数增长。

改进:在数据量相对较小的情况下,可以借助于缓存机制来做优化,将整个完整树的信息放入内存进行处理,避免直接对数据库操作的性能开销。

而在设计系统时,预计容纳的用户数量大,且有多层的推荐关系的约束条件下,该方案的数据库操作的效率可能会低到无法忍受,且会拖慢整个系统,所以寻找一种查询效率高的方案成为首选。

三、前序遍历预排序遍历树算法解决方案

推荐关系可以用数据结构中的二叉树来解决,二叉树在数据结构和算法中有几种遍历方式:前序、中序、后序及层序。

一般数据库系统应用中,查询的需求总要大于删除和修改。为了避免对于树形结构查询时的递归

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/403661
推荐阅读
相关标签
  

闽ICP备14008679号