Nosql DB для неориентированных графов? - PullRequest
4 голосов
/ 01 октября 2010

Я хочу сохранить график миллионов узлов, где каждый узел связывается с другим ненаправленным образом (от точки A до B, автоматически B указывает на A). Я рассмотрел Neo4j, OrientDB в качестве возможных решений, но они, кажется, ориентированы в ориентированных графах, и Neo4j не является бесплатным для> 1 миллиона узлов, для меня это не решение.

Можете ли вы помочь мне, какая из других NoSQL DB (Redis, CouchDB, MongoDB, ...) лучше всего подойдет для чего-то подобного и как это может быть реализовано? Я хочу сделать не-свойство (просто дайте мне связанные элементы) запросов в ширину с 2 уровнями глубины (с A <-> B, B <-> C, C <-> D, запрос A должен дать мне B и С, но не D).

Ответы [ 2 ]

5 голосов
/ 01 октября 2010

OrientDB не имеет ограничений по количеству узлов.Кроме того, модель по умолчанию является двунаправленной.Вы можете использовать его БЕСПЛАТНО, а также в коммерческих целях, поскольку применяемая лицензия - Apache 2.

Здесь описана GraphDB: http://code.google.com/p/orient/wiki/GraphDatabase. Базилика, вы можете использовать собственный API или реализацию Blueprints.Нативные API имеют эволюцию языка SQL со специальными операторами для графов.Пример:

ВЫБРАТЬ ИЗ УЧЕТНОЙ ЗАПИСИ, ГДЕ друзья ТРЕВЕРС (1,7) (address.city.country.name = 'New Zealand')

Это значит, что вы можете дать мне все счета с таким другомживет в Новой Зеландии.Друзья поднимаются до 7 уровня.

Второй позволяет использовать полный стек Blueprint, такой как язык Gremlin, для создания ваших сверхсложных запросов.

4 голосов
/ 01 октября 2010

Neo4j всегда сохраняет отношения / ребра в соответствии с указаниями, но при обходе / запросе вы можете легко обработать график как ненаправленный, используя Direction.BOTH или в некоторых случаях, не определяя Направление вообще. (Таким образом, нет необходимости в «двойных» ребрах для покрытия обоих направлений, вы просто игнорируете направление - и нет потери производительности при прохождении ребер «назад».)

Лимит в 1 миллион "примитивов" был снят довольно давно. Если ваш код с открытым исходным кодом, вы можете использовать версию сообщества для любого размера БД. Для других случаев есть коммерческие версии , которые включают одну бесплатную альтернативу .

...