能否从字节码生成gremlin脚本?
我正在进行一个POC,需要通过Gremlin API查询图形Azure CosmosDB数据库。
目前,Azure CosmosDB不支持字节码。Azure开发团队已经开始研究此问题,但尚未发布发布时间表。
我想准备工作代码,以便在将来字节码支持普遍可用时需要最少的重构。
根据Apache TinkerPop文档,有两种提交Gremlin查询的方法:字节码和脚本。
# script
client = Client('ws://localhost:8182/gremlin', 'g')
list = client.submit("g.V().has('person','name',name).out('knows')",{'name': 'marko'}).all()
# bytecode
g = traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','g'))
list = g.V().has("person","name","marko").out("knows").toList()
“字节码方式”对我来说更有效率(语法检查、IDE智能提示等),此外我对创建DSL(特定领域语言)很感兴趣。
是否可能使用流畅的API并将其序列化为字符串,类似于这样的方式:
client = Client('ws://localhost:8182/gremlin', 'g')
g = traversal()
q = g.V().has("person","name","marko").out("knows").toString()
list = client.submit(q).all()
我正在使用Python 3.5和GremlinPython 3.4.0