问题:我正在开发一种有卖家和买家的电子商务平台。在我看来,卖家也可以是买家,即每个用户都可以购买加卖。
所以我有一个名为用户的表。现在我想实现一个跟随供应商/用户功能,其中用户可以点击关注,他看到所有列出的商品他的帐户下的供应商(直到他取消)。
现在我的传统方法是创建一个包含密钥和两列的表来存储关注者和后续例如:
|id | userId| vendorId
所以当用户继续关注其他用户时,它会横向移动。但如果我有一个用户跟随很多人(比如 100 ),我的查询可能会花费很多时间为每个用户选择100条记录。
问题:如何实现以下机制?有没有比这更好的方法?我使用的是PHP和Mysql。
研究:我尝试了解facebook和Pinterest如何处理它,但这对我来说似乎有点太大了,因为我没想到会有很多用户。我是否需要使用 memcache 来提高性能并避免重复查询?我是否可以在与Mysql并行的任何意义上使用文档数据库?
我想要一个简单但功能强大的实现,如果我的用户群逐渐增长到几千,那么它将会扩展。
任何帮助或见解都会非常有用。
答案 0 :(得分:3)
因为,根据我对这种情况的理解,用户可能关注许多供应商,并且供应商可能有许多关注者,这构成了许多关系,因此是在数据库中实现此目的的唯一标准化方式架构应该通过使用链接表,完全如您所述。
至于性能方面的考虑,我不会太担心它,因为它可以在userId和vendorId上编入索引,查询应该没问题。
答案 1 :(得分:2)
联结表可能是最好的方法,但仍然很大程度上取决于您的clustered index。
使用替换键ID上的键进行聚类的表可以更快地添加新记录。
使用密钥(userId,vendorId)创建的表将使您查找供应商的查询更快地跟随某个用户