gpt4 book ai didi

database - 想知道 Facebook 是如何实现 "Mutual friends"功能的

转载 作者:太空狗 更新时间:2023-10-30 01:48:57 25 4
gpt4 key购买 nike

我目前正在开发一个应用程序来让学生管理他们的类(class),但我真的不知道如何为特定功能设计数据库。与 Facebook 非常相似,客户希望当学生显示当前在特定类(class)中的人员列表时,首先显示与登录用户拥有最多共同类(class)的人员。与 Facebook 功能“好友推荐”几乎相同,但多了一个过滤器。

作为附加功能,我想添加一个搜索功能,让学生可以搜索另一个类(class),并在搜索结果中首先显示与登录用户有最多共同类(class)的人。

我目前使用 MySQL,我计划使用 Cassandra 来实现其他一些功能,我还使用 Memcached 进行结果缓存,使用 Sphinx 进行搜索。

谢谢。

--

该应用程序是用 Python 开发的,顺便说一句

而且我忘了提到标准方法(使用一个很好的 MySQL 查询通过 ORDER BY 子句计算所有这些)太慢了。因此,由于读取比读取更频繁,我希望大部分逻辑在添加关系 people <-> course 时发生一次。

我考虑过更新一个特定于一个元组(用户、类(class))的“互助类(class)”计数器,当登录用户加入新类(class)时,该计数器将为类(class)的所有用户增加(或在他离开时减少)。

最佳答案

假设您有一个名为Users 的表,主键是UserID。然后,您有一个名为 Friends 的表,其中包含 2 列,分别名为 UserID (PK) 和 FriendUserID

假设您有 2 个用户,分别是 20 和 50。

当 20 添加 50 为 friend 时,应用程序添加一个新行:

INSERT INTO `Friends` (`UserID`, `FriendUserID`) VALUES (20, 50)

当 50 确认友谊时,您添加另一行并切换值:

INSERT INTO `Friends` (`UserID`, `FriendUserID`) VALUES (50, 20)

如果您想找到 20 到 50 岁之间的共同 friend ,只需:

SELECT `UserID` FROM `Friends` AS `A`, `Friends` AS B WHERE `A`.`FriendUserID` = 20 AND `A`.`UserID` = `B`.`UserID` AND `B`.`FriendUserID` = 50

关于database - 想知道 Facebook 是如何实现 "Mutual friends"功能的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2536891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com