Graph Databases for node?

104 views
Skip to first unread message

John Hamelink

unread,
Sep 12, 2011, 4:23:33 PM9/12/11
to nodejs
Hi there,

I'm looking into which database solution would be best for me in order
to successfully re-build a rather complex financial application into
node.js and to introduce realtime elements into the mix. I have been
looking at ODM solutions, and accidentally uncovered the "graph
database" type.

This youtube video I found looks very impressive: http://www.youtube.com/watch?v=2ElGO1P8v0c

So my question is: are there any preferred solutions under node? If
not, which graph database has the most node-like qualities and would
be the best fit?

I know this seems a little vague - I'm finding it quite hard to
articulate what I want in my mind and in writing!

Thanks,
John

Dean Landolt

unread,
Sep 12, 2011, 6:34:33 PM9/12/11
to nod...@googlegroups.com
No, I think you're question's pretty spot on -- you're looking for a graph db that fits well with node, right? I wish I had an answer to this -- OrientDB has some nice properties (and a much more liberal license than neo4j) but is also java-based and lacks good node drivers. There's a rest interface but it's pretty woeful. I started prototyping a driver against their socket API but it was pretty underdocumented (FWIW it looks like things have improved on that front [1]).

I've been hoping more details would come out about stigdb [2] -- it's supposed to be open sourced Any Day Now. We'll see. But if you read through the overview pdf [3] it's really impressive.

I'm sure there's some other great stuff out there. But I haven't seen much chatter re: graph dbs in the node community. But hopefully this'll change some time soon.


Mikeal Rogers

unread,
Sep 12, 2011, 6:40:30 PM9/12/11
to nod...@googlegroups.com
I'm a database geek. I have yet to understand what thing I would actually build with graph database.

It seems like people tend to use them for object storage that maintains references as indexes. I don't think that's what they were designed for but it seems to be a common use case.

If that is what you want to do you'll probably want to check out the serialization that dnode does in order to store an object and maintain the references.

But you may not want to listen to me because I really can't figure out what you would do with them so I'm unlikely to be a great source of information.

-Mikeal


--
Job Board: http://jobs.nodejs.org/
Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nod...@googlegroups.com
To unsubscribe from this group, send email to
nodejs+un...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Tom Blobaum

unread,
Sep 12, 2011, 6:50:33 PM9/12/11
to nod...@googlegroups.com
I was reading this the other day which seems interesting/relevant but I'll have to admit I have not actually used it yet

Mikeal Rogers

unread,
Sep 12, 2011, 6:54:32 PM9/12/11
to nod...@googlegroups.com
i don't know how good the library is but the docs are beautiful!

-Mikeal

Marco Rogers

unread,
Sep 12, 2011, 7:11:30 PM9/12/11
to nod...@googlegroups.com
Nice slides about graph databases and why you might choose them. The theory makes a lot of sense to me and I would try it out. Never done a project where it seemed to make sense.


:Marco

Dean Landolt

unread,
Sep 12, 2011, 7:16:29 PM9/12/11
to nod...@googlegroups.com
On Mon, Sep 12, 2011 at 6:40 PM, Mikeal Rogers <mikeal...@gmail.com> wrote:
I'm a database geek. I have yet to understand what thing I would actually build with graph database.

It seems like people tend to use them for object storage that maintains references as indexes. I don't think that's what they were designed for but it seems to be a common use case.

If that is what you want to do you'll probably want to check out the serialization that dnode does in order to store an object and maintain the references.
 
There are a number of graph types -- the various types dictate what underlying graph data is persisted and in what way. This structure in turn dictates how traversal algorithms are written. So, given a set of generic algorithms that, say, work against the property graph model [1], you can build up a useful toolkit for interpreting different data sets. 

So yeah, it's about much more than just storing references, but yeah, this is a pretty common use case. What makes a graph database stand out is its ability to walk those references in varying ways without having to roundtrip each step to the client. This alone is a pretty awesome feature for specific use cases, but they have some other interesting properties -- you may be interested in reading about pipes [2], which is chock full of ideas about typed streams and morphisms, if you're into that kind of thing.
 
But you may not want to listen to me because I really can't figure out what you would do with them so I'm unlikely to be a great source of information.


Daniel Gasienica

unread,
Sep 12, 2011, 7:22:19 PM9/12/11
to nod...@googlegroups.com, Aseem Kishore
On my iPhone so I’ll keep it short. We, Aseem Kishore and I, built our entire startup on Node and Neo4j and we couldn’t be happier!

Neo4j is great fit for Node because it has a wonderful REST API (HTTP) and nodes & relationships are stored as JSON.

Let us know if you have more specific questions. We’d be happy to help.

Site: www.thethingdom.com

Neo4j driver for Node:
https://github.com/gasi/node-neo4j

Daniel
> --
> Job Board: http://jobs.nodejs.org/
> Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to nod...@googlegroups.com
> To unsubscribe from this group, send email to
> nodejs+un...@googlegroups.com <nodejs%2Bunsu...@googlegroups.com>

Mikeal Rogers

unread,
Sep 12, 2011, 7:25:16 PM9/12/11
to nod...@googlegroups.com, Aseem Kishore
Are you only storing the flattened objects as JSON or are you also doing some traversal to store the references?

-Mikeal

Thomas Fritz

unread,
Sep 13, 2011, 4:40:15 AM9/13/11
to nod...@googlegroups.com
Hi Daniel

This is what i was searching for. Thanks for making it open-source!

Will your node-neo4j modul be further maintained and updated?
For which version of neo4j is your modul working?
Does it implement 100% of neo4js REST API?


FYI: Neo4J is working on a binary protocol through TCP Sockets for a
future release - this might also be interesting for node in the
future.
If you are interested in RDF Triple Store you could also take a look
at Stardog ( http://stardog.com ) . They already ( i think ) provide
access through AVRO (through a tcp socket) - this might also be an
alternative.


Kind regards

---
Thomas FRITZ
web http://fritzthomas.com
twitter http://twitter.com/thomasf

2011/9/13 Dean Landolt <de...@deanlandolt.com>:

Reply all
Reply to author
Forward
0 new messages