back

SGDB3 – Simple Graph Database

Intro:
Sgdb3 is an embedded graph database implemented in JAVA. It is an attempt to build a fast, persistent db for graph/network data structure. Sgdb3 implements Blueprins interface v. 1.0. When it come to graph processing, usual approach is to load and process the whole graph in memory, because of performance reasons. Problems arise, when the graph becomes too big and does not fit into the memory any more. This is due to the random access patter characteristic for graph data processing which leads to lots of random reads from disk.

Goal of Sgdb3 is to provide decent performance for graph traversal processing even for larger graphs (not in-memory).

Advantages/disadvantages:
It's quite fast. There are several disadvantages, however. It's a research prototype, not much attention is paid to the code cleanness and documentation. It's a very simple implementation, with only one instance of Sgdb3 per VM allowed. In addition, it does not handle concurrency very well; one have to write the code carefully to avoid concurrency problems.
That being said, we believe it's still a good solution for certain use-cases because of it's speed for traversal operations. (E.g. when only small number of updates is required after initial import, but large number of traversal operations is expected.)

API documentation:
Use Blueprints API documentation:
https://github.com/tinkerpop/blueprints/wiki

Find simple code example here.

Sources:
Sourceforge page
SVN repository:
https://simplegdb.svn.sourceforge.net/svnroot/simplegdb/Sgdb3

Build instructions:
Sgdb3 uses Tokyo cabinet as underlying storage layer.
Get Tokyo cabinet (developed with version 1.4.47) from: http://fallabs.com/tokyocabinet/
Build Tokyo cabinet.
Build Sgdb3 with:
ant
Test the build with:
sh test.sh
(You might need to replace path to Tokyo cabinet libs (-Djava.library.path=))