[Neo4j] Performance benchmarks of REST API vs embedded Neo4J

2010-12-04 Thread Rick Bullotta
Has anyone done any rough performance comparisons of the two approaches?  I
have to think we're looking at 1 or 2 orders of magnitude difference, but
would like to know if there is any hard data yet.

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] Performance benchmarks of REST API vs embedded Neo4J

2010-12-04 Thread Alex Averbuch
Hi Rick,
You could get a ballpark comparison by using
Blueprintshttps://github.com/tinkerpop/blueprints,
and comparing the performance of
Neo4jGraphhttps://github.com/tinkerpop/blueprints/tree/master/src/main/java/com/tinkerpop/blueprints/pgm/impls/neo4j/
with
the performance of
RexsterGraphhttps://github.com/tinkerpop/blueprints/blob/master/src/main/java/com/tinkerpop/blueprints/pgm/impls/rexster/RexsterGraph.java
.

Rexster https://github.com/tinkerpop/rexster is a RESTful graph shell
that exposes any Blueprints graph through a standalone HTTP server

Using Neo4jGraph is straight forward.
For a discussion on using RexsterGraph go
herehttp://groups.google.com/group/gremlin-users/browse_thread/thread/aa9ad740c8fed156/9a7510a3e36f1d72?lnk=gstq=rexster#9a7510a3e36f1d72
.

If you know the type of graph operations that you would like to test,
GraphDB-Bench https://github.com/tinkerpop/graphdb-bench can be used to
compare performance of the two Graph implementations (Embedded vs REST).

What type of graph operations would you like to test?
I might be able to help by setting up the specific GraphDB-Bench benchmark
for you.

Cheers,
Alex

On Sat, Dec 4, 2010 at 3:22 PM, Rick Bullotta 
rick.bullo...@burningskysoftware.com wrote:

 Has anyone done any rough performance comparisons of the two approaches?  I
 have to think we're looking at 1 or 2 orders of magnitude difference, but
 would like to know if there is any hard data yet.

 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] [SPAM] Re: Performance benchmarks of RES T API vs embedded Neo4J

2010-12-04 Thread rick.bullo...@burningskysoftware.com
Everything. ;-)

Seriously though, it would good to measure small and large sets of node inserts 
and deletes, with varying numbers and types of properties and relationships, as 
well as a spectrum of queries/traversals, etc.



- Reply message -
From: Alex Averbuch alex.averb...@gmail.com
Date: Sat, Dec 4, 2010 9:50 am
Subject: [SPAM] Re: [Neo4j] Performance benchmarks of REST API vs embedded Neo4J
To: Neo4j user discussions user@lists.neo4j.org

Hi Rick,
You could get a ballpark comparison by using
Blueprintshttps://github.com/tinkerpop/blueprints,
and comparing the performance of
Neo4jGraphhttps://github.com/tinkerpop/blueprints/tree/master/src/main/java/com/tinkerpop/blueprints/pgm/impls/neo4j/
with
the performance of
RexsterGraphhttps://github.com/tinkerpop/blueprints/blob/master/src/main/java/com/tinkerpop/blueprints/pgm/impls/rexster/RexsterGraph.java
..

Rexster https://github.com/tinkerpop/rexster is a RESTful graph shell
that exposes any Blueprints graph through a standalone HTTP server

Using Neo4jGraph is straight forward.
For a discussion on using RexsterGraph go
herehttp://groups.google.com/group/gremlin-users/browse_thread/thread/aa9ad740c8fed156/9a7510a3e36f1d72?lnk=gstq=rexster#9a7510a3e36f1d72
..

If you know the type of graph operations that you would like to test,
GraphDB-Bench https://github.com/tinkerpop/graphdb-bench can be used to
compare performance of the two Graph implementations (Embedded vs REST).

What type of graph operations would you like to test?
I might be able to help by setting up the specific GraphDB-Bench benchmark
for you.

Cheers,
Alex

On Sat, Dec 4, 2010 at 3:22 PM, Rick Bullotta 
rick.bullo...@burningskysoftware.com wrote:

 Has anyone done any rough performance comparisons of the two approaches?  I
 have to think we're looking at 1 or 2 orders of magnitude difference, but
 would like to know if there is any hard data yet.

 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

___
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user


Re: [Neo4j] Performance benchmarks of REST API vs embedded Neo4J

