I'm somewhat skeptical of the practicality of a graph database backed by a network-connected datastore (as distinct from a graph database exposed over a network interface, ie: neo4j) due to the inevitable latency when traversing the graph.
Also the practicality of scale-out using an ostensibly sharded datastore (cassandra) for a structure that's notoriously difficult to shard meaningfully (graph).
It's going to be slow for global algorithms in large graphs, and fast for local traversals in any graph. Which is the best you can hope for, and they're probably close to the state of the art at doing both in one DB.
Neo4j is limited to the ram available on a single machine. Cassandra can scale across many machines. You won't get nearly the same performance though as you would with neo4j.
Small correction: neo4j is limited to the resources of a single machine, but the database doesn't need to fit in RAM. You will see a significant slowdown once your data gets too big for RAM, but neo4j has put a fair amount of effort into efficient caching.
I've done something similar over Voldemort. Local traversals are probably comparable, depending on how they partition and how much duplication there is. And then, you get to do large traversals, which is nice.
I don't know how good Agamemnon is, but I like the approach.
13 comments
[ 433 ms ] story [ 267 ms ] threadI'm with you though. As much as I love projects with Classical History names this title makes it just a little creepy.
I'm somewhat skeptical of the practicality of a graph database backed by a network-connected datastore (as distinct from a graph database exposed over a network interface, ie: neo4j) due to the inevitable latency when traversing the graph.
Also the practicality of scale-out using an ostensibly sharded datastore (cassandra) for a structure that's notoriously difficult to shard meaningfully (graph).
I don't know how good Agamemnon is, but I like the approach.