database - 图数据库返回社交网络中两个人的共同 friend 列表

标签 database graph redis orientdb

是否有任何具有内置功能的图形数据库可以返回 2 人或多人之间的共同 friend 列表 - 就像在 Facebook 这样的社交网络中一样?结果应尽可能快地返回,而不需要执行复杂的计算或遍历数据库。如果不能,有哪些实现方式? OriendDB 呢?结合使用图数据库和 Redis 怎么样?

最佳答案

不确定特定的图形数据库(我是通过在 Redis 之上构建自己的图形数据库来解决这个问题的)但是假设 friend 意味着直接连接,找到共同的 friend 相当简单 - 只需从每个人和计算交点。

Redis 有一个命令可以非常快速地本地执行此操作。它的 SQL 查询也相当简单。获取单个节点的所有连接应该在任何图形数据库上都可用,即使您需要检索完整列表并计算应用程序代码中的交集,只要您不必与人打交道,性能可能就足够了拥有成千上万/数百万 friend 的人。

在处理间接关系时变得更加复杂 - 交集操作是相同的,但是如果不遍历图形,集合就不会以所需的形式存在,所以在计算交集之前,你需要构建一个所有的集合每个用户的二级连接。您可以将此作为查询的第一步,也可以在连接更改时保持永久集更新 - 适当的方法取决于您是否需要优化数据使用和写入性能或读取性能。

关于database - 图数据库返回社交网络中两个人的共同 friend 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7240296/

相关文章:

sql - 使用同义词与 View 的优缺点是什么?

python - redis 获取函数返回无

caching - Redis 只是一个缓存吗?

php - 无法使用 symfony2 将 onetoone 转换为 onetomany

php - 运行 "endless"进程监控 MySQL 的最佳方法?

database - 在 Coldfusion 中将 ascii 字符转换回 uni-code

c# - 如何通过分解 y 轴来减小 mschart 的高度

matrix - 如何在排序的 MxN 矩阵中找到第 K 个最小的和

python - 2 轴 Reportlab 图

ruby-on-rails - redis 无法连接到 rails (ECONNREFUSED)