我目前正在针对Cosmos db graph评估Neo4j。 由于当前系统位于宇宙中,因此我们开始在宇宙中建立图形。 但是近来才知道某些tinkerpop3查询,例如regex,filter和其他lambda操作,这些数据在cosmos db图中不受支持。
我们在任何地方都有这样的受支持/不受支持的操作的列表,以便我们可以更好地在两个数据库之间进行选择,而不会影响我们希望构建的功能。
答案 0 :(得分:1)
CosmosDB支持的Gremlin步骤的完整列表可以在here中找到。值得说明的是,TinkerPop不本地支持正则表达式。您只能通过带有filter()
步骤的lambda表达式来做到这一点:
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
尽管这可行,但我知道没有任何图形可以优化特定的遍历(即,它不会基于索引)。实际上,没有任何图形可以优化任何lambda-图形可以简单地执行它是任意代码。您将需要查找本机支持正则表达式或某种形式的全文本搜索的图。据我所知,在Gremlin本身中唯一有这种支持的是JanusGraph和DSE Graph。其他图形本身也具有这种支持,但不一定以可以直接在Gremlin中使用的方式公开。
TinkerPop现在为adding native support for text predicates,因为似乎有更多的图形支持此功能,并且这样做的模式相对一致。我们应该在TinkerPop 3.4.0中看到该版本。