Какие шаги/запросы гремлина из Tinkerpop 3 не поддерживаются в графике Cosmos db

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

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


person Varun Tahin    schedule 24.09.2018    source источник


Ответы (1)


Полный список шагов 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 . Другие графы имеют такую ​​поддержку изначально, но она не обязательно представлена ​​таким образом, чтобы ее можно было использовать непосредственно в Gremlin.

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

person stephen mallette    schedule 24.09.2018
comment
Благодарю за разъяснение . Но все же Cosmos db не поддерживает лямбда-выражения. Можем ли мы сделать это, запуская SQL-подобные запросы и получая ответы в Cosmos, а затем начинать обход с извлеченными вершинами? - person Varun Tahin; 27.09.2018
comment
Я не знаю ответа на этот вопрос, но это звучит разумно, если вы попытаетесь. - person stephen mallette; 27.09.2018