Pull to refresh

HyperGraphDB — база данных на основе графов

Reading time 3 min
Views 8.4K


Наверное, не многие знают о существовании такого типа баз данных, как базы данных на основе графов (graph db). Ранее в NOSQL среде была распространена всего одна система такого плана — Neo4j. Сегодня же к нам прибыло еще 2 — Infogrid и HyperGraphDB. О последнем и пойдет речь.

Как описывают сами создатели свою систему:

«HyperGraphDB — это расширяемая, портативная, распределенная, встраиваемая система общего назначения со свободным (open-source) механизмом хранения данных. Эта система разработана специально для проектов использующих возможности искусственного интеллекта и семантического вэба и может использоваться как встраиваемая, объектно-ориентированная база данных для проектов любого масштаба.»

Согласитесь, звучит сильно. Но, нужны подробности. Отправимся за ними в прибежище всех NOSQL проектов — http://nosql-database.org и официальный сайт проекта — http://www.kobrix.com. Вот, что мы оттуда узнаём:
  • Для работы необходима Java5+
  • Есть реализации и для Windows, *nix и mac платформ
  • API только для Java (и языки на платформе Java)
  • Написан на Java
  • Способ запросов — Java или P2P
  • P2P репликация и P2P фреймворк для распределенных вычислений и данных, а так же репликации данных
  • Согласованность (concurrency) основана на механизме STM — Software Transactional Memory (механизм аналогичный транзакциям в базе данных — подробнее на en:Wikipedia)
  • Лицензия LGPL
В это базе данных как уже стало ясно из названия используются гиперграфы. Гиперграф это расширение обычной концепции графа, позволяющей ребру графа иметь более 2-х вершин. HyperGraphDB расширяет эту концепцию еще больше, позволяя ребру указывать на другое ребро, и позволяет любому ребру или вершине иметь произвольное значение в виде полезной нагрузки. Основные требования которые учитывались в разработке системы пришли из проекта OpenCog, в котором была попытка реализовать систему AGI (подход основанный на когнитивной психологии и графах концепций-перцепций-атомов, с activation spreading, иногда многоуровневой архитектуры, активное использование гетерогенных механизмов — GA/эволюц.приграммирование, байесовы сети, статистические механизмы, все сорта вывода — логического, пушистого, вероятностного и т.п.) где была необходимость в реализации самомодифицирующихся вероятностных гиперграфов.

Основная единица хранения в HyperGraphDB называется atom. Каждый atom имеет произвольное значение и может указывать любое количество других atom. Типы данных управляются единой расширяемой системой встроенной в структуру гиперграфов.

Схема хранения данных платформонезависисмая и позволяет работать с данными с помощью любого языка программирования на любой платформе. На низком уровне данные хранение данных базируется на BerkeleyDB. Ограничения размеров, практически не существует. HyperGraphDB не вносит ограничений на размер графа, но размер каждой отдельной сущности ограничен системой хранения — 2 Gb для BerkeleyDB. Однако архитектура позволяет обойти ограничения BerkeleyDB для некоторых atom, если вам это понадобится.

Текущая реализация полностью построена на основе Java. Возможность автоматического преобразования типов данных Java в типы HyperGraphDB позволяют использовать HyperGraphDB как объектно-ориентированную базу данных для большинства бизнес приложений. С++ реализация неоднократно обдумывалась, но не была начата из-за нехватки разработчиков.

Как мы видим, ребята из kobrix.com сделали достаточно интересную систему, которая успешно вошла в ряд NOSQL систем. Ну а для тех кто заинтересовался, приведу ряд ссылок:

Страница проектаhttp://www.kobrix.com/hgdb.jsp
Исходные коды на Google Codehttp://code.google.com/p/hypergraphdb/
Примеры работы с HyperGraphDB http://www.kobrix.com/wikishow?project=hypergraphdb&page=FirstSteps

Tags:
Hubs:
+34
Comments 43
Comments Comments 43

Articles