首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图形数据库性能

图形数据库性能
EN

Stack Overflow用户
提问于 2015-04-14 14:22:49
回答 2查看 253关注 0票数 1

我读了一本在Neo4j网站上推荐的关于图形数据库性能的书:http://neo4j.com/books/graph-databases/,它说:

“与关系数据库不同,在关系数据库中,连接密集型查询性能随着数据集的增大而恶化,而图形数据库的性能往往保持相对不变,即使数据集不断增长,这是因为查询被本地化到图形的部分.因此,每个查询的执行时间仅与为满足该查询而遍历的图的大小成正比,而不是与整个图的大小成正比。”

例如,我只想返回一个标签为“医生”的节点,它是定位在图的一部分上的。但是我的问题是,数据库本身是如何知道这些节点在哪里的?换句话说,它不需要遍历所有节点来确定它们是否满足查询并在此基础上作出决定吗?

EN

回答 2

Stack Overflow用户

发布于 2015-04-14 15:36:36

Neo4j为节点标签设置了特殊的索引,这样就可以在不搜索所有节点的情况下找到标签的所有节点。除此之外,你可以:

  • 根据节点属性(模式索引或遗留索引)创建自己的索引,以便找到节点作为起点。
  • 按节点I查询以找到起点(但如果需要更永久地标识节点,则建议使用自己的属性和索引)
票数 1
EN

Stack Overflow用户

发布于 2015-04-14 22:08:56

一般来说,本地化搜索意味着:您从一小部分起点开始,它可以是人员、产品、地点、订单等。

用标签标注的图的一部分通常不属于该类别,也就是说,all doctors并不是一个小的起点集。

如果您从所有的医生到他们的社区遍历,您的查询可能会触及图形的很大一部分。

这样的查询将是一个图形本地查询:

代码语言:javascript
复制
MATCH (:City {name:"SFO"})<-[:RESIDES_IN]-(d:Doctor)-[presc:PRESCRIBES]->(m:Medicine)
RETURN d.name, m.name, sum(presc.amount) as amount
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29629903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档