Hello Mustafa,

Neo4j has two modes: server and embedded, each with its own pros and cons.

In the embedded mode, the database sits together with your application. 
This has some upside (performance!!) but also some downside as well 
(maintainability, scalability as app and database are tied together).
In the server mode, for now the client makes HTTP calls, adding some 
network latency. This will change once the binary protocol is introduced. 

As to wether to use GrapheneDB or not, to avoid HTTP calls, I think the 
question should rather be *if you should use server or embedded mode*. If 
you run in server mode, you'll always be doing HTTP calls, regardless of 
where it's hosted (GrapheneDB or on your own).

If you have a specific feature that is *performance-critical* (complex 
traversals or certain queries with very high throughput) I would encourage 
you to look at using server extensions 
<http://neo4j.com/docs/stable/server-unmanaged-extensions.html>.
We've seen plenty of customers succeed with this approach:

   - Maintainability of the graph database is great because it's not tied 
   to the application server. It can also be outsourced to 3rd party hosting 
   services like GrapheneDB <http://www.graphenedb.com> (custom extensions 
   are supported in the Developer plan and higher).
   - You can use *Cypher for most of your implementation*.
   - You can* implement time-critical pieces on top of the Java API *using 
   extensions, achieving almost as performant results as in embedded mode.

Once the binary protocol is released, you can take advantage of the drastic 
performance improvements, without having to change much in your 
application. Probably just the way the Cypher queries are sent to the 
database, which is implemented in the driver. 

When working with server mode, it's really important to use persistent 
connections (TLS negotiation phase, HTTP latency to establish a new 
connection).
If your use case allows for it, it's possible to wrap thousands of 
operations into single transactions and reduce the number of HTTP requests.
There are a number of other things to take into account to achieve best 
performance results with server mode, but I wanted to mention these as they 
are directly related to the HTTP calls performance topic.

Cheers!
Alberto.



-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to