Какие шаги / запросы gremlin из Tinkerpop 3 не поддерживаются в графике БД Cosmos - PullRequest
0 голосов
/ 24 сентября 2018

Я сейчас оцениваю Neo4j по сравнению с графиком Cosmos db.Поскольку существующая система лежит в космосе, мы начали строить граф в космосе.Но в последнее время стало известно о некоторых запросах tinkerpop3, которые не поддерживаются в графе cosmos db, таких как regex, filter и другие лямбда-операции.

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

1 Ответ

0 голосов
/ 24 сентября 2018

Полный список шагов Gremlin, поддерживаемых CosmosDB, можно найти здесь .Стоит уточнить, что TinkerPop изначально не поддерживает регулярные выражения.Вы можете сделать это только через лямбда-выражение с шагом filter():

gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> p = Pattern.compile("(marko|j.*h)")
==>(marko|j.*h)
gremlin> g.V().values('name').filter{p.matcher(it.get()).matches()}
==>marko
==>josh

Хотя это работает, я не знаю ни одного графика, который бы оптимизировал этот конкретный обход (т.е. он не будет индексным)основан).Фактически, ни один граф не оптимизирует лямбду - это произвольный код, который граф просто выполнитВам нужно будет найти графики, которые изначально поддерживают регулярные выражения или какую-либо форму полнотекстового поиска.Единственные, кого я знаю, которые имеют такую ​​поддержку в самой Gremlin, это JanusGraph и DSE Graph .Другие графики изначально имеют такую ​​поддержку, но она не обязательно представлена ​​таким образом, чтобы ее можно было использовать непосредственно в Gremlin.

TinkerPop - это добавление встроенной поддержки текстовых предикатов теперь, когда больше графиков, кажется, поддерживают эту функцию, и шаблон для этого является относительно непротиворечивым.Мы должны увидеть это в TinkerPop 3.4.0, когда она выйдет.

...