📜 ⬆️ ⬇️

HyperGraphDB - graph-based database



Probably not many are aware of the existence of such a type of database as graph-based database (graph db). Earlier in the NOSQL environment, only one such system was distributed - Neo4j. Today 2 more arrived to us - Infogrid and HyperGraphDB. About the latter and will be discussed.

As the creators themselves describe their system:
')
“HyperGraphDB is an extensible, portable, distributed, embedded general-purpose system with a free (open-source) data storage mechanism. This system is designed specifically for projects using the capabilities of artificial intelligence and semantic web and can be used as an embedded, object-oriented database for projects of any scale. "

Agree, it sounds strong. But, we need details. Let's go after them to the shelter of all NOSQL projects - http://nosql-database.org and the official project website - http://www.kobrix.com . Here is what we learn from there:
In this database, as the name has already become clear, hypergraphs are used. A hypergraph is an extension of the usual concept of a graph, allowing the edge of a graph to have more than 2 vertices. HyperGraphDB extends this concept even more by allowing an edge to point to another edge, and allows any edge or vertex to have an arbitrary value in the form of a payload. The main requirements that were taken into account in the development of the system came from the OpenCog project, which was an attempt to implement the AGI system (an approach based on cognitive psychology and graphs of perceptual-atom concepts, with activation spreading, sometimes multi-level architecture, the active use of heterogeneous mechanisms - GA / evolution. priming, Bayesian networks, statistical mechanisms, all sorts of output — logical, fluffy, probabilistic, etc. ) where there was a need to implement self-modifying probabilistic hypergraphs.

The basic unit of storage in HyperGraphDB is called atom . Each atom has an arbitrary value and can indicate any number of other atoms. Data types are managed by a single extensible system built into the structure of hypergraphs.

The data storage scheme is platform independent and allows working with data using any programming language on any platform. At a low level, data storage is based on BerkeleyDB. Size limitations are practically non-existent. HyperGraphDB does not introduce restrictions on the size of the graph, but the size of each individual entity is limited by the storage system - 2 Gb for BerkeleyDB. However, the architecture allows you to bypass the limitations of BerkeleyDB for some atom, if you need it.

The current implementation is completely Java based. The ability to automatically convert Java data types to HyperGraphDB types allows HyperGraphDB to be used as an object-oriented database for most business applications. With ++ the implementation was repeatedly thought over, but was not started due to the lack of developers.

As we can see, the guys from kobrix.com have made a rather interesting system, which has successfully entered into a number of NOSQL systems. Well, for those who are interested, I will cite a number of links:

Project page - http://www.kobrix.com/hgdb.jsp
Google Code source codes - http://code.google.com/p/hypergraphdb/
Examples of working with HyperGraphDB - http://www.kobrix.com/wikishow?project=hypergraphdb&page=FirstSteps

Source: https://habr.com/ru/post/82171/


All Articles