Hi!

I think the hard part about transactions is recovering after crashes and 
such.

Regarding finding A-->B, have you tried using a relationship index? See:
http://components.neo4j.org/neo4j/1.4/apidocs/org/neo4j/graphdb/index/ReadableRelationshipIndex.html

/anders

On 07/28/2011 01:35 PM, John cyuczieekc wrote:
> I don't know what you mean by this:
> "I don't know how nicely BDB plays with Neo4J transactions."
> I have some small experience with bdb java edition that is, but I'm not sure
> what would their transaction have to do with neo4j transactions... if you
> meant if you could make a wrapper such that you could use the same
> format/interface neo4j uses for their transactions, then you can, I did some
> attempt to that it works for me, also BDB Java Edition doesn't support
> nested transactions either (the C++ version does), but emulating them to use
> the same root/parent transaction is easy, my attempt is here:
> https://github.com/13th-floor/neo4john/blob/6c0371e82b7fc5b5f45d7c0ea9fb03ee4d241df9/src.obsolete/org/bdb/BETransaction.java
> probably not much relevant though. But this file here:
> https://github.com/13th-floor/neo4john/blob/master/src/org/benchtests/neo4j/TestLinkage.java
> I made to use both neo4j and bdb to do the same thing, that is:
> create nodes(uppercase named ones) with these rels:
> ROOT_LIST -->  START
> ROOT_LIST -->  <half a million unique nodes>
> ROOT_LIST -->  MIDDLE
> ROOT_LIST -->  <another half a million unique nodes>
> ROOT_LIST -->  END
>
> then make both bdb and neo4j check if the following rels exist:
> ROOT_LIST -->  START
> ROOT_LIST -->  MIDDLE
> ROOT_LIST -->  END
> (you probably saw this already in another post)
> But both bdb and neo4j now use transactions... that is, in my test file.
>
> About licensing, I'm not much into that but here's the license for Berkeley
> DB Java Edition:
> http://www.oracle.com/technetwork/database/berkeleydb/downloads/jeoslicense-086837.html
> Looks like New(or normal?) BSD license or something ...
> also
> "
> Licensing
>
> Berkeley DB is available under dual license:
>
>     - Public license that requires that software that uses the Berkeley DB
>     code be free/open source software; and
>     - Closed source license for non-open source software.
>
> If your code is not redistributed, no license is required (free for in-house
> use).
>
> "
>
> from http://www.orafaq.com/wiki/Berkeley_DB#Licensing
>
>
> I would totally use neo4j, if it would be as fast at searches :/ ie. BTree
> storage of nodes/rels? (guessing)
>
> But having 10mil rels, and seeing BDB checking if A-->B in 0ms, and neo4j in
> like 0 to 66 to 310 seconds (depending on its position)
>
> is a show stopper for me, especially because I want to base everything on
> just nodes (without properties) and their relationships. ie. make a set or
> list of things, without having A ---[ENTRY]-->  e ---[NEXT] --->  e2  but
> instead A->b->e->c->e2  where b and c are just nodes, and also
> AllEntries->b  and AllNexts->c   (silly example with such less info tho)
>
> Point is, I would do lots of searches a lot (imagine a real time program
> running on top of nodes/rels, that is it's defined in and can access only
> nodes), this would likely cause those ms to add up to seconds...
>
>
> I installed maven (m2e) again, I guess I could use it, but it seems it
> creates .jar , not sure if that's useful to me while I am coding... seems
> better to use project/sources no? and maven only when ready to publish/get
> the jar ; anyway I need to learn how to use it otherwise I'm getting errors
> like this , when trying to build:
>
> [ERROR]   The project org.neo4j:neo4j-graph-collections:1.5-SNAPSHOT
> (E:\wrkspc\graph-collections\pom.xml) has 1 error
> [ERROR]     Non-resolvable parent POM: The repository system is offline but
> the artifact org.neo4j:parent-central:pom:21 is not available in the local
> repositor
> y. and 'parent.relativePath' points at wrong local POM @ line 4, column 11
> ->  [Help 2]
>
>
>
> Anyway, with normal eclipse, I'm still showing 2 different errors:
>
> 1) in org.neo4j.collections.graphdb.ComparablePropertyType<T>
>
> line 29: super(name, graphDb);
>
> The constructor PropertyType<T>(String, GraphDatabaseService) is not visible
>
> 2) org.neo4j.collections.graphdb.impl.NodeLikeImpl.getRelationships()
> The return type is incompatible with
> RelationshipContainer.getRelationships()
>
> 3)
> org.neo4j.collections.graphdb.impl.NodeLikeImpl.getRelationships(RelationshipType...)
> The return type is incompatible with
> RelationshipContainer.getRelationships(RelationshipType[])
>
>
> John.
>
> On Thu, Jul 28, 2011 at 12:52 PM, Niels Hoogeveen<pd_aficion...@hotmail.com
>> wrote:
>
>>
>> Hi John,
>> Thanks for showing an interest.
>> The compile error you got was due to the fact that a removed class was
>> still hanging around in the Git repo. I renamed BinaryRelationshipRoles into
>> BinaryRelationshipRole, but the original file was still active in the Git
>> repo. I fixed that.
>> I have been thinking about BDB too for this situation, because the graph
>> database now stores some information about the associated nodes and their
>> reverse lookup. This of course polutes the name/node space. It would be neat
>> to offload this book keeping information to some persistent hashmap, so the
>> implementation is completely transparent to the user.
>> I don't know how nicely BDB plays with Neo4J transactions. Does anyone have
>> experience with this?
>> Another aspect is licencing. I am no legal buff, so maybe someone else can
>> jump in and answer this.
>> Personally, I don't mind adding BDB as a dependency, but it has to work
>> well at the transaction level and licence wise, otherwise it's a no go for
>> me.
>> I would recommend you to start using maven. There is an Eclipse plugin
>> m2eclipse, which allows you to use/maintain Maven projects from within
>> Eclipse.
>> Niels
>>
>>> Date: Thu, 28 Jul 2011 05:09:54 +0200
>>> From: cyuczie...@gmail.com
>>> To: user@lists.neo4j.org
>>> Subject: Re: [Neo4j] HyperRelationship example
>>>
>>> Hey Niels,
>>>
>>> I like xD
>>> this seems like a lot of work and professionally done; ie. something I
>> could
>>> not have done (I don't have that kind of experience and focus). Gratz on
>>> that, I really appreciate seeing this.
>>>
>>> I cloned the repo from git, manually, with eclipse (not using maven -
>> don't
>>> know how with eclipse)
>>> I am getting only about 3 compile errors, like:
>>> 1) The type BinaryRelationshipRoles<T>  must implement the inherited
>> abstract
>>> method PropertyContainer.getId()
>>> 2) The constructor PropertyType<T>(String, GraphDatabaseService) is not
>>> visible
>>> 3) The return type is incompatible with
>>> RelationshipContainer.getRelationships()
>>> for
>>>
>> org.neo4j.collections.graphdb.impl.RelationshipIterable.RelationshipIterable(Iterable<Relationship>
>>> rels)
>>>
>>>
>>>    Also, I am thinking to try and implement this on top of berkeleydb just
>>> for fun/benchmarking (so to speak) to compare between that and neo4j -
>> since
>>> I am currently unsure which one to use for my hobby project (I like that
>>> berkeleydb's searches are 0-1ms instead of few seconds)
>>>
>>> Btw, would it be any interest to you if I were to fork your repo and add
>> ie.
>>> AllTests.java for junit and the .project and related files for eclipse
>>> project in a pull or two ? as long as it doesn't seem useless or
>>> cluttering... (note however I never actually, yet, used fork&pull but
>> only
>>> read about it on github xD)
>>>
>>> Thanks to all, for wasting some time reading this,
>>> Greeting and salutations,
>>> John
>>>
>>> On Wed, Jul 27, 2011 at 8:48 PM, Niels Hoogeveen
>>> <pd_aficion...@hotmail.com>wrote:
>>>
>>>>
>>>> I just posted an example on how to use HyperRelationships:
>>>>
>>>>
>>>>
>> https://github.com/peterneubauer/graph-collections/wiki/HyperRelationship-example
>>>>
>>>> There is now a proper test for HyperRelationships, so I hereby push the
>>>> software to Beta status.
>>>>
>>>> Please try out the Enhanced API and HyperRelationships and let me know
>> what
>>>> needs improvement.
>>>>
>>>> Niels
>>>> _______________________________________________
>>>> 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 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

Reply via email to