2013-03-19 29 views
2

我正在构建社交网络原型(使用ROR 3),并决定检查Neo4j,虽然看起来不错,但我有一个关于缩放的问题和设计方面的表现。neoj4 vs“traditional”RDBMS&Memcache/Messaging/Redis解决方案

我已经研究了Etsy如何放在一起并提供活动(请参阅http://www.slideshare.net/danmckinley/etsy-activity-feeds-architecture),并了解消息传递队列如何分散活动(例如共享图片并使您的500多位朋友可以在他们的新闻Feed中使用此活动)。我也了解新闻提要如何缓存(memcache)以及如何针对Redis执行查询。

总的来说,似乎要制作一个高性能的活动Feed,并且可以很好地扩展(以及一般的社交网络)常见的模式是使用分片,水平缩放,memcache,rabbitmq,redis,Mongodb,innodb(mysql)等 - 所有这些都是为了弥补大容量,磁盘读取等。但是,这是相当多的开销设计条款 ..

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

如果这些问题过于宽泛,让我以另一种方式提出问题:我可以使用neo4j编写Facebook或Twitter,并且不需要消息队列来扇出更新(而是希望获得实时流更新fly),新闻传递的memcache和缓存的活动提要对象?或者我会发现自己在做同样的事情,甚至更多的是每秒处理数百个请求?

我问,因为如果能够确实处理大量数据而不必使用Etsy,Twitter和Facebook用来保持高性能的技巧,那么使用Neo4J将节省相当多的时间。

+0

早些时候,这个问题的简短答案是肯定的。记住,解决你没有的问题是没有意义的。你有的问题是你没有原型。如果您正确使用Neo4J(I.E.,使用服务器而不是嵌入式版本),那么将一堆优化添加到不存在的原型并不会很有意义,那么您可以根据需要轻松优化*。 – philosodad 2013-03-19 03:08:28

+0

感谢您的回复 - 我可以欣赏不是直到有问题才编码,但另一方面,为什么要等待众所周知的问题,通常会出现什么问题?我确实有一个使用Active Record的原型,只是不是一个活动源(消息传递已经完成,照片上传等完成了,只是不是新闻源等)。创业公司需要的最后一件事是可以避免的呃逆只是稍微多一点工作..我很想得到一个系统工作,并担心以后的优化 - 但没有资金 - 没有$或时间聘请更多的帮助来处理优化以后.. – 2013-03-19 03:16:03

+0

感谢您的提示服务器vs嵌入式.. – 2013-03-19 03:19:25

回答