Идентификатор Gremlin Vertex против лейбла: преимущества? - PullRequest
0 голосов
/ 09 декабря 2018

Я проектирую график и вижу примеры, где несколько вершин будут иметь похожую метку, например, «пользователь» и т. Д. Зная его уникальное значение, можно назначить его идентификатору вершины и посмотреть как:

g.V('person').has('id','unique-value'). ...

Или присвойте это уникальное значение в качестве метки и ссылайтесь на него таким образом.

g.V('unique-value'). ...

Есть ли особая причина, по которой уникальные значения (по сути, id) не используются в качествеярлык, такой как производительность?Какова лучшая стратегия для этого?

1 Ответ

0 голосов
/ 09 декабря 2018

Ваш вопрос и ваши примеры Gremlin не совсем совпадают.Я думаю, что вы хотите сравнить:

g.V().hasLabel('person').has(T.id,'unique-value')

и

g.V('unique-value')

Обратите внимание на мои исправления в этом первом утверждении Gremlin.V() не принимает метку вершины в качестве аргумента - он может принимать только объект вершины id или Vertex.Кроме того, на действительный идентификатор вершины должна ссылаться T.id, а не 'id', причем последняя является ссылкой на пользовательское свойство с именем "id".T.id - это то, что вы получите от g.V().id().Мы часто называем T.id просто id, и я сделаю это в дальнейшем.

После того, как это будет исправлено, нет необходимости делать hasLabel('person'), если у вас есть под рукой id,поэтому два приведенных выше примера возвращают одно и то же значение, и я думаю, что большинство графических баз данных, скорее всего, оптимизируют фильтр меток и просто используют id для их поиска, поэтому я не представляю, что вы увидите разницу в производительности,но для удобства чтения я бы остановился на использовании V('unique-value').

Ваш вопрос специально задавался об использовании уникальной метки в качестве способа идентификации вершины, поэтому я также рассмотрю этот вопрос.Метка не предназначена для уникальной идентификации элемента графа.Он предназначен для классификации групп элементов.Помимо этого соглашения, я думаю, что есть ряд технических причин, чтобы этого не делать.Некоторые графики имеют ограничения на количество меток, которые вы можете иметь, поэтому это может быть проблемой в зависимости от вашего поставщика графиков.По крайней мере, вы уменьшаете переносимость вашего кода, делая это.Я думаю, что это повлияет на производительность, так как поиск label не будет таким же быстрым, как поиск id (особенно если вы увеличите размер графика).

...