Neo4j对社交图表的响应性很强

时间:2014-01-21 12:51:31

标签: neo4j

我需要有关社交图表性能改进的建议。目标查询可以正常使用较小的结果编号。但它可能会返回超过1000行的大结果。 可以根据密码查询的大响应来调整性能吗?

使用密码查询:

START givenFriend=node:Nodes('id:709387498'),
item=node:ItemCat1Cat2('category:a.b')
MATCH p = givenFriend-[:FRIEND]-friend1-[:FRIEND]-friend2-[:DATA]->item
RETURN p, item

Neo4j核心1.9.5

该图表包含已关联的朋友:

friend1Node-[:FRIEND]->friend1Node

朋友可以有几个数据项,表示为具有属性的节点:

friendNode-[:DATA]->DataNode

数据节点有大约8个属性。其中有一类物业。数据项节点按类别编制索引。

朋友节点号:650,772

朋友关系号:842,755

数据项节点编号:5,640

需要改进的查询应该选择从给定节点id到具有已定义类别的数据项到2个朋友的所有路径。路径具有以下视图:

givenFriend-friend1-friend2-dataItem 

遍历可以改善效果吗?

迁移到2.0.0可以改善数据库模型和查询性能吗?

** UPD

  1. 我使用php库https://github.com/jadell/neo4jphp 但我对其他变种持开放态度。现在我正在寻找新主义(Golang)。我还考虑使用neo4j扩展来执行查询。目标查询也通过neo4j仪表板进行测试。所以没有客户层。
  2. php lib的新版本正在使用X-Stream。我的不是。但是,由于在没有客户端的情况下测试了查询,因此可以省略此因素。
  3. 问题很好。我已经调整了查询​​ - 它不返回节点,而是返回我需要的属性,性能也有所改善。
  4. 如果我理解正确的SLA - 这种类型的请求应该与并发100一起使用,并且每个请求允许的响应时间为2s。查询通过仪表板响应时间:
  5. LIMIT 1 = 195ms

    LIMIT 100 = 564ms

    LIMIT 1000 = 1549ms

    LIMIT 3000 = 3208ms

    SKIP 7000 LIMIT 1 = 2051ms

    响应最多可包含13K条记录。

1 个答案:

答案 0 :(得分:2)

  1. 您使用的是哪个客户?
  2. 你使用流式传输,即X-Stream:true header
  3. 只返回您需要的数据,因此不返回路径或节点,只返回您真正需要执行用例的属性。
  4. 2.0.1将提高事务端点的性能
  5. 您的SLA和当前的响应时间是多少?回复有多大?

相关问题