Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Neo4j Standalone vs Embedded server?

I want to know what is the difference between these two implementations of neo4j. Of-course names of both techniques is self-explanatory,but still what are the main differences? What factors should be considered in deciding which technique to use in the project? Pros and cons.

P.S. Sorry if it is a repeat question but I searched and was not able to find any ques which answers my question.

like image 323
codecool Avatar asked Jun 10 '11 17:06

codecool


1 Answers

Because the standalone server is built on the embedded server, the general rule of thumb is that the embedded server is more capable and has (obviously) lower latency. Either can operate in High-Availability mode, allow monitoring, and even accept connections from the neo4j-shell. With the server though, you get more functionality out-of-the-box, like remoting, basic visualization, monitoring interface, etc.

The differences are otherwise the practical ones you'd imagine. Choosing a deployment approach is influenced by two things:

  1. Language - embedded mode requires that you're implementing your application with a JVM compatible language. The server supports any language/framework that can send HTTP requests.
  2. Hardware - sharing physical resources between your application and Neo4j can be demanding. Scaling may argue for a dedicated machine to split out the persistence layer. The server obviously has a remote API to support segmenting your application.

It's otherwise difficult to give guidance without a specific usage scenario. Deploying into an existing Service Oriented Architecture? Probably server. Running on an copier machine? Go embedded. From scratch web application? What's the rest of your stack?

like image 79
akollegger Avatar answered Nov 03 '22 01:11

akollegger