首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存图形(数据库)的良好解决方案

保存图形(数据库)的良好解决方案
EN

Stack Overflow用户
提问于 2012-04-02 05:58:01
回答 3查看 1.3K关注 0票数 2

我正在为vk.com开发约会应用程序(这是俄罗斯脸书),所以我需要保持社交图(由共同的兴趣,朋友,最喜欢的音乐,电影等链接的个人资料)。它看起来像是“用户A比用户C更接近用户B,因为他们有2个共同的朋友和5个共同的兴趣,而不是1个共同的朋友和4个共同的兴趣”,“用户C最接近...",等等。这个问题的好解决方案是什么?我从数学中了解图形的理论,但我还没有在计算机科学中使用过图形(我是web开发人员),我认为这个问题可以通过为任何用户生成图形并将其保存在NoSQL数据库(如mongo或redis)中来解决,但这是一个糟糕的解决方案(没有实时更改,生成将需要很长时间)。你对这个问题怎么看?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-02 10:19:29

你可以考虑推特的一个选择是FlockDB (Neo4j已经被提到过了)。如果您的问题空间是大规模的简单查询,这可能是合适的。它不像Neo那样支持图形漫游查询,但被Twitter用来存储他们的社交图,并支持诸如“谁做了一个关注”等查询。

票数 2
EN

Stack Overflow用户

发布于 2012-04-02 06:12:59

与基于键值的数据库相比,有更多专门的NoSQL解决方案。看看像neo4j这样的图形数据库。图形数据库将很容易让您以直观的方式存储和操作图形。许多基于图形的算法将运行得非常快(与sql相比)。

你还应该看看大型社交网络是如何做到这一点的,特别是如果你对分析整个图感兴趣的话(对于数据挖掘,这超出了单个用户的实时计算)。据我所知,facebook使用大量缓存的MySQL数据库来处理web请求,Hadoop/HBase和Hive来处理繁重的数据计算。除了他们的消息平台,facebook的大多数实时部分都不需要NoSQL。

票数 2
EN

Stack Overflow用户

发布于 2012-04-02 21:36:45

老实说,我不认为Facebook将他们的主要数据存储在图形数据库中。我认为他们存储了朋友列表和兴趣列表,等等。看看他们的文档至少会告诉你它是如何组织的。如果信息“我喜欢电影”与我的帐户和兴趣“电影”相关联,就可以很容易地查找我喜欢什么以及谁也喜欢电影。

为了计算整体的“贴近度”...如果你只需要至少有一个共同朋友的人,那么直接评估所有这些人的亲密度可能已经足够快了。否则,我会考虑使用更高维度的近似k-d树搜索,对搜索空间中的维度进行内部测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9968694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档