2017-05-28 87 views
1

我正在开发图形数据库在后端使用neo4j和Spring Data Neo4j(SDN)。和SDN允许我连接使用到的Neo4j HTTP或螺栓和SDN还提供所有的配置我只需要提到的包括性和依赖性螺栓给了什么优势超过HTTP,为什么我们应该更喜欢螺栓,

#Replace http with bolt  
spring: 
    data: 
     neo4j: 
      uri: http://localhost:7474 
      username: neo4j 
      password: nopassword 

然而,在使用HTTP我不需要包括任何在刚刚spring-boot-starter-data-neo4j其他依赖正常工作

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-neo4j</artifactId> 
</dependency> 

但使用BOLT我需要包括一个额外的依赖

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-neo4j</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.neo4j</groupId> 
       <artifactId>neo4j-ogm-http-driver</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-neo4j</artifactId> 
     <version>4.2.2.BUILD-SNAPSHOT</version> 
    </dependency> 
    <dependency> 
     <groupId>org.neo4j</groupId> 
     <artifactId>neo4j-ogm-bolt-driver</artifactId> 
     <version>2.1.2</version> 
    </dependency> 

所以升等我打破我的问题在更小的问题

  1. 为什么我们应该使用螺栓而不是HTTP?
  2. 它与HTTP有何不同?
  3. 它对HTTP有什么优点或缺点?
  4. 我应该去用它还是只是HTTP很好?

回答

2

螺栓是一种二进制协议,更紧凑,吞吐量高于HTTP。您可能考虑在当前版本的SDN中使用HTTP的唯一原因是您使用HAProxy前置的HA设置。 否则,螺栓应该是你的默认选择。

更多关于螺栓:https://neo4j.com/blog/neo4j-3-0-language-drivers/ https://dzone.com/articles/introducing-bolt-neo4js-upcoming-binary-protocol-p

+0

嗨@Luanne,谢谢你的回答很满意,你所提到的博客谈话也不错,但我有具有与该螺栓一些性能问题的一些人,我有用链接更新了这个问题。你对这些有什么看法? –

+1

我会说:1)为什么你在问这个问题之前没有做过这方面的研究?2)这些显然是反对使用BOLT的原因,3)现在你需要权衡这个问题。 –

+1

@NareshJoshi stackoverflow不适合辩论。主要问题是回答,请接受它,如果令人满意的话 - 欢迎长时间讨论neo4j-slack-users https://neo4j-users-slack-invite.herokuapp.com/ – Luanne