2

我正在对社交网络进行原型设计(使用 ROR 3)并决定查看 Neo4j,虽然它看起来很棒,但我对设计方面的缩放和性能有疑问。

我研究了 Etsy 如何将活动源放在一起(请参阅http://www.slideshare.net/danmckinley/etsy-activity-feeds-architecture),并了解消息队列如何分散活动(例如共享图片和在他们的新闻提要中向您的 500 位左右的朋友提供此活动)。我还了解如何缓存新闻提要(memcache)以及如何针对 Redis 执行查找。

总而言之,似乎要制作一个可以很好扩展的高性能活动源(以及一般的社交网络),常见的模式是使用分片、水平扩展、memcache、rabbitmq、redis、Mongodb、innodb (mysql) 等 - 所有试图补偿高容量,磁盘读取等。 但这在设计方面是相当多的开销..

Neo4J 能否至少在早期消除这种安排的需要?我的意思是它是如此之快,以至于我不需要为扇出和消息传递设置消息队列,不需要为用户执行的每个操作设置“活动”缓存,并且可以使用它来处理排序和存储消息?可以使用这样的系统创建像 Facebook 这样的新闻提要,还是高性能活动提要仅限于基本状态更新?

如果这些问题太宽泛,让我换一种方式问:我可以使用 neo4j 编写 facebook 或 twitter 并消除消息队列以扇出更新的需要(而不是我想要即时获得更新的实时流),新闻提要的内存缓存和缓存的活动提要对象?或者我会发现自己做同样的事情甚至更多来处理每秒数百个请求?

我之所以问,是因为如果 Neo4J 确实可以处理大量数据,而不必使用 Etsy、Twitter 和 Facebook 保持高性能所采用的技巧,那么使用它会节省相当多的时间。

4

1 回答 1

2

是的。事实上,Rene Pickhardt 已经这样做了。

http://www.rene-pickhardt.de/graphity-an-efficient-graph-model-for-retrieving-the-top-k-news-feeds-for-users-in-social-networks/

于 2013-03-19T03:17:00.473 回答