2010-12-04 Thread Peter Neubauer
Rick,
HA is totally transparent to any client of the embedded API after
setup. That means, if you have a number of Neo4j Server (or any other
thing like various bindings etc) the only difference is in the
instantiation of the GraphDatabaseService.

So, from the REST (or your own app) API you are not seeing HA at all.
It just looks like one DB running. To scale, you can set up one
endpoint to every HA slave in your cluster, and build your custom load
balancing (e.g. with AKKA etc) on top of that. See
http://docs.neo4j.org/html/milestone/#_high_availability for more
info.

Will be happy to help you give it a spin!

Where the REST layer might come into play is the upcoming sharding
effort - going to start working on that after 1.2, that is, pretty
soon :)

Cheers,

/peter neubauer

GTalk:      neubauer.peter
Skype       peter.neubauer
Phone       +46 704 106975
LinkedIn   http://www.linkedin.com/in/neubauer
Twitter      http://twitter.com/peterneubauer

http://www.neo4j.org               - Your high performance graph database.
http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party.



On Sat, Dec 4, 2010 at 6:32 PM, Rick Bullotta
rick.bullo...@burningskysoftware.com wrote:
 Hi, Peter.

 That makes sense.  I was anticipating roughly 10X-100X difference.  Good to
 see we're near the lower end of that, though I'm not surprised.  You guys
 make fast stuff! ;-)

 Another question: Is the REST API integral to the HA scenario or do you
 envision that at some point the HA model be implemented with embedded
 instances also?  I'm just a bit unclear on how the HA/REST interaction (or
 more specifically, the HA architecture) works.  Any Wiki page I should look
 at?

 Thanks!

 Rick

 -Original Message-
 From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On
 Behalf Of Peter Neubauer
 Sent: Saturday, December 04, 2010 12:17 PM
 To: Neo4j user discussions
 Subject: Re: [Neo4j] Performance benchmarks of REST API vs embedded Neo4J

 Well,
 we REST having the serialization overhead, plus the crossing of system
 boundaries regarding caching, and the problem with transaction
 handling, it is no doubt much more performant to use the embedded
 Neo4j scenario when you want optimum performance and can control all
 aspects of your system.

 However, REST is great for integration and easy start, and access
 outside Java. The third approach is a native driver protocol, maybe
 built on Protobuffer, Thrift or others, that should in performance be
 somewhere in between.

 The Neo4j REST API is not on par with the native approach especially
 regarding many (small) operations, we first need to enable better
 server side support with either scripts being executed serverside
 (dynamic via sending them or static via server extensions). Rexster is
 simply exposing Jersey and JAXRS for Java classes, taking away some of
 the burden of building your own server. We are right now debating on
 how to best make server extensions both live near the Neo4j instance
 and at the same time be isolated from the server, so the server can
 perform without custom extension destroying things, much like stored
 procedures in RDBMS. It looks like OSGi might perform good services
 here ...

 Anyway, benchmarks are hard to do since the range of functionality is
 very different. In traversal scenarios though I think it is, and the
 difference should not be too big, since most of the job is done on the
 server side, the main overhead is the serialization of the request and
 the results. Again, it depend on how your usage scenarios look like.

 For small transactions, I have been running an insert of 1 nodes
 via addNode() over REST with https://github.com/maxdemarzi/neography
 in about 10sec, while the same takes less than 1sec on my machine in
 embedded mode (IIRC) ... small transactions needing to hit disc.

 Cheers,

 /peter neubauer

 GTalk:      neubauer.peter
 Skype       peter.neubauer
 Phone       +46 704 106975
 LinkedIn   http://www.linkedin.com/in/neubauer
 Twitter      http://twitter.com/peterneubauer

 http://www.neo4j.org               - Your high performance graph database.
 http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party.



 On Sat, Dec 4, 2010 at 3:22 PM, Rick Bullotta
 rick.bullo...@burningskysoftware.com wrote:
 Has anyone done any rough performance comparisons of the two approaches?
  I
 have to think we're looking at 1 or 2 orders of magnitude difference, but
 would like to know if there is any hard data yet.

 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user

 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user

 ___
 Neo4j mailing list
 User@lists.neo4j.org
 https://lists.neo4j.org/mailman/listinfo/user

___
Neo4j