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