这个问题的灵感来自于文章" 为什么Facebook,Digg和Twitter如此难以扩展? "在highscalability.com上
那么哪些数据库系统(无论多么模糊)能够更好地处理这类数据呢?
拥有一个数据库系统,其中数据模型是为您尝试表示的数据结构定制的,这通常是有利的.社交网络非常适合Graph数据库,例如Allegro Graph,Neo4j等.
有一个在Neo4j的博客好文章就如何代表社交网络的图形数据库,用Neo4j的例子.
图形数据库的好处是存储数据,以便遍历实体之间的连接是一个非常快速的操作,允许您快速遍历复杂的网络.在关系数据库的当前实现中,这些操作通常是(最多)昂贵的连接操作.与关系数据库一样,图形数据库在向外扩展到多个硬件节点时仍然存在轻微问题.然而,对于图形数据库而言,对于社交网络类型的数据的关系数据库,对多个硬件节点的需求应该少得多,单个机器上的几十亿个节点都没有问题.扩展到多个硬件节点是键值存储发光的地方,因为键值存储中的实体彼此完全隔离.这里的问题是社交网络中没有任何东西被隔离,这意味着要模拟连接需要对数据库进行多次查询,每个实体一次.这将是缓慢的,特别是对于朋友的朋友类型的查询,其中您只发现每个查询的一个级别的朋友.
免责声明:我是Neo4j团队的成员.