2

这个问题的灵感来自highscalability.com 上的文章“为什么 Facebook、Digg 和 Twitter 如此难以扩展? ”

那么有哪些数据库系统(无论多么晦涩难懂)能够更好地处理这种类型的数据呢?

4

4 回答 4

7

拥有一个数据库系统,其中数据模型是为您尝试表示的数据结构量身定制的,这通常是有利的。社交网络非常适合 Graph 数据库,例如Allegro GraphNeo4j等。

Neo4j 博客上有一篇关于如何在图形数据库中表示社交网络的好文章,其中包含使用 Neo4j 的示例。

图数据库的好处是存储数据,以便遍历实体之间的连接是一种非常快速的操作,允许您快速遍历复杂的网络。在关系数据库的当前实现中,这些操作通常(充其量)是昂贵的连接操作。与关系数据库一样,图形数据库在扩展到多个硬件节点方面仍然存在小问题。然而,对于社交网络类型的数据,图形数据库对多个硬件节点的需求应该比关系数据库少得多,单台机器上几十亿个节点是没有问题的。扩展到多个硬件节点是键值存储的亮点,因为键值存储中的实体彼此完全隔离。这里的问题是,社交网络中没有任何东西是孤立的,这意味着要模拟连接,需要对数据库进行多个查询,每个实体一个。这会很慢,特别是对于朋友之友类型的查询,您只能通过每个查询发现一个级别的朋友。

免责声明:我是 Neo4j 团队的成员。

于 2009-10-23T10:16:24.960 回答
3

检查NOSQL debrief,它在几个分布式非关系数据库上有有趣的资源:

演示幻灯片和视频
介绍会议 - Todd Lipcon,Cloudera(幻灯片,视频 1,视频 2)
Voldemort - Jay Kreps,Linkedin(幻灯片 pdf ppt,视频 1,视频 2)
Cassandra - Avinash Lakshman,Facebook(幻灯片 pdf ppt,视频)
Dynomite - Cliff Moon , Powerset (幻灯片, 视频)
HBase - Ryan Rawson, Stumbleupon (幻灯片, 视频)
Hypertable - Doug Judd, Zvents (幻灯片 pdf ppt, video1, video2)
CouchDB - Chris Anderson, couch.io (slides, video1, video2)

VPork - Jon Travis,Springsource(幻灯片,视频)
MongoDb - Dwight Merriman,10gen(幻灯片,视频)
Infinite Scalability - Jonas S Karlsson,Google(幻灯片,视频)

Digg 的 John Quinn 的一些视频,Last.fm 的 Martin Dittus 的其余视频。图片来自 Last.fm 的 Russ Garrett。

对于幻灯片和视频的链接,请查看原始页面,它们太多了,无法粘贴。

您可能想阅读NoSQL:如果它也这么简单(甚至是维基百科上的Nosql条目)。

于 2009-10-22T23:28:33.247 回答
1

文章提到memcached的时候间接告诉了你答案。这是一个键值存储,它将所有数据保存在 RAM 中。显然,您必须有额外的数据存储来将数据保存在硬盘驱动器上,但它们可能也是键值存储。其中有很多,例如HadoopCouchDBTokyo CabinetRedis

您还可以使用列存储,例如MonetDB,您只需检索您感兴趣的字段,而不是整个表行。

于 2009-10-22T23:11:05.160 回答
0

我建议您尝试图形数据库。它可以说是社交媒体的最佳解决方案之一,因为它在处理大量实体之间的关系时表现出色。

尝试阅读这篇文章,看看图形数据库是否适合您:https ://www.guidearea.com/social-media-database-design-using-graph-database-neo4j/

于 2020-06-09T10:57:04.893 回答