views:

1824

answers:

7

I've been designing an application, based on .NET/Mono framework, which should make an heavy use of the shortest-path in a graph theories and I would like to use a native solution to traverse the nodes of the graph, instead of implementing surrogate solutions which would be hardly maintainable and would massively affect performances.

I've found an application which would be perfect for my scope: neo4j.

Unfortunately, this application is purely written in Java code and it's not portable to .NET, because of the massive differences between the two architectures.

Is anyone out there knows if is it there any port of neo4j or a similar solution for .NET?

+4  A: 

There is db4o database engine.

lubos hasko
unfortunately the size is unknown, since it's not a finite group, but it should be increased constantly: possibly the number of nodes could float to some millions and having such structure in memory would be having TB of RAM available, which we don't.
Antonello
what about db4o? it has also all properties of graph database.
lubos hasko
I'd be interested in the solution, but I haven't found any reference to the this functionality of db4o: can you point me out?
Antonello
Well, db4o is object-oriented database so you can traverse the nodes (objects) by following references. It would work but it might not be very fast for huge amount of traversing as every node (object) has to be deserialized into memory before you can access it. I think neo4j is more scalable as it allows to spread workload on more machines. db4o doesn't.
lubos hasko
+2  A: 

The only thing available right now are bindings for Clojure, JRuby, Jython and Python. However, probably the JRuby REST API to Neo4j, http://github.com/andreasronge/neo4j/tree/2840b4c3d58e0250fdc31b63b11ac941ea944ba6/test/rest, would be the best bet for now.

There's now two different .Net REST clients [being developed](http://wiki.neo4j.org/content/Main_Page#Language_and_framework_bindings) for the [Neo4j REST server](http://wiki.neo4j.org/content/Getting_Started_REST).
nawroth
+1  A: 

Maybe this one: http://www.sones.com/home ? Haven't tried it myself.

tuinstoel
+1  A: 

Found this link on the Neo4j mailing list this morning (I think, I can't seem to find it again):

http://www.thewebsemantic.com/2010/06/03/neo4j-on-net-3-5/

It essentially let's you compile java to .net and then you can just reference the newly created assembly.

Haven't tried it yet but I am planning on it soon.

Patrick Scott
As alternative you could use IKVM.NET to translate the Java-Bytecode to .NET
Gamlor
A: 

Since Neo4j started to get REST support things have evolved a bit, there's now two different .Net REST clients in the works:

nawroth
A: 

Neo4Net is also under development: http://neo4net.codeplex.com/

tester
A: 

The guys at http://www.webling.com are also working on a native .NET graph database to power their Web Apps. I don't think it's released publicly yet, but it looks like it's got momentum.

dbadmin