[Neo4j] IndexedRelationship some observations and questions
Peter Neubauer
peter.neubauer at neotechnology.com
Fri Sep 2 08:55:58 CEST 2011
Bryce,
On Fri, Sep 2, 2011 at 1:44 AM, Bryce <brycenz at gmail.com> wrote:
> Hi,
>
> I have been looking at performance options for Neo4j as presently I have
> been observing a number of performance issues. I am still investigating
> the
> way to get the best performance out of what I am doing, and one thing it
> might be are longer running transactions stopping other work going on (but
> thats an aside to what this message is about).
>
> One of the things that I investigated using was the IndexedRelationship
> work
> by Niels. Thought I would give a bit of feedback, although I haven't quite
> got this implemented at present.
>
> 1) I had to change the IndexedRelationshipExpander to be a public class in
> order to use it outside the package its in.
>
> Maybe you can fork the project and add your fix there?
> 2) IndexedRelationship assumes only one tree root per node, whereas the
> expander allows for multiple (IndexedRelationship uses
> getSingleRelationship
> vs expander using getRelationships then matching on tree name). Having
> multiple would obviously be good as it means you could have two types of
> relationships covered by IndexedRelationship's.
>
> 3) Might pay to make it clear in the Javadocs for IndexedRelationship that
> the comparator can't be an anonymous inner class.
>
> See above, sounds like a good contribution!
> Then I have some questions about usage of this. First a little background
> of the model I have, from reading a few things it seems quite standard.
> There are a lot of "document" nodes each of which have a relationship with
> multiple "tag" nodes. Documents generally have in the order of 10-20 tags,
> and tags can have as few as 1 document and sometimes tens of thousands.
> When tags are viewed through the UI they are almost always displayed with
> a
> descending date ordered list of documents. Seemed to be to fit quite well
> with IndexedRelationship.
>
> 1) I was thinking of having a switch over point at say around 500 documents
> for a given node where I will switch from using normal relationships to an
> IndexedRelationship as I was thinking at small numbers of relationships
> normal relationships would be quicker. Would that be correct, or not worth
> it?
>
> 2) On the tag end (which is the incoming end of the document-tag
> relationship) I was going to use a IndexedRelationshipExpander which would
> cover the case of whether the relationship was done through normal
> relationships, or through an IndexedRelationship. I also need to get a set
> of tags from the document end where their may be both normal relationships,
> and relationships coming from multiple IndexedRelationship's. From looking
> at it IndexedRelationshipExpander doesn't cover the reverse direction, but
> I
> would imagine using a relationship expander here would be correct. What
> would the best way of doing this be?
>
> As an aside it may be a good idea to note in the configuration settings
> page:
>
> http://wiki.neo4j.org/content/Configuration_Settings#Optimizing_for_traversals_example
> that -XX:+UseNUMA
> only works when using the Parallel Scavenger garbage collector (default
> or -XX:+UseParallelGC) not the concurrent mark and sweep one. Based on
>
Changed in the Wiki, see
http://wiki.neo4j.org/content/Configuration_Settings#Configuring_the_memory_for_the_JVM.
Thanks for the hint! We should get this page into the manual.
/peter
>
> Cheers
> Bryce
> _______________________________________________
> Neo4j mailing list
> User at lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
>
More information about the User
mailing list