HyperGraphDB

HyperGraphDB is an extensible open-source graph-based data storage engine. It implements the ability to store hypergraph relationships, which make it suitable for complex data and knowledge representation problems. It relies on a tuple as its unit storage, where both n-ary relationships and graph orientated relationships are allowed as relationships between tuples. It uses BerkeleyDB as its key value store, and operates as an object-orientated database for Java.

History

Originated from an AI project (http://www.opencog.org) in 2007. It's inspired by the paper "Directed Recursive Labelnode Hypergraphs: A new Representation-Language", by Harold Boley.

System Architecture

Shared-Everything Embedded

Query Compilation

Code Generation

Query Execution

Tuple-at-a-Time Model

Accumulates the Atoms that satisfy the condition one by one by implementing a next function.

Storage Model

Custom

This DBMS supports both n-ary relationships and higher-order relations.

Data Model

Graph

Each tuple is called an atom, which is a subset of a graph (set of nodes and edges). Each of these atoms are strongly typed, such that there is a specific API that you can call to access that atom's contents. This DBMS uses BerkeleyDB as its key-value storage.

Query Interface

Custom API

HypergraphDB supports a special API specific to its atoms, but doesn't support any particular querying language. Query objects called HGQuery filter all atoms by submitting the condition to a query processor, and it returns a list of atoms. Details on the API can be found in its javadoc.

Parallel Execution

Intra-Operator (Horizontal)

Allows for unions to be parallelized by running the two child nodes in parallel.

Storage Architecture

Disk-oriented

There are two layers of how they store objects: primitive and model layer. The primitive layer stores the raw data in the form of a graph. The model layer associates a type to the raw data, formalizing the layout.