Performence of neo4j core api versus rest api

465 views
Skip to first unread message

Ramesh Yakkala

unread,
Aug 16, 2013, 2:56:14 AM8/16/13
to ne...@googlegroups.com
Hi,

I am new to Neo4j db, and we are using the enterprise version of neo4j db. I would like to know that ,

Is there a performance hit if I use java rest api to communicate with neo4j db rather than neo4j java core api for the unlimited data processing?

May I know that the in terms of java vs Python which technology give better performance to communicating with neo4j db?

Thanks,
Ramesh Yakkala.


Michael Hunger

unread,
Aug 16, 2013, 4:21:01 AM8/16/13
to ne...@googlegroups.com
With network overhead and serialization there is about 10x degradation per request

That's why we encourage sending cypher and traversals to the server and not running fine grained ops over the wire

You can also leverage streaming and batching for better performance

Sent from mobile device
--
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 neo4j+un...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Ramesh Yakkala

unread,
Aug 16, 2013, 5:53:20 AM8/16/13
to ne...@googlegroups.com
Hi Michael,

Thanks for the reply.

We have enterprise edition of Neo4j, though is it  a performance hit using rest api?

What is the difference between community version of neo4j server and enterprise edition of neo4j server?

May I know that the in terms of java vs Python which technology give better performance to communicating with neo4j db?
 
Thanks,
Ramesh Yakkala.

Jim Webber

unread,
Aug 16, 2013, 6:26:39 AM8/16/13
to ne...@googlegroups.com
Hi Ramesh,

> We have enterprise edition of Neo4j, though is it a performance hit using rest api?

The REST API uses a HTTP connection and a textual protocol. The Core API and friends are in-process calls, that's why the REST API is generally slower. However using the REST API means you have flexibility in deployment and choice of platforms from which you can call Neo4j.

When using Cypher, the difference is less pronounced.

> What is the difference between community version of neo4j server and enterprise edition of neo4j server?

There are two important aspects to this: licensing and functionality.

1. Licensing: Neo4j Community edition is licensed under GPL, while Enterprise is licensed under AGPL. If either license is not appropriate for you, then you should contact Neo Technology about a commercial license.

2. Functionality: Enterprise adds the ability to take online backups and create high availability clusters. It also has a more predictable, performant internal cache implementation. Otherwise there is no difference in functionality: Neo4j community is a totally functional, unlimited to use database too.

> May I know that the in terms of java vs Python which technology give better performance to communicating with neo4j db?

That depends on how you choose to use it. If you use a JVM language, you can bind to the Neo4j Java APIs and avoid network penalties. However, the Cypher query language is fast becoming the preferred "API" for Neo4j and that can be used from whatever platform you choose.

In the general case, when I'm building a system with Neo4j I would use the language that makes me most productive and then use whatever drivers/APIs are available on that stack to communicate with the database.

Hope that helps,

Jim

Dmitry Paranyushkin

unread,
Feb 5, 2014, 8:10:45 PM2/5/14
to ne...@googlegroups.com

Hi Jim,

How would you use Cypher specifically? Through REST API? Or there's another, more direct way?

I want to use it from my Node.Js and my Neo4J is a server installation (not embedded).

Thanks!

Dmitry

Daniel Bunzendahl

unread,
Jul 23, 2015, 4:46:18 PM7/23/15
to Neo4j, supade...@gmail.com
Hi Jim, hi Dmitry,

while I stumbled over this discussion I would like to know your experiences since posting this.

My major issue is to find out how to get maximal performance gain using node.js instead of Java.

You wrote Cypher became fast the preferred "API" to use Neo4J. I really love it too.

Are there any actual comparisons about different performance between node.js access and native java access ? And is there any argument or experiences not to use node-neo4j-embedded with node.js ? If no, are there limitations to use Cypher this way - and do I assume right it should be fast as native API access ?

Dan
Reply all
Reply to author
Forward
0 new messages