
List of graph databases - helwr
http://www.graph-database.org/overview.html
======
r00fus
Had to go look this one up just to find out the pros/cons of graph databases
vs. SQL and other NoSQL databases.

<http://en.wikipedia.org/wiki/Graph_database>

It'd be nice if the information presented here would eventually merge with the
wikipedia entry.

~~~
espeed
Graphs are a much more elegant way of storing relational data. With graph
databases you don't have to mess with tables or joins -- everything is
implicitly joined.

And Neo4j rocks -- store 32 billion nodes
([http://blog.neo4j.org/2011/03/neo4j-13-abisko-
lampa-m04-size...](http://blog.neo4j.org/2011/03/neo4j-13-abisko-
lampa-m04-size-really.html)) with 2 million traversals per second
(<http://www.infoq.com/news/2010/02/neo4j-10>), and you can use Gremlin with
it (the graph traversal language), which let's you calculate PageRank in 2
lines.

Neo4j is open source, and the Community Edition is now free
(<https://github.com/neo4j/community>). I recommend pairing it with the
TinkerPop stack (<http://www.tinkerpop.com/>).

For tabular data, relational databases rock. But the relational model doesn't
align well with object-orientated programming so you have an ORM layer that
adds complexity to your code. And with relational databases, the complexity of
your schema grows with the complexity of the data.

The graph-database model simplifies much of this and makes working with the
modern-day social graph so much cleaner. Graphs allow you to do powerful
things like find inferences inside the data in ways that would be hard to do
with relational databases.

Check out Peter Neubauer's introduction to graph databases and how they
compare to RDBMS' and where they stand in the NOSQL-movement
(<http://www.infoq.com/articles/graph-nosql-neo4j>).

Marko's website is a great resource too (<http://markorodriguez.com/>) -- he
created Gremlin, the graph query language.

~~~
rb2k_
What I always find hard to understand is that when you "query" a graph
database, you have to start at a certain node.

User:

    
    
      Name: John  
    
      Age: 43
    
      Country: Sweden
    
      Job: SoftwareEngineer
    
    

What if I wanted to get the names of all software engineers in sweden? Do I
have to create a type of "job" node and start traversing from the one that is
for software engineer's?

Also: Is sorting possible at all with graph databases? What if I only want
people called John that are older than 20?

Is this too far out of scope for Graph Databases?

~~~
david927
KayaDB is a graph database that can do that: It's a label directed graph that
mimics the relational model, so you can do the things you mentioned but much
more. For example, you can query just for John and it returns exact matches in
any table/column in O(1).

~~~
rb2k_
Thanks for the information, but I'd rather not store my data somewhere that I
can't get to or do local testing and development.

------
derefr
A question I haven't been able to answer from all this: is there, as of yet, a
_portable_ graph database library, ala SQLite, that can be used as a file
format for graph-based data?

~~~
elviejo
You aré looping for neo4j. It is beautiful.

~~~
derefr
I'm not quite sure; I was imagining something with a small C API like SQLite's
(which can usually be incorporated into anything), whereas Neo4j requires the
JVM. This means, for example, that if I want to write a Ruby app that
interacts with the graph database, it has to become a JRuby app. I suppose a
service-based architecture could avoid this (where only the process
interacting with the graph has to be run on the JVM), but that defeats the
whole purpose of using a database library rather than a client-server
database. I suppose it works well enough for languages that are already
founded on the JVM, such as Clojure—but that doesn't make it universally
portable to systems that don't even have a JVM implementation (such as iOS),
in the way that SQLite is.

~~~
elviejo
If you want to write a Ruby App you just use Neo4j with their Rest API.

You are right in all the other points though.

------
michael_dorfman
Actually, this is a list of graph database management systems.

I was hoping for a list of graph databases, like Knuth's _The Stanford
Graphbase_ , which is something completely different.

------
amurmann
I am surprised by the large number of databases in the list that's written in
Java. I would have expected that something performance critical, like a DB
would be written in C. Is it typical these days to a database in Java? Are
there any well known DBs written in Java?

------
jot
Surprised Dydra isn't mentioned: <http://dydra.com>

~~~
mark_l_watson
I am not sure how active they are. I asked for a beta invitation a long time
ago, no response.

------
lucian1900
A bit odd that it doesn't mention ZODB. It's a pretty popular/successful
graph/object database.

------
helwr
also <http://nosql-database.org/>

------
SigmundA
They forgot to list CODASYL.

