Saturday, May 05, 2007

Interesting technology: AllegroGraph

I am using Franz's AllegroGraph for two proof of concept projects for a customer: one using the Java APIs (free version) and one using the Lisp version that is unlimited in the size of stored data. RDF storage and querying is not easy technology to use (at least for me) but looks very promising.

The thing that I find interesting about using AllegroGraph is that you are dealing with disk-based persistent data, but not dealing with objects - not dealing with object relational mapping, etc. Instead, you work with graph data structures that are stored on disk, with parts cached in memory. Interesting stuff.

Still, dealing with RDF is not optimal, compared to dealing with graphs in memory. As an example: I used to work a lot with Rete networks using Lisp (hacking Charles Forgy's Lisp code) and dealing with graph data structures built up with Lisp lists, cons, etc. is just easier to do. In memory graphs, semantic networks, etc. are just easier for me to wrap my thoughts around. However, approaches like AllegroGraph have the advantage of scalability.

6 comments:

Jim said...

Would Terracotta be a good option for this type of work? It's object-based, scalable, and can persist to disk. I've just played with it a little, but it seems pretty cool.

Mark Watson, author and consultant said...

Hello Jim,

A coincidence: I downloaded Terracotta a few hours ago, but it might be a long while before I get a chance to try it out.

J.P. Larocque said...

Using AllegroGraph, you're no doubt familiar with AllegroCache, Franz' much-touted object database.

The problem I have with ODBs is that for each implementation I've looked at (AllegroCache, Elephant, and some Python stuff), it required the user to do something special to make their objects persist. In my idealized universe, cons cells like any other object would be automatically persistent, but I believe this goes beyond what can be expressed with the Meta-Object Protocol and would require a special CL implementation.

You may find the idea of orthogonal persistence interesting.

Mark Watson, author and consultant said...

Hello J.P.,

Yes, I have used AllegroCache a lot in the last 9 months. For developing in CLOS, it stays out of my way, and I find it easy to use. I think that Elephant shows promise but I have not looked at it in a while. I have also had good experiences using prevalence (Prevaler).

For Lisp and Smalltalk development, you can always just save your heap image - works if everything fits in memory.

jherber said...

mark, have you ever used sesame (openrdf)? great tool. very flexible storage options - in memory, flat file, rdbms store. the best part is the query language:

http://www.openrdf.org/doc/sesame/users/ch06.html

btw, i was in your neck of the woods 5 weeks ago. did the jack's canyon trial hike up to munds mountain. wow - what a view!

Mark Watson, author and consultant said...

Hello JHerber,

Yes, I have used Sesame off and on for a few years - very good work.

BTW, AllegroGraph also implement's a Sesame compatible HTML web services interface.

I am glad you enjoyed Sedona - lots of great hikes. I am heading out in 1 hour with 3 friends to explore a new area we have not been to yet.