neo4j vs mongodb用于空间搜索

dri*_*kol 11 spatial mongodb neo4j

我正准备开始一个项目,我将为餐馆建立一个推荐引擎.我一直在neo4j(图db)和mongodb(文档db)之间胡扯.我的节点/文件将是餐厅和人.我知道我会想要一些边缘,例如person-> likes-> restaurant,或person-> ate_at-> restaurant.然而,我的主要问题是在位置Y的X英里内找到餐馆.

如果我在Y的X英里内有20个餐厅,但没有任何边缘连接,neo4j将如何处理空间查询?我知道使用mongodb我可以在lat/long上索引并查询所有餐馆类型.neo4j在断开连接的图形中提供相同的功能吗?

当谈到诸如"我的朋友经常吃哪些餐馆?"之类的问题时,neo4j(图表数据库)的方法是什么?或mongodb(文档数据库)为我提供类似的功能?

Pet*_*uer 10

Neo4j Spatial引入了一个空间RTree(或其他方法)索引,它是图形本身的一部分.这意味着,即使断开连接的域实体也可以通过空间搜索找到,如果您对它们进行索引(即关系会将Spatial索引连接到Restaurants).此外,这足够灵活,您可以将RTree中的原始BBox搜索与其他内容(例如同时检查餐馆类别)结合起来,因为您可以跳出并在图表的不同部分.

这样,neo4j Spatial支持您可以从完整拓扑中获得的全部搜索功能,例如组合搜索和搜索带孔的多边形等.

请注意Neo4j Spatial是0.7,所以请保持温和,并询问http://groups.google.com/group/neo4j/about :)


Rem*_*iet 7

我对Neo4J Spatial并不熟悉,但看起来MongoDB至少是一个很好的选择,因为它是Foursquare使用的数据库,完全符合您描述的目的.MongoDB地理索引非常快,可以很好地扩展.