Как хранить и получать разные типы вершин с помощью API графа Tinkerpop / Blueprints? - PullRequest
1 голос
/ 16 ноября 2011

При взгляде на Tinkerpop-Blueprints API довольно просто использовать один тип вершин, но как мне сохранить два?Например, пользователи и их интересы?

А как я могу получить Vertex по идентификатору?Я имею в виду, что может существовать пользователь с именем timetabling, а также с интересами timetabling - как справиться с этим конфликтом id?

-

Я знаю, что первая проблема может быть решена путем введения индекса для свойства типа, а для второй проблемы я могу автоматически сгенерировать идентификатор и создать другой индекс для имени-имущество. НО зачем мне тогда вообще нужен идентификатор вершины?Например, для оперативной памяти существует HashMap для всех вершин, которые бесполезны и бесполезны!(Я мог бы решить проблему по-другому, комбинируя тип и имя в качестве идентификатора, но тогда было бы неэффективно, если бы я, например, перечислил всех пользователей.)


Хмм, ок.Я просто использую вершины для комбинированного идентификатора (имя + тип) и отдельный индекс для типа.Лучшие решения?

1 Ответ

3 голосов
/ 12 декабря 2011

Как правило, лучше всего полагаться на автоматическую систему идентификации базовой базы графов (например, Neo4j, InfiniteGraph, OrientDB и т. Д.).Способ добавления требуемой информации заключается в следующем:

Vertex v = graph.addVertex(null)
v.setProperty("name","timetabling")

Vertex marko = graph.addVertex(null)
graph.addEdge(null, marko, v, "hasInterest")
Verte aType = graph.addVertex(null)
graph.addEdge(null, aType, v, "hasType")

Короче говоря, идентификатор вершины / ребра - это не зависящий от домена способ получения вершин / ребер.Как правило, лучше всего использовать свойства в вашей доменной модели для индексации.

Надеюсь, что ответит на ваш вопрос, Марко.

http://markorodriguez.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...