Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What .NET-compatible graph database solution(s) have a proven track record?

I am looking for a generic graph database solution that has existing .NET-compatible infrastructure and a proven track record.

I've found links to several options on Google and SO, but not a lot of information on existing implementations and usages in real-world applications.

I've also considered using a hybrid between a document DB (like RavenDB or MongoDB) and a dedicated Triple Store or RDBMS (like SQL), and augmenting the data store in order to support the functionality I want. However, this is probably quite a bit of work, and my hope is that someone else has done it already.

What I've looked at:

  • Trinity - This one is made by Microsoft and the literature makes it sound great, but I couldn't find a download link, and the Release page says "The Trinity package is currently for intranet access only.".

  • db4o - This one is an Object-Oriented DB with native support for both .NET and Java. It seems to be marketed as a graph DB but I'm not sure if the 'graph' structure/operations are implicit or explicit (or if it offers more than any other document db).

  • TinkerPop - This project looks like exactly what I'm looking for, but the github sources seem to be only in Java. This slideshare from graph-database.org discusses .NET versions, but I haven't been able to find them.

  • CloudGraph - This sounds great, but appears to not exist.

  • GiraffeDB - "GiraffeDB is a powerful graph database system for the .NET framework 4.0, capable of representing complex semantics in an efficient and accessible way" is "currently undergoing planning".

  • AllegroGraph 4.7 - This appears to be pretty mature (supporting SPARQL and Prolog with a number of Client Interfaces), but is closed source. I'm obviously going to be skeptical of a closed-source project that I haven't heard anything about.

There are also a few Java projects that look pretty promising (HyperGraphDB and Neo4j, but I haven't seen any existing .NET integration of either. I'm not completely opposed to using a Java solution and doing that legwork myself, but once again, I'd prefer a proven solution that saves me the most time.

like image 708
smartcaveman Avatar asked Jul 02 '12 18:07

smartcaveman


People also ask

What are the types of graph databases?

There are three types of graph database: true graph databases, triple stores and conventional databases that provide some graphical capabilities. Triple stores are often referred to as RDF databases.

What is the best use of graph database?

Graphs and graph databases provide graph models to represent relationships. They allow users to apply pattern recognition, classification, statistical analysis, and machine learning to these models, which enables more efficient analysis at scale against massive amounts of data.

Is MongoDB good for graph database?

This makes graph databases incredibly efficient for looking for patterns, making predictions, and finding solutions. While it's a general purpose document database, MongoDB provides graph and tree traversal capabilities with its $graphLookup stage in the aggregation pipeline.


1 Answers

Trying to implement a graph database in Mongo is a rabbit hole that's been tried before.

See this message from the TinkerPop user group:

  • https://groups.google.com/d/msg/gremlin-users/_zweYGxR8wM/0AUu-UoqTRIJ

Microsoft's Trinity graph is an internal project not available for download:

  • http://research.microsoft.com/en-us/projects/trinity/

Neo4j Server (http://neo4j.org) paired with Romiko and Tatham's .NET client (http://hg.readify.net/neo4jclient/wiki/Home) is a popular combination.

Neo4j scales to more than 32 billion nodes (http://blog.neo4j.org/2011/03/neo4j-13-abisko-lampa-m04-size-really.html), and it has an active user group (https://groups.google.com/forum/?fromgroups#!forum/neo4j).

And Neo4j Server is very similar to TinkerPop's Rexster.

In fact Peter Neubauer is one of the co-founders of both Neo4j and TinkerPop, and both projects have very similar APIs. So if TinkerPop is exactly what you want, except for the Java, then go with Neo4j Server and one of its .NET clients:

  • http://docs.neo4j.org/chunked/snapshot/tutorials-rest.html

You can even run TinkerPop's Gremlin on Neo4j Server via its built-in Gremlin Plugin:

  • http://docs.neo4j.org/chunked/stable/gremlin-plugin.html

UPDATE: There is also Blueprints.NET - https://github.com/Vanaheimr/Blueprints.NET

like image 190
espeed Avatar answered Sep 28 '22 11:09

espeed