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.
