Наверное, не многие знают о существовании такого типа баз данных, как базы данных на основе графов (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
Основная единица хранения в 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 Code — http://code.google.com/p/hypergraphdb/
Примеры работы с HyperGraphDB — http://www.kobrix.com/wikishow?project=hypergraphdb&page=FirstSteps